Package: squid Version: 2.7.STABLE3-4.1 Severity: wishlist Tags: patch If in squid.conf the location of the pid-file is non standard, squid will not restart and the logrotate will not work correctly.
I propose to move some parameters form the start-stop script to /etc/default/squid. 1. Add to /etc/default/squid: ... NAME="squid" SQUID_CONF="/etc/squid/squid.conf" SQUID_ARGS="-D -YC -f ${SQUID_CONF}" PIDFILE=$(awk '\ BEGIN { FS=" "; pidfile=sprintf("/var/run/%s.pid", NAME) } $0 ~ /^pid_filename/ { pidfile=sprintf("%s", $2) } END { print pidfile} ' $SQUID_CONF) SQUID_UID=$(awk '\ BEGIN { FS=" "; squid_uid="proxy" } $0 ~ /^cache_effective_user/ { squid_uid=sprintf("%s", $2) } END { print squid_uid} ' $SQUID_CONF) SQUID_GID=$(awk '\ BEGIN { FS=" "; squid_gid="proxy" } $0 ~ /^cache_effective_group/ { squid_gid=sprintf("%s", $2) } END { print squid_gid} ' $SQUID_CONF) 2. Change /etc/init.d/squid to DAEMON=/usr/sbin/squid LIB=/usr/lib/squid [ ! -f /etc/default/squid ] || . /etc/default/squid . /lib/lsb/init-functions 3. Change /etc/logrotate.d/squid to ... postrotate if [ -f "`. /etc/default/squid ; echo ${PIDFILE:-/var/run/squid.pid}`" ] then /usr/sbin/squid -k rotate fi endscript Additional wishes: With SQUID_UID en SQUID_GID it is possible to check permissions of the logfile, the cache and other files -- System Information: Debian Release: 5.0 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.26-1-686-bigmem (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages squid depends on: ii adduser 3.110 add and remove users and groups ii debconf [debconf-2.0] 1.5.24 Debian configuration management sy ii libc6 2.7-18 GNU C Library: Shared libraries ii libcomerr2 1.41.3-1 common error description library ii libdb4.6 4.6.21-11 Berkeley v4.6 Database Libraries [ ii libkrb53 1.6.dfsg.4~beta1-5 MIT Kerberos runtime libraries ii libldap-2.4-2 2.4.11-1 OpenLDAP libraries ii libpam0g 1.0.1-5 Pluggable Authentication Modules l ii logrotate 3.7.1-5 Log rotation utility ii lsb-base 3.2-20 Linux Standard Base 3.2 init scrip ii netbase 4.34 Basic TCP/IP networking system ii squid-common 2.7.STABLE3-4.1 Internet object cache (WWW proxy c squid recommends no packages. Versions of packages squid suggests: pn logcheck-database <none> (no description available) pn resolvconf <none> (no description available) ii smbclient 2:3.2.5-4 a LanManager-like simple client fo ii squid-cgi 2.7.STABLE3-4.1 Squid cache manager CGI program pn squidclient <none> (no description available) pn winbind <none> (no description available) -- debconf information: squid/fix_cachedir_perms: false squid/fix_lines: true
#! /bin/sh # # squid Startup script for the SQUID HTTP proxy-cache. # # Version: @(#)squid.rc 2.20 01-Oct-2001 miqu...@cistron.nl # ### BEGIN INIT INFO # Provides: squid # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Squid HTTP Proxy ### END INIT INFO DAEMON=/usr/sbin/squid LIB=/usr/lib/squid [ ! -f /etc/default/squid ] || . /etc/default/squid . /lib/lsb/init-functions PATH=/bin:/usr/bin:/sbin:/usr/sbin [ -x $DAEMON ] || exit 0 grepconf () { w=" " # space tab sq=/etc/squid/squid.conf # sed is cool. res=`sed -ne ' s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p; t end; d; :end q' < $sq` [ -n "$res" ] || res=$2 echo "$res" } grepconf2 () { w=" " # space tab sq=${SQUID_CONF} # sed is cool. res=`sed -ne ' s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p; t end; d; :end q' < $sq` [ -n "$res" ] || res=$2 echo "$res" } # # Try to increase the # of filedescriptors we can open. # maxfds () { [ -n "$SQUID_MAXFD" ] || return [ -f /proc/sys/fs/file-max ] || return 0 global_file_max=`cat /proc/sys/fs/file-max` minimal_file_max=$(($SQUID_MAXFD + 4096)) if [ "$global_file_max" -lt $minimal_file_max ] then echo $minimal_file_max > /proc/sys/fs/file-max fi ulimit -n $SQUID_MAXFD } start () { cdr=`grepconf2 cache_dir /var/spool/$NAME` ctp=`grepconf cache_dir ufs` case "$cdr" in [0-9]*) log_failure_msg "squid: squid.conf contains 2.2.5 syntax - not starting!" log_end_msg 1 exit 1 ;; esac # # Create spool dirs if they don't exist. # if [ -d "$cdr" -a ! -d "$cdr/00" ] || [ "$ctp" = "coss" -a ! -f "$cdr" ] then log_warning_msg "Creating squid cache structure" $DAEMON $SQUID_ARGS -z fi if [ "$CHUID" = "" ]; then CHUID=root fi maxfds umask 027 start-stop-daemon --quiet --start \ --pidfile $PIDFILE \ --chuid $CHUID \ --exec $DAEMON -- $SQUID_ARGS < /dev/null return $? } stop () { PID=`cat $PIDFILE 2>/dev/null` start-stop-daemon --stop --quiet --pidfile $PIDFILE --name squid # # Now we have to wait until squid has _really_ stopped. # sleep 2 if test -n "$PID" && kill -0 $PID 2>/dev/null then log_action_begin_msg " Waiting" cnt=0 while kill -0 $PID 2>/dev/null do cnt=`expr $cnt + 1` if [ $cnt -gt 24 ] then log_action_end_msg 1 return 1 fi sleep 5 log_action_cont_msg "" done log_action_end_msg 0 return 0 else return 0 fi } case "$1" in start) log_daemon_msg "Starting Squid HTTP proxy" "squid" if start ; then log_end_msg $? else log_end_msg $? fi ;; stop) log_daemon_msg "Stopping Squid HTTP proxy" "squid" if stop ; then log_end_msg $? else log_end_msg $? fi ;; reload|force-reload) log_action_msg "Reloading Squid configuration files" $DAEMON -k reconfigure log_action_end_msg 0 ;; restart) log_daemon_msg "Restarting Squid HTTP proxy" "squid" stop if start ; then log_end_msg $? else log_end_msg $? fi ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" squid && exit 0 || exit $? ;; *) echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}" exit 3 ;; esac exit 0