#!/usr/bin/env bash # Short-Description: Protect your privacy online and access media content with no regional restrictions. Strong encryption and no-log policy with 3000+ servers in 60+ countries. ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin BASE=nordvpn DAEMON=/usr/sbin/${BASE}d PID=/var/run/$BASE.pid SOCK=/run/$BASE/${BASE}d.sock SOCKDIR=/run/$BASE create_socket_dir() { if [[ -d $SOCKDIR ]]; then return fi mkdir -m 0770 $SOCKDIR chown root:$BASE $SOCKDIR } checkuser() { status=0 for u in $(who | awk '{print $1}' | sort | uniq) do if [ "$u" == "$1" ]; then return 0 fi done return 1 } # # Function that starts the daemon # nordvpnd_start() { checkuser create_socket_dir rm -rf $SOCK if [ -s $PID ]; then echo "$BASE is already running: $(cat $PID)" exit 1 fi if [ -x $DAEMON ]; then echo "Starting $BASE" sleep 1 # $DAEMON start-stop-daemon --start --quiet -g "nordvpn" --pidfile $PID --exec $DAEMON $DAEMON > /dev/null & pidof $DAEMON > $PID sleep 10 if [ -S "$SOCK" ]; then echo "$BASE has been started." else echo "$BASE failed to start. Please restart the daemon." fi fi } # # Function that stops the daemon # nordvpnd_stop() { if [ -s $PID ]; then echo "Stopping $BASE" sleep 1 kill $(cat $PID) rm -rf $PID $SOCK sleep 1 echo "$BASE has been stopped." else echo "$BASE is not running." fi } # # Function that restarts the daemon # nordvpnd_restart() { nordvpnd_stop sleep 1 nordvpnd_start } # # Function that shows the current status of the daemon # nordvpnd_status() { if [ -s $PID ]; then echo "$BASE is running: $(cat $PID)" else echo "$BASE is not running." fi } case "$1" in start) nordvpnd_start ;; stop) nordvpnd_stop ;; restart) nordvpnd_restart ;; status) nordvpnd_status ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 ;; esac