squid.init (1695B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2015 OpenWrt.org 3 4 START=90 5 STOP=10 6 7 USE_PROCD=1 8 PROG=/usr/sbin/squid 9 CONFIGFILE="/tmp/squid/squid.conf" 10 11 validate_squid_section() { 12 uci_validate_section squid squid "${1}" \ 13 'config_file:string' \ 14 'http_port:port:3128' \ 15 'http_port_options:string' \ 16 'ssldb:string' \ 17 'ssldb_options:string' \ 18 'coredump_dir:string' \ 19 'visible_hostname:string:OpenWrt' \ 20 'pinger_enable:string:off' 21 } 22 23 start_service() { 24 local config_file http_port http_port_options ssldb ssldb_options coredump_dir visible_hostname pinger_enable 25 26 validate_squid_section squid || { 27 echo "validation failed" 28 return 1 29 } 30 31 config_dir=$(dirname $CONFIGFILE) 32 [ -d $config_dir ] || mkdir -p $config_dir && chown nobody:nogroup $config_dir 33 [ -d $coredump_dir ] || mkdir -p $coredump_dir && chown nobody:nogroup $coredump_dir 34 [ "$ssldb" ] && ( [ -f "$ssldb"/size ] || /usr/lib/squid/ssl_crtd -c -s $ssldb && chown -R nobody:nogroup $ssldb ) 35 36 cat $config_file > $CONFIGFILE 37 echo http_port $http_port $http_port_options >> $CONFIGFILE 38 echo coredump_dir $coredump_dir >> $CONFIGFILE 39 echo visible_hostname $visible_hostname >> $CONFIGFILE 40 echo pinger_enable $pinger_enable >> $CONFIGFILE 41 [ "$ssldb" ] && echo sslcrtd_program /usr/lib/squid/ssl_crtd -s $ssldb $ssldb_options >> $CONFIGFILE 42 $PROG -s -f $CONFIGFILE -N -z 2>/dev/null 43 44 procd_open_instance 45 procd_set_param command $PROG -s -f $CONFIGFILE -N 46 procd_set_param file $CONFIGFILE 47 procd_set_param respawn 48 procd_close_instance 49 } 50 51 stop_service() 52 { 53 ${PROG} -f $CONFIGFILE -N -k shutdown 2>/dev/null 54 } 55 56 service_triggers() 57 { 58 procd_add_reload_trigger "squid" 59 procd_add_validation validate_squid_section 60 }