diff options
Diffstat (limited to 'www/squid3/files/squid.in')
-rw-r--r-- | www/squid3/files/squid.in | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/www/squid3/files/squid.in b/www/squid3/files/squid.in new file mode 100644 index 000000000000..2044ce7904b8 --- /dev/null +++ b/www/squid3/files/squid.in @@ -0,0 +1,158 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# PROVIDE: squid +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Note: +# Set "squid_enable=yes" in either /etc/rc.conf, /etc/rc.conf.local or +# /etc/rc.conf.d/squid to activate Squid. +# +# Additional variables you can define in one of these files: +# +# squid_chdir: the directory into which the rc system moves into before +# starting Squid. Default: /var/squid +# +# squid_conf: The configuration file that Squid should use. +# Default: %%PREFIX%%/etc/squid/squid.conf +# +# squid_fib: The alternative routing table id that Squid should use. +# Default: none +# See setfib(1) for further details. Note that the setfib(2) +# system call is not available in FreeBSD versions prior to 7.1. +# +# squid_user: The user id that should be used to run the Squid master +# process. Default: squid. +# Note that you probably need to define "squid_user=root" if +# you want to run Squid in reverse proxy setups or if you want +# Squid to listen on a "privileged" port < 1024. +# +# squid_pidfile: +# The name (including the full path) of the Squid +# master process' PID file. +# Default: /var/run/squid/squid.pid. +# You only need to change this if you changed the +# corresponding entry in your Squid configuration. +# +# squid_flags: Additional commandline arguments for Squid you might want to +# use. See squid(8) for further details. +# +# squid_krb5_ktname: +# Alternative Kerberos 5 Key Table. +# Default: none +# +# squid_krb5_config: +# Alternative Kerberos 5 config file +# Default: none + +. /etc/rc.subr + +name=squid +rcvar=squid_enable + +# Make sure that we invoke squid with "-f ${squid_conf}"; define this +# variable early so reload_cmd and stop_precmd pick it up: + +extra_commands="reload configtest" +reload_cmd=squid_reload +start_precmd=squid_prestart +start_postcmd=squid_getpid +stop_precmd=squid_prestop +configtest_cmd=squid_configtest +reload_precmd=squid_configtest +restart_precmd=squid_configtest + +# squid(8) will not start if ${squid_conf} is not present so try +# to catch that beforehand via ${required_files} rather than make +# squid(8) crash. + +squid_load_rc_config() +{ + : ${squid_chdir:=/var/squid} + : ${squid_conf:=%%PREFIX%%/etc/squid/squid.conf} + : ${squid_enable:=NO} + : ${squid_program:=%%PREFIX%%/sbin/squid} + : ${squid_pidfile:=/var/run/squid/squid.pid} + : ${squid_user:=squid} + + required_args="-f ${squid_conf}" + required_dirs=$chdir + required_files=$squid_conf + command_args="${required_args} ${squid_flags}" + procname="?squid-*" + pidfile=$squid_pidfile +} + +squid_prestart() +{ + # setup KRB5_KTNAME: + squid_krb5_ktname=${squid_krb5_ktname:-"NONE"} + if [ "${squid_krb5_ktname}" != "NONE" ]; then + export KRB5_KTNAME=${squid_krb5_ktname} + fi + + # setup KRB5_CONFIG: + squid_krb5_config=${squid_krb5_config:-"NONE"} + if [ "${squid_krb5_config}" != "NONE" ]; then + export KRB5_CONFIG=${squid_krb5_config} + fi + + # setup FIB tables: + if command -v check_namevarlist > /dev/null 2>&1; then + check_namevarlist fib && return 0 + fi + + ${SYSCTL} net.fibs >/dev/null 2>&1 || return 0 + + squid_fib=${squid_fib:-"NONE"} + if [ "${squid_fib}" != "NONE" ]; then + command="setfib -F $squid_fib $command" + else + return 0 + fi + + squid_configtest +} + +squid_reload() +{ + $command $required_args $squid_flags -k reconfigure +} + +squid_configtest() +{ + echo "Performing sanity check on ${name} configuration." + if $command $required_args $squid_flags -k check; then + echo "Configuration for ${name} passes." + return 0 + else + return $? + fi +} + +squid_getpid() +{ + # retrieve the PID of the Squid master process explicitly here + # in case rc.subr was unable to determine it: + if [ -z "$rc_pid" ]; then + while ! [ -f ${pidfile} ]; do + sleep 1 + done + read _pid _junk <${pidfile} + [ -z "${_pid}" ] || pid=${_pid} + else + pid=${rc_pid} + fi +} + +squid_prestop() +{ + command_args="$command_args -k shutdown" + squid_configtest +} + +load_rc_config $name +squid_load_rc_config +run_rc_command $1 |