diff --git a/pmgr b/pmgr new file mode 100755 index 0000000..c0c869c --- /dev/null +++ b/pmgr @@ -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] [] + + 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