|
|
@ -1,7 +1,7 @@ |
|
|
|
#!/bin/sh /etc/rc.common |
|
|
|
|
|
|
|
START=80 |
|
|
|
USE_PROCD=1 |
|
|
|
STOP=20 |
|
|
|
|
|
|
|
PIDFILE=/var/run/privoxy.pid |
|
|
|
CFGFILE=/var/etc/privoxy.conf |
|
|
@ -68,57 +68,52 @@ _uci2conf() { |
|
|
|
mv -f $CFGTEMP $CFGFILE |
|
|
|
} |
|
|
|
|
|
|
|
# privoxy should auto-reload it's configuration |
|
|
|
# but it only reload on next connect to one of the listen_address |
|
|
|
# if we create a new listen_address privoxy never reload |
|
|
|
reload_service() { |
|
|
|
# so we restart here because rc.common reload_service only start without stopping |
|
|
|
restart "$@" |
|
|
|
|
|
|
|
# the following should normally work but see above |
|
|
|
# _uci2conf # convert uci config |
|
|
|
boot() { |
|
|
|
return 0 # will be started by "iface" hotplug events |
|
|
|
} |
|
|
|
|
|
|
|
service_triggers() { |
|
|
|
procd_add_reload_trigger "privoxy" |
|
|
|
start() { |
|
|
|
# if already running do nothing |
|
|
|
local _PID=$(cat $PIDFILE 2>/dev/null) |
|
|
|
kill -1 $_PID 2>/dev/null && return 0 |
|
|
|
|
|
|
|
_uci2conf |
|
|
|
/usr/sbin/privoxy --pidfile $PIDFILE --user privoxy.privoxy $CFGFILE |
|
|
|
|
|
|
|
# verify startup |
|
|
|
_PID=$(cat $PIDFILE 2>/dev/null) |
|
|
|
kill -1 $_PID 2>/dev/null |
|
|
|
local _ERR=$? |
|
|
|
[ $_ERR -eq 0 ] \ |
|
|
|
&& logger -p daemon.notice -t "privoxy[$_PID]" "Started successfully"\ |
|
|
|
|| logger -p daemon.warn -t "privoxy[-----]" "Failed to start" |
|
|
|
return $_ERR |
|
|
|
} |
|
|
|
|
|
|
|
start_service() { |
|
|
|
# redefined callback for sections when calling config_load |
|
|
|
config_cb() { |
|
|
|
# $1 type of config section |
|
|
|
# $2 name of section |
|
|
|
[ "$1" = "interface" ] && \ |
|
|
|
procd_add_interface_trigger interface.* $2 /etc/init.d/privoxy restart |
|
|
|
} |
|
|
|
|
|
|
|
_uci2conf # convert uci config |
|
|
|
|
|
|
|
procd_open_instance |
|
|
|
|
|
|
|
procd_set_param command /usr/sbin/privoxy |
|
|
|
procd_append_param command --no-daemon # for procd run in foreground |
|
|
|
procd_append_param command --pidfile $PIDFILE # set pid file |
|
|
|
procd_append_param command --user privoxy.privoxy # set user |
|
|
|
procd_append_param command $CFGFILE # config file |
|
|
|
|
|
|
|
procd_set_param file $CFGFILE # set configration file |
|
|
|
|
|
|
|
procd_open_trigger # we need a restart on interface events not a reload |
|
|
|
config_load network # load network configuration and set trigger(s) in config_cb() above |
|
|
|
procd_close_trigger |
|
|
|
|
|
|
|
procd_close_instance |
|
|
|
} |
|
|
|
|
|
|
|
service_running() { |
|
|
|
logger_trick() { |
|
|
|
sleep 1 # give privoxy time to completely come up |
|
|
|
logger -p daemon.notice -t "privoxy[$(cat $PIDFILE)]" "Service started successfully" |
|
|
|
} |
|
|
|
logger_trick & |
|
|
|
reload() { |
|
|
|
# reload is also used by luci-app-privoxy |
|
|
|
local _PID=$(cat $PIDFILE 2>/dev/null) |
|
|
|
kill -1 $_PID 2>/dev/null |
|
|
|
if [ $? -eq 0 ]; then |
|
|
|
# only restart if already running |
|
|
|
restart |
|
|
|
else |
|
|
|
# only start if enabled |
|
|
|
enabled && start |
|
|
|
fi |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
stop_service() { |
|
|
|
logger -p daemon.notice -t "privoxy[$(cat $PIDFILE)]" "Service shutdown" |
|
|
|
stop() { |
|
|
|
local _PID=$(cat $PIDFILE 2>/dev/null) |
|
|
|
kill -15 $_PID 2>/dev/null |
|
|
|
sleep 1 # give time to shutdown |
|
|
|
local _tmp=$(pgrep privoxy) |
|
|
|
if [ -z "$_tmp" ]; then |
|
|
|
logger -p daemon.notice -t "privoxy[$_PID]" "Shutdown successfully" |
|
|
|
else |
|
|
|
killall -9 privoxy |
|
|
|
logger -p daemon.warn -t "privoxy[-----]" "Shutdown forced by KILL" |
|
|
|
fi |
|
|
|
return 0 |
|
|
|
} |