Last active
January 16, 2020 14:50
-
-
Save yspb/047ffc75e5f9ef2d5a541004d122c63e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
### BEGIN INIT INFO | |
# Provides: sockd | |
# Required-Start: $remote_fs $syslog | |
# Required-Stop: $remote_fs $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Start the dante SOCKS server. | |
# Description: SOCKS (v4 and v5) proxy server daemon (sockd). | |
# This server allows clients to connect to it and | |
# request proxying of TCP or UDP network traffic | |
# with extensive configuration possibilities. | |
### END INIT INFO | |
# | |
# dante SOCKS server init.d file. Based on /etc/init.d/skeleton: | |
# Version: @(#)skeleton 1.8 03-Mar-1998 [email protected] | |
# Via: https://gitorious.org/dante/pkg-debian | |
PATH=/sbin:/usr/sbin:/bin:/usr/bin | |
NAME=sockd | |
DAEMON=/usr/sbin/$NAME | |
DAEMON_ARGS="-D" | |
PIDFILE=/var/run/$NAME.pid | |
SCRIPTNAME=/etc/init.d/$NAME | |
DESC="Dante SOCKS daemon" | |
CONFFILE=/etc/$NAME.conf | |
# Exit if the package is not installed | |
[ -x "$DAEMON" ] || exit 0 | |
# Load the VERBOSE setting and other rcS variables | |
. /lib/init/vars.sh | |
# Define LSB log_* functions. | |
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present | |
# and status_of_proc is working. | |
. /lib/lsb/init-functions | |
set -e | |
# This function makes sure that the Dante server can write to the pid-file. | |
touch_pidfile () | |
{ | |
if [ -r $CONFFILE ]; then | |
uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`" | |
if [ -n "$uid" ]; then | |
touch $PIDFILE | |
chown $uid $PIDFILE | |
fi | |
fi | |
} | |
case "$1" in | |
start) | |
if ! egrep -cve '^ *(#|$)' \ | |
-e '^(logoutput|user\.((not)?privileged|libwrap)):' \ | |
$CONFFILE > /dev/null | |
then | |
echo "Not starting $DESC: not configured." | |
exit 0 | |
fi | |
echo -n "Starting $DESC: " | |
touch_pidfile | |
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ | |
|| return 1 | |
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ | |
$DAEMON_ARGS \ | |
|| return 2 | |
echo "$NAME." | |
;; | |
stop) | |
echo -n "Stopping $DESC: " | |
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME | |
RETVAL="$?" | |
[ "$RETVAL" = 2 ] && return 2 | |
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON | |
[ "$?" = 2 ] && return 2 | |
echo "$NAME." | |
;; | |
reload|force-reload) | |
# | |
# If the daemon can reload its config files on the fly | |
# for example by sending it SIGHUP, do it here. | |
# | |
# Make this a do-nothing entry, if the daemon responds to changes in its config file | |
# directly anyway. | |
# | |
echo "Reloading $DESC configuration files." | |
start-stop-daemon --stop --signal 1 --quiet --pidfile \ | |
$PIDFILE --exec $DAEMON -- -D | |
;; | |
restart) | |
# | |
# If the "reload" option is implemented, move the "force-reload" | |
# option to the "reload" entry above. If not, "force-reload" is | |
# just the same as "restart". | |
# | |
echo -n "Restarting $DESC: " | |
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON | |
sleep 1 | |
touch_pidfile | |
start-stop-daemon --start --quiet --pidfile $PIDFILE \ | |
--exec $DAEMON -- -D | |
echo "$NAME." | |
;; | |
status) | |
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? | |
;; | |
*) | |
N=/etc/init.d/$NAME | |
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 | |
echo "Usage: $N {start|stop|restart|status|force-reload}" >&2 | |
exit 1 | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment