This commit is contained in:
ge 2023-03-22 03:12:50 +03:00
parent 4ea4d0b8fa
commit 07b0c1f4ef
1 changed files with 118 additions and 0 deletions

118
pmgr Executable file
View File

@ -0,0 +1,118 @@
#!/bin/sh
# pmgr -- proxy manager
PMGR_VERSION=0.0.1
PMGR_WORKDIR="${PMGR_WORKDIR:-"$HOME"/.config/pmgr}"
PMGR_ENV_DIR="${PMGR_ENV_DIR:-"$PMGR_WORKDIR"/environment}"
SYSTEMD_USER_UNITS="${SYSTEMD_USER_UNITS:-"$HOME"/.config/systemd/user}"
mkdir -p "$PMGR_WORKDIR"
mkdir -p "$PMGR_ENV_DIR"
usage()
{
printf \
'pmgr -- proxy manager
Usage: pmgr [options] [<arguments>]
Options:
-l list proxies
-e enable (start) proxy
-d disable (stop) proxy
-r restart proxy
-s show proxy status
-j view proxy logs
-o print $PMGR_ENV_DIR
-R run systemctl --user daemon-reload
-a add to autostart
-A remove from autostart
-h print this help message and exit
-v print version and exit
' | sed 's/^ //g'
}
list_proxies()
{
{
printf '\e[1mHOST PROTO FILE STATUS AUTOSTART\033[0m\n'
for file in $(find "$PMGR_ENV_DIR" -type f); do
unit="${file##*/}"
if systemctl --user is-active "$unit" >/dev/null 2>&1; then
active='\033[32mactive\033[0m'
else
active=inactive
fi
printf '%s %s %s %b %s\n' \
"${unit#*@}" \
"${unit%@*}" \
"$(echo "$file" | sed "s%$HOME%~%")" \
"$active" \
"$(systemctl --user is-enabled "$unit")"
done
} | column -t
}
[ $# -eq 0 ] && { usage; exit 0; }
while getopts le:d:r:s:j:oRa:A:hv opt; do
case "$opt" in
l)
list_proxies
exit "$?"
;;
e)
for unit in $(find "$PMGR_ENV_DIR" -type f -printf '%f\n'); do
if systemctl --user is-active "$unit" >/dev/null 2>&1; then
systemctl --user stop "$unit"
fi
done
systemctl --user start "$OPTARG"
exit "$?"
;;
d)
systemctl --user stop "$OPTARG"
exit "$?"
;;
r)
systemctl --user restart "$OPTARG"
exit "$?"
;;
s)
systemctl --user status "$OPTARG"
exit "$?"
;;
j)
journalctl --user --unit "$OPTARG"
exit "$?"
;;
o)
echo "$PMGR_ENV_DIR"
exit 0
;;
R)
systemctl --user daemon-reload
exit "$?"
;;
a)
systemctl --user enable "$OPTARG"
exit "$?"
;;
A)
systemctl --user disable "$OPTARG"
exit "$?"
;;
h)
usage
exit 0
;;
v)
printf 'v%s\n' "$PMGR_VERSION"
exit 0
;;
*)
:
esac
done