#!/bin/sh ######################################################################## # Begin $rc_base/init.d/tor # # Description : Anonymizing overlay network for TCP # ######################################################################## . /etc/sysconfig/rc . ${rc_functions} function tor_is_enabled() { [ "${TOR_ENABLED}" = "on" ] || [ "${TOR_RELAY_ENABLED}" = "on" ] } function setup_firewall() { eval $(/usr/local/bin/readhash /var/ipfire/tor/settings) # 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 boot_mesg "Starting tor..." loadproc /usr/bin/tor \ --runasdaemon 1 \ --defaults-torrc /usr/share/tor/defaults-torrc \ -f /etc/tor/torrc \ --quiet ;; 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 ;; restart) ${0} stop sleep 1 ${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|reload-or-restart|status}" exit 1 ;; esac # End $rc_base/init.d/tor