. /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 \
;;
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
;;
${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