diff --git a/tunnelkeeper b/tunnelkeeper index 141adba..802a548 100755 --- a/tunnelkeeper +++ b/tunnelkeeper @@ -12,6 +12,14 @@ if [[ ! -f "$CONFFILE" ]]; then exit 1 fi +function ruroot () { + if [[ $UID -ne 0 ]]; then + echo "You must be root to do this" + exit + fi +} + + case "$1" in FORKSTART ) touch "$BASEDIR/var/${2}.connected" @@ -39,16 +47,14 @@ case "$1" in cat $CONFFILE | grep -o 'LocalForward [0-9]* ' | grep -o '[0-9]*' | xargs -I% -P0 $0 FORKKILL % &>/dev/null ;; install ) - if [[ $UID -ne 0 ]]; then - echo "You must be root to do this" - exit - fi + ruroot mkdir -p /opt/tunnelkeeper/var mkdir -p /opt/tunnelkeeper/etc if [[ -f "$BASEDIR/etc/tunnels.conf" ]]; then cp "$BASEDIR/etc/tunnels.conf" /opt/tunnelkeeper/etc fi - cp "$REALPATH" "/opt/tunnelkeeper/tunnelkeeper.sh" + cp "$REALPATH" "/opt/tunnelkeeper/tunnelkeeper" + ln -s /opt/tunnelkeeper/tunnelkeeper.sh /usr/local/bin/tunnelkeeper echo "[Unit] Description=TunnelKeeper keeps SSH tunnels open. After=network.target @@ -56,17 +62,30 @@ After=network.target User=root Group=root Type=forking -ExecStart=/opt/tunnelkeeper/tunnelkeeper.sh start -ExecStop=/opt/tunnelkeeper/tunnelkeeper.sh stop +ExecStart=/opt/tunnelkeeper/tunnelkeeper start +ExecStop=/opt/tunnelkeeper/tunnelkeeper stop RestartSec=15 Restart=always [Install] WantedBy=multi-user.target" >> /lib/systemd/system/tunnelkeeper.service systemctl daemon-reload systemctl enable tunnelkeeper.service - echo "tunnelkeeper service installed" + echo -e "\nTunnelKeeper service installed.\n" + ;; + uninstall ) + ruroot + rm /usr/local/bin/tunnelkeeper + rm /lib/systemd/system/tunnelkeeper.service + systemctl enable tunnelkeeper.service + systemctl daemon-reload + rm -rf /opt/tunnelkeeper + echo -e "\nTunnelKeeper service uninstalled.\n" + ;; + config ) + ruroot + vi /opt/tunnelkeeper/etc/tunnels.conf ;; * ) - echo -e "\nUsage: $(basename $0) [start|stop|install]\n" + echo -e "\nUsage: $(basename $0) [start|stop|install|uninstall|config]\n" ;; esac