mirror of
https://github.com/Ponce/slackbuilds
synced 2024-12-01 01:00:03 +01:00
1fb01d0e76
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
147 lines
3.9 KiB
Bash
147 lines
3.9 KiB
Bash
#!/bin/bash
|
|
|
|
CONFIGFILE="/etc/default/dnscrypt-proxy"
|
|
DAEMON="/usr/sbin/dnscrypt-proxy"
|
|
|
|
. $CONFIGFILE
|
|
|
|
start_instance() {
|
|
if [ ! -r ${DNSCRYPTCONFIG[$1]} ]; then
|
|
echo "No configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
PIDFILE=$(grep -i "^[[:space:]]*PidFile[[:space:]]\+." ${DNSCRYPTCONFIG[$1]} | awk '{print $2}')
|
|
if [ -z ${PIDFILE} ]; then
|
|
echo "No PID configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
if [ -r ${PIDFILE} ]; then
|
|
echo "dnscrypt-proxy (instance $1) already running!"
|
|
return
|
|
fi
|
|
|
|
# dnscrypt-proxy will work without this, but it drops privileges before
|
|
# seeding the PRNG. libevent tries to work around a missing /dev/urandom
|
|
# but it's safer just to make sure it is available in the chroot.
|
|
if [ -n "${CHROOTDIR[$1]}" ]; then
|
|
if [ "$(readlink -f ${CHROOTDIR[$1]})" != "/" ]; then
|
|
if [ ! -d ${CHROOTDIR[$1]} ]; then
|
|
mkdir -p ${CHROOTDIR[$1]}
|
|
chmod 755 ${CHROOTDIR[$1]}
|
|
fi
|
|
if [ ! -d ${CHROOTDIR[$1]}/dev ]; then
|
|
mkdir -p ${CHROOTDIR[$1]}/dev
|
|
chmod 755 ${CHROOTDIR[$1]}/dev
|
|
fi
|
|
if [ ! -c ${CHROOTDIR[$1]}/dev/urandom ]; then
|
|
mknod -m 666 ${CHROOTDIR[$1]}/dev/urandom c 1 9
|
|
fi
|
|
if [ ! -c ${CHROOTDIR[$1]}/dev/random ]; then
|
|
mknod -m 666 ${CHROOTDIR[$1]}/dev/random c 1 8
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
$DAEMON ${DNSCRYPTCONFIG[$1]}
|
|
}
|
|
|
|
stop_instance() {
|
|
if [ ! -r ${DNSCRYPTCONFIG[$1]} ]; then
|
|
echo "No configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
PIDFILE=$(grep -i "^[[:space:]]*PidFile[[:space:]]\+." ${DNSCRYPTCONFIG[$1]} | awk '{print $2}')
|
|
if [ -z ${PIDFILE} ]; then
|
|
echo "No PID configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
if [ ! -r ${PIDFILE} ]; then
|
|
echo "dnscrypt-proxy (instance $1) is not running!"
|
|
return
|
|
fi
|
|
echo "Stopping dnscrypt-proxy (instance $1)..."
|
|
kill $(cat ${PIDFILE})
|
|
}
|
|
|
|
status_instance() {
|
|
if [ ! -r ${DNSCRYPTCONFIG[$1]} ]; then
|
|
echo "No configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
PIDFILE=$(grep -i "^[[:space:]]*PidFile[[:space:]]\+." ${DNSCRYPTCONFIG[$1]} | awk '{print $2}')
|
|
if [ -z ${PIDFILE} ]; then
|
|
echo "No PID configuration for instance $1 found!"
|
|
return
|
|
fi
|
|
if [ ! -r ${PIDFILE} ]; then
|
|
echo "dnscrypt-proxy (instance $1) is not running."
|
|
return
|
|
fi
|
|
PID=$(cat ${PIDFILE})
|
|
if [ -z "$PID" ]; then
|
|
echo "PID file is empty! dnscrypt-proxy (instance $1) does not appear to be running, but there is a stale PID file."
|
|
elif kill -0 $PID ; then
|
|
echo "dnscrypt-proxy (instance $1) is running."
|
|
else
|
|
echo "dnscrypt-proxy (instance $1) is not running, but there is a stale PID file."
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
for i in `/usr/bin/seq 0 $((${#DNSCRYPTCONFIG[@]}-1))`
|
|
do
|
|
start_instance $i
|
|
done
|
|
}
|
|
|
|
stop() {
|
|
for i in `/usr/bin/seq 0 $((${#DNSCRYPTCONFIG[@]}-1))`
|
|
do
|
|
stop_instance $i
|
|
done
|
|
}
|
|
|
|
status() {
|
|
for i in `/usr/bin/seq 0 $((${#DNSCRYPTCONFIG[@]}-1))`
|
|
do
|
|
status_instance $i
|
|
done
|
|
}
|
|
|
|
case "$1" in
|
|
'start')
|
|
start
|
|
;;
|
|
'stop')
|
|
stop
|
|
;;
|
|
'restart')
|
|
stop
|
|
start
|
|
;;
|
|
'status')
|
|
status
|
|
;;
|
|
*_start)
|
|
INSTANCE=`echo $1 | /bin/cut -d '_' -f 1`
|
|
start_instance $INSTANCE
|
|
;;
|
|
*_stop)
|
|
INSTANCE=`echo $1 | /bin/cut -d '_' -f 1`
|
|
stop_instance $INSTANCE
|
|
;;
|
|
*_restart)
|
|
INSTANCE=`echo $1 | /bin/cut -d '_' -f 1`
|
|
stop_instance $INSTANCE
|
|
sleep 1
|
|
start_instance $INSTANCE
|
|
;;
|
|
*_status)
|
|
INSTANCE=`echo $1 | /bin/cut -d '_' -f 1`
|
|
status_instance $INSTANCE
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart|status|#_start|#_stop|#_restart}"
|
|
exit 1
|
|
;;
|
|
esac
|