Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- #
- # $FreeBSD: branches/2017Q2/security/tor/files/tor.in 425595 2016-11-07 06:24:37Z jbeich $
- #
- # PROVIDE: tor
- # REQUIRE: DAEMON FILESYSTEMS
- # BEFORE: LOGIN
- #
- # Add the following lines to /etc/rc.conf to enable tor.
- # All these options will overide any settings in your local torrc as
- # they are command line options.
- #
- # tor_enable (bool): Set it to "YES" to enable tor. Default: NO
- # tor_instances (str): List of instances. Default: ""
- # tor_conf (str): Points to your torrc file.
- # Default: /usr/local/etc/tor/torrc
- # tor_user (str): Tor daemon user. Default: _tor
- # tor_group (str): Tor group. Default: _tor
- # tor_pidfile (str): Tor pid file. Default: /var/run/tor/tor.pid
- # tor_datadir (str): Tor datadir. Default: /var/db/tor
- # tor_disable_default_instance (str): Doesn't run the default instance.
- # Only valid when tor_instances is used.
- # Default: NO
- #
- # The instance definition that tor_instances expects:
- # inst_name{:inst_conf:inst_user:inst_group:inst_pidfile:inst_data_dir}
- #
- . /etc/rc.subr
- name="tor5"
- rcvar=tor5_enable
- exit_code=0
- load_rc_config ${name}
- : ${tor5_enable="NO"}
- : ${tor5_instances=""}
- : ${tor5_conf="/usr/local/etc/tor/torrc"}
- : ${tor5_user="_tor"}
- : ${tor5_group="_tor"}
- : ${tor5_pidfile="/var/run/tor/tor5.pid"}
- : ${tor5_datadir="/var/db/tor5"}
- : ${tor5_disable_default_instance="NO"}
- instance=${slave_instance}
- if [ -n "${instance}" ]; then
- inst_def=${instance}
- inst_name=${inst_def%%:*}
- [ "${inst_name}" != "main" ] || err 1 "${name} instance can't be named 'main'"
- inst_def=${inst_def#$inst_name}
- if [ -n "$inst_def" ]; then
- # extended instance: parameters are set explicitly
- inst_def=${inst_def#:}
- tor5_conf=${inst_def%%:*}
- inst_def=${inst_def#$tor_conf:}
- tor_user=${inst_def%%:*}
- inst_def=${inst_def#$tor_user:}
- tor5_group=${inst_def%%:*}
- inst_def=${inst_def#$tor_group:}
- tor5_pidfile=${inst_def%%:*}
- tor5_datadir=${inst_def#$tor_pidfile:}
- if [ -z "${tor5_conf}" -o -z "${tor5_user}" -o -z "${tor5_group}" -o -z "${tor5_pidfile}" -o -z "${tor5_datadir}" ]; then
- warn "invalid tor instance ${inst_name} settings: ${instance}"
- exit 1
- fi
- else
- # regular instance: default parameters are used
- tor5_conf=${tor5_conf}@${inst_name}
- tor5_pidfile=${tor5_pidfile}@${inst_name}
- tor5_datadir=${tor5_datadir}/instance@${inst_name}
- fi
- if ! [ -r ${tor5_conf} ]; then
- warn "tor instance ${inst_name} config file ${tor5_conf} doesn't exist or isn't readable"
- warn "you can copy the sample config /usr/local/etc/tor/torrc.sample and modify it"
- exit 1
- fi
- if ! [ -d ${tor5_datadir} ]; then
- mkdir -p ${tor5_datadir} &&
- chown ${tor5_user}:${tor5_group} ${tor5_datadir} &&
- chmod 0700 ${tor5_datadir} &&
- echo "${name}: created the instance data directory ${tor5_datadir}"
- fi
- fi
- if [ -z "${instance}" -a -n "${tor5_instances}" ]; then
- inst_only="$9"
- inst_done=0
- for i in ${tor5_instances}; do
- inst_name=${i%%:*}
- if [ -z "${inst_only}" -o "${inst_name}" = "${inst_only}" ]; then
- echo -n "${name} instance ${inst_name}: "
- if ! slave_instance=${i} /usr/local/etc/rc.d/tor5 "$1"; then
- exit_code=1
- fi
- inst_done=$((inst_done+1))
- fi
- done
- if [ -z "${inst_only}" -o "${inst_only}" = "main" ]; then
- checkyesno tor5_disable_default_instance && return $exit_code
- echo -n "${name} main instance: "
- elif [ -n "${inst_only}" ]; then
- [ $inst_done -gt 0 ] || err 1 "${name} instance '$inst_only' isn't defined"
- return $exit_code
- fi
- fi
- required_files=${tor5_conf}
- required_dirs=${tor5_datadir}
- pidfile=${tor5_pidfile}
- command="/usr/local/bin/${name}"
- command_args="-f ${tor5_conf} --PidFile ${tor5_pidfile} --RunAsDaemon 1 --DataDirectory ${tor5_datadir}"
- extra_commands="reload"
- if ! run_rc_command "$1"; then
- exit_code=1
- fi
- return $exit_code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement