mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-21 18:25:41 +03:00
Needed when e.g. /var/log is mounted as tmpfs. Squid itself does not create this folder, so we have to add this check to the init script instead.
120 lines
3.3 KiB
Bash
120 lines
3.3 KiB
Bash
#!/sbin/openrc-run
|
|
# Copyright 1999-2013 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Header: /var/cvsroot/gentoo-x86/net-proxy/squid/files/squid.initd-r3,v 1.1 2013/01/11 15:25:49 eras Exp $
|
|
|
|
extra_started_commands="reload rotate"
|
|
|
|
depend() {
|
|
use dns
|
|
need net
|
|
after firewall
|
|
}
|
|
|
|
checkconfig() {
|
|
if [ ! -f /etc/squid/${SVCNAME}.conf ]; then
|
|
eerror "You need to create /etc/squid/${SVCNAME}.conf first."
|
|
eerror "An example can be found in /etc/squid/squid.conf.default"
|
|
return 1
|
|
fi
|
|
|
|
local PIDFILE=$(awk '/^[ \t]*pid_filename[ \t]+/ { print $2 }' < /etc/squid/${SVCNAME}.conf)
|
|
[ -z ${PIDFILE} ] && PIDFILE=/var/run/squid.pid
|
|
if [ /var/run/${SVCNAME}.pid != ${PIDFILE} ]; then
|
|
eerror "/etc/squid/${SVCNAME}.conf must set pid_filename to"
|
|
eerror " /var/run/${SVCNAME}.pid"
|
|
eerror "CAUTION: http_port, cache_dir and *_log parameters must be different than"
|
|
eerror " in any other instance of squid."
|
|
return 1
|
|
fi
|
|
|
|
# Maximum file descriptors squid can open is determined by:
|
|
# a basic default of N=1024
|
|
# ... altered by ./configure --with-filedescriptors=N
|
|
# ... overridden on production by squid.conf max_filedescriptors (if,
|
|
# and only if, setrlimit() RLIMIT_NOFILE is able to be built+used).
|
|
# Since we do not configure hard coded # of filedescriptors anymore,
|
|
# there is no need for ulimit calls in the init script.
|
|
# Use max_filedescriptors in squid.conf instead.
|
|
|
|
local CACHE_SWAP=$(awk '/^[ \t]*cache_dir[ \t]+/ { if ($2 == "coss" ) printf "%s/stripe ", $3 ; else printf "%s/00 ", $3; }' < /etc/squid/${SVCNAME}.conf)
|
|
[ -z "$CACHE_SWAP" ] && CACHE_SWAP="/var/cache/squid/00"
|
|
|
|
local x
|
|
for x in $CACHE_SWAP ; do
|
|
if [ ! -e $x ] ; then
|
|
ebegin "Initializing cache directory ${x%/*}"
|
|
local ORIG_UMASK=$(umask)
|
|
umask 027
|
|
|
|
if ! (mkdir -p ${x%/*} && chown squid ${x%/*}) ; then
|
|
eend 1
|
|
return 1
|
|
fi
|
|
|
|
local INIT_CACHE_RESPONSE="$(/usr/sbin/squid -z -N -f /etc/squid/${SVCNAME}.conf 2>&1)"
|
|
if [ $? != 0 ] || echo "$INIT_CACHE_RESPONSE" | grep -q "erminated abnormally" ; then
|
|
umask $ORIG_UMASK
|
|
eend 1
|
|
echo "$INIT_CACHE_RESPONSE"
|
|
return 1
|
|
fi
|
|
|
|
umask $ORIG_UMASK
|
|
eend 0
|
|
break
|
|
fi
|
|
done
|
|
|
|
return 0
|
|
}
|
|
|
|
start() {
|
|
checkconfig || return 1
|
|
checkpath -d /var/run/squid -m 0755 -o squid:squid
|
|
checkpath -d /var/log/squid -m 0750 -o squid:squid
|
|
ebegin "Starting ${SVCNAME}"
|
|
KRB5_KTNAME="${SQUID_KEYTAB}" /usr/sbin/squid ${SQUID_OPTS} -f /etc/squid/${SVCNAME}.conf
|
|
eend $? && sleep 1
|
|
}
|
|
|
|
stop() {
|
|
ebegin "Stopping ${SVCNAME}"
|
|
if /usr/sbin/squid -k shutdown -f /etc/squid/${SVCNAME}.conf ; then
|
|
# Now we have to wait until squid has _really_ stopped.
|
|
sleep 1
|
|
if [ -f /var/run/${SVCNAME}.pid ] ; then
|
|
einfon "Waiting for squid to shutdown ."
|
|
cnt=0
|
|
while [ -f /var/run/${SVCNAME}.pid ] ; do
|
|
cnt=$(expr $cnt + 1)
|
|
if [ $cnt -gt 60 ] ; then
|
|
# Waited 120 seconds now. Fail.
|
|
echo
|
|
eend 1 "Failed."
|
|
break
|
|
fi
|
|
sleep 2
|
|
echo -n "."
|
|
done
|
|
echo
|
|
fi
|
|
else
|
|
eerror "Squid shutdown failed, probably service is already down."
|
|
fi
|
|
eend 0
|
|
}
|
|
|
|
reload() {
|
|
checkconfig || return 1
|
|
ebegin "Reloading ${SVCNAME}"
|
|
/usr/sbin/squid -k reconfigure -f /etc/squid/${SVCNAME}.conf
|
|
eend $?
|
|
}
|
|
|
|
rotate() {
|
|
service_started ${SVCNAME} || return 1
|
|
ebegin "Rotating ${SVCNAME} logs"
|
|
/usr/sbin/squid -k rotate -f /etc/squid/${SVCNAME}.conf
|
|
eend $?
|
|
}
|