ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/net/privoxy/files/privoxy.init b/external/subpack/net/privoxy/files/privoxy.init
new file mode 100644
index 0000000..ae493c2
--- /dev/null
+++ b/external/subpack/net/privoxy/files/privoxy.init
@@ -0,0 +1,180 @@
+#!/bin/sh /etc/rc.common
+
+START=95
+STOP=10
+
+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
+ config_cb() {
+ if [ ."$2" != ."privoxy" ]; then
+ option_cb() { return 0; }
+ else
+ 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
+ }
+
+ list_cb()
+ {
+ option_cb "$@"
+ }
+ fi
+ }
+
+ # 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
+
+ # 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
+
+ # 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
+
+ # 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() {
+ # wait a given time (default 10 seconds) before startup
+ # to wait for interfaces to come up / not using hotplug events during boot
+ _start() {
+ [ $1 -gt 0 ] && {
+ logger -p daemon.info -t "privoxy[]" "Scheduled startup in $1 seconds"
+ sleep $1
+ }
+ start
+ }
+
+ local _DELAY
+ _DELAY=$(uci_get "privoxy" "system" "boot_delay" "10")
+ _start $_DELAY &
+ return 0
+}
+
+shutdown() {
+ rm -f /tmp/privoxy.hotplug
+ stop
+}
+
+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
+ touch /tmp/privoxy.hotplug
+
+ # 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 /usr/sbin/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[$_tmp]" "Shutdown forced by KILL"
+ fi
+ return 0
+}