lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

privoxy.init (4774B)


      1 #!/bin/sh /etc/rc.common
      2 
      3 START=95
      4 STOP=10
      5 
      6 PIDFILE=/var/run/privoxy.pid
      7 CFGFILE=/var/etc/privoxy.conf
      8 CFGTEMP=/var/etc/privoxy.conf.tmp
      9 
     10 _uci2conf() {
     11 	# redefined callback for options when calling config_load
     12 	config_cb() {
     13 		if [ ."$2" != ."privoxy" ]; then
     14 			option_cb() { return 0; }
     15 		else
     16 			option_cb()
     17 			{
     18 				# $1	name of variable
     19 				# $2	value
     20 				local __OPT="$1"
     21 				local __VAL="$2"
     22 				case $__OPT in
     23 					confdir|templdir|temporary_directory|logdir|logfile)
     24 						# needs to be handled separately because we need to set permissions
     25 						# AND needs to be defined first because of a BUG inside privoxy
     26 						# require directories to be defined first inside config 
     27 						;;
     28 					debug_*)
     29 						[ $__VAL -eq 0 ] && return	# not set ignore
     30 						echo -e "debug\t$(echo $__OPT | sed -e 's#debug_##g')" >> $CFGTEMP ;;
     31 					*)
     32 						# detect list options (LENGTH) and ignore
     33 						echo $__OPT | grep -i "_LENGTH" >/dev/null 2>&1 && return
     34 						# detect list options (ITEM) and ignore
     35 						echo $__OPT | grep -i "_ITEM" >/dev/null 2>&1 && __OPT=$(echo $__OPT | sed -e "s#_ITEM.*##g")
     36 						# uci only accept "_" but we need "-"
     37 						local __OPT=$(echo $__OPT | sed -e "s#_#-#g")
     38 						# write to config
     39 						echo -e "$__OPT\t$__VAL" >> $CFGTEMP
     40 						;;
     41 				esac
     42 			}
     43 		fi
     44 	}
     45 
     46 	# temporary config file
     47 	# privoxy need read access
     48 	mkdir -m0755 -p /var/etc
     49 	echo "" > $CFGTEMP
     50 	chmod 644 $CFGTEMP
     51 	chgrp privoxy $CFGTEMP
     52 
     53 	echo '### AUTO-GENERATED CONFIGURATION'	   >> $CFGTEMP
     54 	echo '### USED BY PRIVOXY'		   >> $CFGTEMP
     55 	echo '### DO NOT EDIT'			   >> $CFGTEMP
     56 	echo '### SEE /etc/config/privoxy INSTEAD' >> $CFGTEMP
     57 	echo ''					   >> $CFGTEMP
     58 
     59 	# logdir and logfile
     60 	# privoxy needs read/write access
     61 	_LOGDIR=$(uci -q get privoxy.privoxy.logdir)   || _LOGDIR="/var/log"
     62 	_LOGFILE=$(uci -q get privoxy.privoxy.logfile) || _LOGFILE="privoxy.log"
     63 	mkdir -m0755 -p $_LOGDIR
     64 	touch $_LOGDIR/$_LOGFILE
     65 	chmod 664 $_LOGDIR/$_LOGFILE
     66 	chown privoxy:privoxy $_LOGDIR/$_LOGFILE
     67 	echo -e "logdir\t$_LOGDIR" >> $CFGTEMP
     68 	echo -e "logfile\t$_LOGFILE" >> $CFGTEMP
     69 
     70 	# confdir
     71 	# privoxy needs read access (possibly write access)
     72 	_CONFDIR=$(uci -q get privoxy.privoxy.confdir) || _CONFDIR="/etc/privoxy"
     73 	chmod 755 $_CONFDIR
     74 	chmod 664 $_CONFDIR/*
     75 	chgrp privoxy $_CONFDIR $_CONFDIR/*
     76 	echo -e "confdir\t$_CONFDIR" >> $CFGTEMP
     77 
     78 	# templdir
     79 	# privoxy need read access
     80 	_TEMPLDIR=$(uci -q get privoxy.privoxy.templdir)	# no default needed
     81 	if [ -z "$_TEMPLDIR" ]; then
     82 		chmod 755 $_CONFDIR/templates
     83 		chmod 644 $_CONFDIR/templates/*
     84 		chgrp privoxy $_CONFDIR/templates $_CONFDIR/templates/*
     85 	else
     86 		chmod 755 $_TEMPLDIR
     87 		chmod 644 $_TEMPLDIR/*
     88 		chgrp privoxy $_TEMPLDIR $_TEMPLDIR/*
     89 		echo -e "templdir\t$_TEMPLDIR" >> $CFGTEMP
     90 	fi
     91 
     92 	# temporary-directory
     93 	# privoxy needs read/write access
     94 	_TMP_DIR=$(uci -q get privoxy.privoxy.temporary_directory)	# no default needed
     95 	if [ -n "$_TMP_DIR" ]; then
     96 		mkdir -m0750 -p $_TMP_DIR
     97 		chown privoxy:privoxy $_TMP_DIR
     98 		echo -e "temporary-directory\t$_TMP_DIR" >> $CFGTEMP
     99 	fi
    100 
    101 	config_load "privoxy"	# calling above option_cb() and write the rest into $CFGTEMP
    102 
    103 	# move temp to final privoxy readable configuration
    104 	mv -f $CFGTEMP $CFGFILE
    105 	return 0
    106 }
    107 
    108 boot() {
    109 	# wait a given time (default 10 seconds) before startup
    110 	# to wait for interfaces to come up / not using hotplug events during boot
    111 	_start() {
    112 		[ $1 -gt 0 ] && {
    113 			logger -p daemon.info -t "privoxy[]" "Scheduled startup in $1 seconds"
    114 			sleep $1
    115 		}
    116 		start
    117 	}
    118 
    119 	local _DELAY
    120 	_DELAY=$(uci_get "privoxy" "system" "boot_delay" "10")
    121 	_start $_DELAY &
    122 	return 0
    123 }
    124 
    125 shutdown() {
    126 	rm -f /tmp/privoxy.hotplug
    127 	stop
    128 }
    129 
    130 start() {
    131 	# if already running do nothing
    132 	local _PID=$(cat $PIDFILE 2>/dev/null)
    133 	kill -1 $_PID 2>/dev/null && return 0
    134 
    135 	_uci2conf
    136 	/usr/sbin/privoxy --pidfile $PIDFILE --user privoxy.privoxy $CFGFILE
    137 	touch /tmp/privoxy.hotplug
    138 
    139 	# verify startup
    140 	_PID=$(cat $PIDFILE 2>/dev/null)
    141 	kill -1 $_PID 2>/dev/null
    142 	local _ERR=$?
    143 	[ $_ERR -eq 0 ] \
    144 		&& logger -p daemon.notice -t "privoxy[$_PID]" "Started successfully"\
    145 		|| logger -p daemon.warn -t "privoxy[]" "Failed to start"
    146 	return $_ERR
    147 }
    148 
    149 reload() {
    150 	# reload is also used by luci-app-privoxy
    151 	local _PID=$(cat $PIDFILE 2>/dev/null)
    152 	kill -1 $_PID 2>/dev/null
    153 	if [ $? -eq 0 ]; then
    154 		# only restart if already running
    155 		restart
    156 	else
    157 		# only start if enabled
    158 		enabled && start
    159 	fi
    160 	return 0
    161 }
    162 
    163 stop() {
    164 	local _PID=$(cat $PIDFILE 2>/dev/null)
    165 	kill -15 $_PID 2>/dev/null
    166 	sleep 1			# give time to shutdown
    167 	local _tmp=$(pgrep privoxy | tr "\n" " ")
    168 	if [ -z "$_tmp" ]; then
    169 		logger -p daemon.notice -t "privoxy[$_PID]" "Shutdown successfully"
    170 	else
    171 		kill -9 $_tmp	# Normally never come here
    172 		logger -p daemon.warn -t "privoxy[$_tmp]" "Shutdown forced by KILL"
    173 	fi
    174 	return 0
    175 }