]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/initscripts/init.d/tor
tor: Increase number of max. open file descriptors.
[people/teissler/ipfire-2.x.git] / src / initscripts / init.d / tor
index 6ae03130ef1559c6f222780b4fcb4a449a1d7750..878080eff3bbe4c220cbfa2fba85f16494a0f2a9 100644 (file)
@@ -9,8 +9,40 @@
 . /etc/sysconfig/rc
 . ${rc_functions}
 
+FILEDESCRIPTORS="65535"
+
+eval $(/usr/local/bin/readhash /var/ipfire/tor/settings)
+
+function tor_is_enabled() {
+       [ "${TOR_ENABLED}" = "on" ] || [ "${TOR_RELAY_ENABLED}" = "on" ]
+}
+
+function setup_firewall() {
+       # Flush all rules.
+       flush_firewall
+
+       if [ "${TOR_RELAY_ENABLED}" = "on" -a -n "${TOR_RELAY_PORT}" ]; then
+               iptables -A TOR_INPUT -p tcp --dport "${TOR_RELAY_PORT}" -j ACCEPT
+       fi
+}
+
+function flush_firewall() {
+       # Flush all rules.
+       iptables -F TOR_INPUT
+}
+
 case "${1}" in
        start)
+               tor_is_enabled || exit 0
+
+               # Setup firewall.
+               setup_firewall
+
+               # Increasing open file descriptors.
+               if [ -n "${FILEDESCRIPTORS}" ]; then
+                       ulimit -n "${FILEDESCRIPTORS}"
+               fi
+
                boot_mesg "Starting tor..."
                loadproc /usr/bin/tor \
                        --runasdaemon 1 \
@@ -20,11 +52,17 @@ case "${1}" in
                ;;
 
        stop)
+               # Flush firewall.
+               flush_firewall
+
                boot_mesg "Stopping tor..."
                killproc /usr/bin/tor
                ;;
 
        reload)
+               # Setup firewall.
+               setup_firewall
+
                boot_mesg "Reloading tor..."
                reloadproc /usr/bin/tor
                ;;
@@ -35,12 +73,21 @@ case "${1}" in
                ${0} start
                ;;
 
+       reload-or-restart)
+               # Reload the process if it is already running. Otherwise, restart.
+               if pidofproc -s /usr/bin/tor; then
+                       $0 reload
+               else
+                       $0 restart
+               fi
+               ;;
+
        status)
                statusproc /usr/bin/tor
                ;;
 
        *)
-               echo "Usage: ${0} {start|stop|reload|restart|status}"
+               echo "Usage: ${0} {start|stop|reload|restart|reload-or-restart|status}"
                exit 1
                ;;
 esac