mirror of
https://git.freebsd.org/ports.git
synced 2025-05-17 09:33:11 -04:00
180 lines
4.6 KiB
Bash
180 lines
4.6 KiB
Bash
#!/bin/sh
|
|
|
|
# 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_group: The group id that should be used to run the Squid master
|
|
# process. Default: squid
|
|
# Note that it affects squid pid dir also, where SHM files
|
|
# may be stored on some OS (see r391555)
|
|
#
|
|
# squid_maxwait: Seconds to wait for squid PID file
|
|
# Default: 10
|
|
#
|
|
# 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_maxwait:=10}
|
|
: ${squid_user:=squid}
|
|
: ${squid_group:=squid}
|
|
|
|
required_args="-f ${squid_conf}"
|
|
required_dirs=$chdir
|
|
required_files=$squid_conf
|
|
command_args="${required_args} ${squid_flags}"
|
|
# We used to need it in squid3 to match pid and proc name
|
|
# procname="?squid-*"
|
|
pidfile=$squid_pidfile
|
|
}
|
|
|
|
squid_prestart()
|
|
{
|
|
# create piddir if it's missing (for example if /var/run is tmpfs)
|
|
squid_piddir=${pidfile%/*}
|
|
if [ ! -d "${squid_piddir}" ]; then
|
|
echo "Creating PID directory ${squid_piddir}"
|
|
mkdir ${squid_piddir} && chown ${squid_user}:${squid_group} ${squid_piddir} && chmod 750 ${squid_piddir}|| return $?
|
|
fi
|
|
|
|
# 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
|
|
squid_secs=0
|
|
while ! [ -f ${pidfile} ]; do
|
|
if [ ${squid_maxwait} -le ${squid_secs} ]; then
|
|
echo "give up waiting for pidfile"
|
|
break
|
|
fi
|
|
sleep 1
|
|
echo -n "."
|
|
: $(( squid_secs+=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
|