#!/bin/sh /etc/rc.common
|
|
|
|
START=80
|
|
STOP=20
|
|
|
|
PIDFILE=/var/run/privoxy.pid
|
|
CFGFILE=/var/etc/privoxy.conf
|
|
CFGTEMP=/var/etc/privoxy.conf.tmp
|
|
|
|
_uci2conf() {
|
|
# redefined callback for options when calling config_load
|
|
option_cb()
|
|
{
|
|
# $1 name of variable
|
|
# $2 value
|
|
local __OPT="$1"
|
|
local __VAL="$2"
|
|
case $__OPT in
|
|
confdir|templdir|temporary_directory|logdir|logfile)
|
|
# needs to be handled separately because we need to set permissions
|
|
# AND needs to be defined first because of a BUG inside privoxy
|
|
# require directories to be defined first inside config
|
|
;;
|
|
debug_*)
|
|
[ $__VAL -eq 0 ] && return # not set ignore
|
|
echo -e "debug\t$(echo $__OPT | sed -e 's#debug_##g')" >> $CFGTEMP ;;
|
|
*)
|
|
# detect list options (LENGTH) and ignore
|
|
echo $__OPT | grep -i "_LENGTH" >/dev/null 2>&1 && return
|
|
# detect list options (ITEM) and ignore
|
|
echo $__OPT | grep -i "_ITEM" >/dev/null 2>&1 && __OPT=$(echo $__OPT | sed -e "s#_ITEM.##g")
|
|
# uci only accept "_" but we need "-"
|
|
local __OPT=$(echo $__OPT | sed -e "s#_#-#g")
|
|
# write to config
|
|
echo -e "$__OPT\t$__VAL" >> $CFGTEMP
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# temporary config file
|
|
# privoxy need read access
|
|
mkdir -m0755 -p /var/etc
|
|
echo "" > $CFGTEMP
|
|
chmod 644 $CFGTEMP
|
|
chgrp privoxy $CFGTEMP
|
|
|
|
echo '### AUTO-GENERATED CONFIGURATION' >> $CFGTEMP
|
|
echo '### USED BY PRIVOXY' >> $CFGTEMP
|
|
echo '### DO NOT EDIT' >> $CFGTEMP
|
|
echo '### SEE /etc/config/privoxy INSTEAD' >> $CFGTEMP
|
|
echo '' >> $CFGTEMP
|
|
|
|
# confdir
|
|
# privoxy needs read access (possibly write access)
|
|
_CONFDIR=$(uci -q get privoxy.privoxy.confdir) || _CONFDIR="/etc/privoxy"
|
|
chmod 755 $_CONFDIR
|
|
chmod 664 $_CONFDIR/*
|
|
chgrp privoxy $_CONFDIR $_CONFDIR/*
|
|
echo -e "confdir\t$_CONFDIR" >> $CFGTEMP
|
|
|
|
# templdir
|
|
# privoxy need read access
|
|
_TEMPLDIR=$(uci -q get privoxy.privoxy.templdir) # no default needed
|
|
if [ -z "$_TEMPLDIR" ]; then
|
|
chmod 755 $_CONFDIR/templates
|
|
chmod 644 $_CONFDIR/templates/*
|
|
chgrp privoxy $_CONFDIR/templates $_CONFDIR/templates/*
|
|
else
|
|
chmod 755 $_TEMPLDIR
|
|
chmod 644 $_TEMPLDIR/*
|
|
chgrp privoxy $_TEMPLDIR $_TEMPLDIR/*
|
|
echo -e "templdir\t$_TEMPLDIR" >> $CFGTEMP
|
|
fi
|
|
|
|
# logdir and logfile
|
|
# privoxy needs read/write access
|
|
_LOGDIR=$(uci -q get privoxy.privoxy.logdir) || _LOGDIR="/var/log"
|
|
_LOGFILE=$(uci -q get privoxy.privoxy.logfile) || _LOGFILE="privoxy.log"
|
|
mkdir -m0755 -p $_LOGDIR
|
|
touch $_LOGDIR/$_LOGFILE
|
|
chmod 664 $_LOGDIR/$_LOGFILE
|
|
chown privoxy:privoxy $_LOGDIR/$_LOGFILE
|
|
echo -e "logdir\t$_LOGDIR" >> $CFGTEMP
|
|
echo -e "logfile\t$_LOGFILE" >> $CFGTEMP
|
|
|
|
# temporary-directory
|
|
# privoxy needs read/write access
|
|
_TMP_DIR=$(uci -q get privoxy.privoxy.temporary_directory) # no default needed
|
|
if [ -n "$_TMP_DIR" ]; then
|
|
mkdir -m0750 -p $_TMP_DIR
|
|
chown privoxy:privoxy $_TMP_DIR
|
|
echo -e "temporary-directory\t$_TMP_DIR" >> $CFGTEMP
|
|
fi
|
|
|
|
config_load privoxy # calling above option_cb() and write the rest into $CFGTEMP
|
|
|
|
# move temp to final privoxy readable configuration
|
|
mv -f $CFGTEMP $CFGFILE
|
|
return 0
|
|
}
|
|
|
|
boot() {
|
|
return 0 # will be started by "iface" hotplug events
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
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() {
|
|
local _PID=$(cat $PIDFILE 2>/dev/null)
|
|
kill -15 $_PID 2>/dev/null
|
|
sleep 1 # give time to shutdown
|
|
local _tmp=$(pgrep privoxy | tr "\n" " ")
|
|
if [ -z "$_tmp" ]; then
|
|
logger -p daemon.notice -t "privoxy[$_PID]" "Shutdown successfully"
|
|
else
|
|
kill -9 $_tmp # Normally never come here
|
|
logger -p daemon.warn -t "privoxy[-----]" "Shutdown forced by KILL"
|
|
fi
|
|
return 0
|
|
}
|