add pmgr
This commit is contained in:
		
							
								
								
									
										118
									
								
								pmgr
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										118
									
								
								pmgr
									
									
									
									
									
										Executable 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
 | 
			
		||||
		Reference in New Issue
	
	Block a user