]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - debian/init.d
Initial debian directory and packaging related changes.
[quix0rs-apt-p2p.git] / debian / init.d
diff --git a/debian/init.d b/debian/init.d
new file mode 100755 (executable)
index 0000000..1543442
--- /dev/null
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          apt-dht
+# Required-Start:    $network
+# Required-Stop:
+# Should-Start:      $named
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: apt helper for peer-to-peer downloads of Debian packages
+# Description:       Apt-DHT is a helper for downloading Debian packages
+#                    files with APT. It will download any needed files from
+#                    other Apt-DHT peers in a bittorrent-like manner, and so
+#                    reduce the strain on the Debian mirrors.
+### END INIT INFO
+
+# /etc/init.d/apt-dht: start and stop the apt-dht daemon
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+rundir=/var/run/apt-dht/ 
+pidfile=$rundir/apt-dht.pid 
+logfile=/var/log/apt-dht.log
+application=/usr/sbin/apt-dht
+twistd=/usr/bin/twistd
+user=aptdht
+group=nogroup
+
+[ -r /etc/default/apt-dht ] && . /etc/default/apt-dht
+
+test -x $twistd || exit 0
+test -r $application || exit 0
+
+# return true if at least one pid is alive
+alive()
+{
+    if [ -z "$*" ]; then
+        return 1
+    fi
+    for i in $*; do
+        if kill -0 $i 2> /dev/null; then
+            return 0
+        fi
+    done
+
+    return 1
+}
+
+
+case "$1" in
+    start)
+        echo -n "Starting apt-dht"
+        [ ! -d $rundir ] && mkdir $rundir
+        [ ! -f $logfile ] && touch $logfile
+        chown $user $rundir $logfile 
+        [ -f $pidfile ] && chown $user $pidfile
+        # Make cache files readable
+        umask 022
+        start-stop-daemon --start --quiet --exec $twistd -- \
+            --pidfile=$pidfile --rundir=$rundir --python=$application \
+            --logfile=$logfile --no_save
+        echo "."        
+    ;;
+
+    stop)
+        echo -n "Stopping apt-dht"
+        start-stop-daemon --stop --quiet --pidfile $pidfile
+        #
+        # Continue stopping until daemon finished or time over
+        #
+        count=0
+        pid=$(cat $pidfile 2>/dev/null)
+        while alive $pid; do
+                if [ $count -gt 20 ]; then
+                        echo -n " aborted"
+                        break;
+                elif [ $count = 1 ]; then
+                        echo -n " [wait $count"
+                elif [ $count -gt 1 ]; then
+                        echo -n " $count"
+                fi
+                count=$(expr $count + 1)
+                sleep 1
+                start-stop-daemon --stop --quiet --pidfile $pidfile
+        done
+        if [ $count -gt 1 ]; then
+                echo -n "]"
+        fi
+        echo "."        
+    ;;
+
+    restart)
+        $0 stop
+        $0 start
+    ;;
+    
+    force-reload)
+        $0 restart
+    ;;
+
+    *)
+        echo "Usage: /etc/init.d/apt-dht {start|stop|restart|force-reload}" >&2
+        exit 1
+    ;;
+esac
+
+exit 0