. /etc/sysconfig/rc
. ${rc_functions}
+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
+
+ if [ "${TOR_RELAY_ENABLED}" = "on" -a -n "${TOR_RELAY_DIRPORT}" ] && [ "${TOR_RELAY_DIRPORT}" -ne 0 ]; then
+ iptables -A TOR_INPUT -p tcp --dport "${TOR_RELAY_DIRPORT}" -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
;;