proxy-manager/pmgr

122 lines
2.9 KiB
Plaintext
Raw Permalink Normal View History

2023-04-25 22:19:13 +03:00
#!/bin/sh
# pmgr -- proxy manager
2023-07-01 16:35:23 +03:00
PMGR_VERSION=0.0.2
2023-04-25 22:19:13 +03:00
PMGR_WORKDIR="${PMGR_WORKDIR:-"$HOME"/.config/pmgr}"
PMGR_ENV_DIR="${PMGR_ENV_DIR:-"$PMGR_WORKDIR"/environment}"
mkdir -p "$PMGR_WORKDIR"
mkdir -p "$PMGR_ENV_DIR"
usage()
{
printf \
'pmgr -- proxy manager based on systemd user units. See pmgr(1)
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
Environment:
PMGR_WORKDIR [default: ~/.config/pmgr]
PMGR_ENV_DIR [default: $PMGR_WORKDIR/environment]
' | sed 's/^ //g'
}
list_proxies()
{
{
printf '\e[1mHOST PROTO FILE STATUS AUTOSTART\033[0m\n'
2023-07-01 16:35:23 +03:00
for file in $(find "$PMGR_ENV_DIR" -type f -follow); do
2023-04-25 22:19:13 +03:00
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