#!/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. # . /etc/rc.subr name=squid rcvar=squid_enable load_rc_config ${name} : ${squid_chdir:=/var/squid} : ${squid_conf:=%%PREFIX%%/etc/squid/squid.conf} : ${squid_enable:=NO} : ${squid_pidfile:=/var/run/squid/squid.pid} : ${squid_user:=squid} command=%%PREFIX%%/sbin/squid # Make sure that we invoke squid with "-f ${squid_conf}"; define this # variable early so reload_cmd and stop_precmd pick it up: command_args="-f ${squid_conf}" extra_commands=reload reload_cmd="${command} ${command_args} ${squid_flags} -k reconfigure" start_precmd=squid_setfib stop_precmd="${command} ${command_args} ${squid_flags} -k check 2>/dev/null" stop_cmd=squid_stop pidfile=${squid_pidfile} procname=squid-1 required_dirs=${squid_chdir} # 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. required_files=${squid_conf} squid_setfib() { 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 [ "x${squid_fib}" != "xNONE" ]; then command="setfib -F ${squid_fib} ${command}" else return 0 fi } squid_stop() { echo "Stopping ${name}." ${command} ${command_args} ${squid_flags} -k shutdown run_rc_command poll } run_rc_command $1