1 #!/bin/sh /etc/rc.common
6 PIDFILE
=/var
/run
/privoxy.pid
7 CFGFILE
=/var
/etc
/privoxy.conf
8 CFGTEMP
=/var
/etc
/privoxy.conf.tmp
11 # redefined callback for options when calling config_load
19 confdir|templdir|temporary_directory|logdir|logfile
)
20 # needs to be handled separately because we need to set permissions
21 # AND needs to be defined first because of a BUG inside privoxy
22 # require directories to be defined first inside config
25 [ $__VAL -eq 0 ] && return # not set ignore
26 echo -e "debug\t$(echo $__OPT | sed -e 's#debug_##g')" >> $CFGTEMP ;;
28 # detect list options (LENGTH) and ignore
29 echo $__OPT |
grep -i "_LENGTH" >/dev
/null
2>&1 && return
30 # detect list options (ITEM) and ignore
31 echo $__OPT |
grep -i "_ITEM" >/dev
/null
2>&1 && __OPT
=$
(echo $__OPT |
sed -e "s#_ITEM.##g")
32 # uci only accept "_" but we need "-"
33 local __OPT
=$
(echo $__OPT |
sed -e "s#_#-#g")
35 echo -e "$__OPT\t$__VAL" >> $CFGTEMP
40 # temporary config file
41 # privoxy need read access
42 mkdir
-m0755 -p /var
/etc
45 chgrp privoxy
$CFGTEMP
47 echo '### AUTO-GENERATED CONFIGURATION' >> $CFGTEMP
48 echo '### USED BY PRIVOXY' >> $CFGTEMP
49 echo '### DO NOT EDIT' >> $CFGTEMP
50 echo '### SEE /etc/config/privoxy INSTEAD' >> $CFGTEMP
54 # privoxy needs read access (possibly write access)
55 _CONFDIR
=$
(uci
-q get privoxy.privoxy.confdir
) || _CONFDIR
="/etc/privoxy"
58 chgrp privoxy
$_CONFDIR $_CONFDIR/*
59 echo -e "confdir\t$_CONFDIR" >> $CFGTEMP
62 # privoxy need read access
63 _TEMPLDIR
=$
(uci
-q get privoxy.privoxy.templdir
) # no default needed
64 if [ -z "$_TEMPLDIR" ]; then
65 chmod 755 $_CONFDIR/templates
66 chmod 644 $_CONFDIR/templates
/*
67 chgrp privoxy
$_CONFDIR/templates
$_CONFDIR/templates
/*
70 chmod 644 $_TEMPLDIR/*
71 chgrp privoxy
$_TEMPLDIR $_TEMPLDIR/*
72 echo -e "templdir\t$_TEMPLDIR" >> $CFGTEMP
76 # privoxy needs read/write access
77 _LOGDIR
=$
(uci
-q get privoxy.privoxy.logdir
) || _LOGDIR
="/var/log"
78 _LOGFILE
=$
(uci
-q get privoxy.privoxy.logfile
) || _LOGFILE
="privoxy.log"
79 mkdir
-m0755 -p $_LOGDIR
80 touch $_LOGDIR/$_LOGFILE
81 chmod 664 $_LOGDIR/$_LOGFILE
82 chown privoxy
:privoxy
$_LOGDIR/$_LOGFILE
83 echo -e "logdir\t$_LOGDIR" >> $CFGTEMP
84 echo -e "logfile\t$_LOGFILE" >> $CFGTEMP
87 # privoxy needs read/write access
88 _TMP_DIR
=$
(uci
-q get privoxy.privoxy.temporary_directory
) # no default needed
89 if [ -n "$_TMP_DIR" ]; then
90 mkdir
-m0750 -p $_TMP_DIR
91 chown privoxy
:privoxy
$_TMP_DIR
92 echo -e "temporary-directory\t$_TMP_DIR" >> $CFGTEMP
95 config_load privoxy
# calling above option_cb() and write the rest into $CFGTEMP
97 # move temp to final privoxy readable configuration
98 mv -f $CFGTEMP $CFGFILE
103 return 0 # will be started by "iface" hotplug events
107 # if already running do nothing
108 local _PID
=$
(cat $PIDFILE 2>/dev
/null
)
109 kill -1 $_PID 2>/dev
/null
&& return 0
112 /usr
/sbin
/privoxy
--pidfile $PIDFILE --user privoxy.privoxy
$CFGFILE
115 _PID
=$
(cat $PIDFILE 2>/dev
/null
)
116 kill -1 $_PID 2>/dev
/null
119 && logger
-p daemon.notice
-t "privoxy[$_PID]" "Started successfully"\
120 || logger
-p daemon.warn
-t "privoxy[-----]" "Failed to start"
125 # reload is also used by luci-app-privoxy
126 local _PID
=$
(cat $PIDFILE 2>/dev
/null
)
127 kill -1 $_PID 2>/dev
/null
128 if [ $?
-eq 0 ]; then
129 # only restart if already running
132 # only start if enabled
139 local _PID
=$
(cat $PIDFILE 2>/dev
/null
)
140 kill -15 $_PID 2>/dev
/null
141 sleep 1 # give time to shutdown
142 local _tmp
=$
(pgrep privoxy |
tr "\n" " ")
143 if [ -z "$_tmp" ]; then
144 logger
-p daemon.notice
-t "privoxy[$_PID]" "Shutdown successfully"
146 kill -9 $_tmp # Normally never come here
147 logger
-p daemon.warn
-t "privoxy[-----]" "Shutdown forced by KILL"