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