X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=squid.init;h=b09f17a2810312e40a256538ea8e1ef6e4cec825;hb=a24743573f262c97a875bf96f8ad82d2dd31ccc5;hp=1028b8669da0928b1f0f2ff9b6e6d98a46419456;hpb=ea334d7b19bb9a07ebbcc7a02d758249feca999e;p=packages%2Fsquid.git diff --git a/squid.init b/squid.init index 1028b86..b09f17a 100644 --- a/squid.init +++ b/squid.init @@ -3,7 +3,7 @@ # squid This shell script takes care of starting and stopping # Squid Internet Object Cache # -# chkconfig: 345 90 25 +# chkconfig: 345 90 10 # # description: Squid - Internet Object Cache. Internet object caching is \ # a way to store requested Internet objects (i.e., data \ @@ -12,6 +12,21 @@ # Web browsers can then use the local Squid cache as a proxy \ # HTTP server, reducing access time as well as bandwidth \ # consumption. +# description(es): Squid - Cache de Objetos de Internet. Cache de objetos \ +# es una manera de almacenar objetos Internet (i.e. Datos \ +# disponibles vía protocolos HTTP, FTP y gopher) en un \ +# sistema más próximo al site solicitador que el sistema \ +# original en internet. Navegadores www pueden usar el \ +# cache squid local como un servidor proxy HTTP, reduciendo \ +# tanto el tiempo de acceso así como el consumo de banda de \ +# comunicación. +# description(pt_BR): Squid - Cache de Objetos da Internet. Cache de objetos \ +# é uma maneira de armazenar objetos Internet (i.e. dados \ +# disponíveis via protocolos HTTP, FTP e gopher) em um \ +# sistema mais próximo ao site requisitante do que o sistema \ +# original na internet. Navegadores www podem usar o cache \ +# squid local como um servidor proxy HTTP, reduzindo o tempo \ +# de acesso bem como o consumo de banda de comunicação. # # pidfile: /var/run/squid.pid # config: /etc/squid/squid.conf @@ -27,68 +42,155 @@ [ -f /etc/sysconfig/squid ] && . /etc/sysconfig/squid # Check that networking is up. -if is_no "${NETWORKING}"; then - msg_network_down Squid - exit 1 +if is_yes "${NETWORKING}"; then + if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then + msg_network_down Squid + exit 1 + fi +else + exit 0 fi -# Sanity check -[ -f /etc/squid/squid.conf ] || exit 0 +# Set default shutdown timeout if it is not set in service config +SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-60} -# See how we were called. -case "$1" in - start) +# determine which one is the cache_swap directory +CACHE_SWAP=$(awk '/^cache_dir/{print $3}' /etc/squid/squid.conf) +[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/cache/squid + +check_cache_dirs() { + local need_init=0 dir + for dir in $CACHE_SWAP; do + if [ ! -d $dir/00 ]; then + need_init=1 + fi + done + if [ $need_init = 1 ]; then + show "Initializing Squid cache dirs" + squid -z -F -D >> /var/log/squid/squid.out 2>&1 && ok || fail + fi +} + +start() { # Check if the service is already running? if [ ! -f /var/lock/subsys/squid ]; then + check_cache_dirs msg_starting Squid - busy - daemon $SERVICE_RUN_NICE_LEVEL squid $SQUID_OPTS + daemon /usr/sbin/squid $SQUID_OPTS RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/squid else msg_already_running Squid fi - ;; - stop) - # Stop daemons. +} + +stop() { if [ -f /var/lock/subsys/squid ]; then - msg_stopping squid + # Stop daemons. + msg_stopping Squid killproc squid + + if [ -f /var/run/squid.pid ]; then + show "Waiting for Squid to stop" + busy + + timeout=0 + while : ; do + [ ! -f /var/run/squid.pid ] || break + if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then + RETVAL=1 + break + fi + sleep 1 && echo -n "." + timeout=$((timeout+1)) + done + ok + fi + rm -f /var/lock/subsys/squid >/dev/null 2>&1 else - msg_not_running squid - exit 1 + msg_not_running Squid fi - ;; - restart) - $0 stop - echo -n "Waiting 30 seconds..." - sleep 30 - echo "done." - $0 start - ;; - reload) +} + +# check that squid config is ok +configtest() { + show "Checking squid config syntax" + squid -k parse >> /var/log/squid/squid.out 2>&1 + RETVAL=$? + [ $RETVAL = 0 ] && ok || fail +} + +reload() { if [ -f /var/lock/subsys/squid ]; then - msg_reloading squid + msg_reloading Squid busy squid -k reconfigure - ok + RETVAL=$? + [ $RETVAL -ne 0 ] && RETVAL=7 + [ $RETVAL -eq 0 ] && ok || fail else - msg_not_running squid - exit 1 + msg_not_running Squid + exit 7 + fi +} + +restart() { + # if service is up, do configtest + if [ -f /var/lock/subsys/squid ]; then + configtest + if [ $RETVAL != 0 ]; then + exit 1 + fi fi - ;; + stop + start +} + +condrestart() { + # if service is up, do configtest + if [ -f /var/lock/subsys/squid ]; then + configtest + if [ $RETVAL != 0 ]; then + exit 1 + fi + stop + start + else + msg_not_running Squid + RETVAL=0 + fi +} + +RETVAL=0 +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + try-restart) + condrestart + ;; + reload|force-reload) + reload + ;; status) status squid exit $? ;; init) - echo "Initializing squid" - squid -z + show "Initializing Squid"; echo + check_cache_dirs ;; *) - msg_usage "$0 {start|stop|status|restart|reload|init}" - exit 1 + msg_usage "$0 {start|stop|init|restart|try-restart|reload|force-reload|status}" + exit 3 esac exit $RETVAL