packages/net/polipo/files/polipo.init
cyrus 3d510a6271 UCIfied Polipo (patch by "SnapShot_")
git-svn-id: svn://svn.openwrt.org/openwrt/packages@13128 3c298f89-4303-0410-b956-a3cf2f4a3e73
2008-11-05 21:32:04 +00:00

154 lines
3.9 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=99
DAEMON=/usr/sbin/polipo
CFGFILE=/var/etc/polipo.conf
start() {
config_load polipo
config_get_bool enabled "general" enabled
[ "$enabled" -ne "1" ] && {
echo 'Polipo is disabled.'
return 0
}
echo '### AUTOGENERATED CONFIGURATION' > $CFGFILE
echo '### DO NOT EDIT' >> $CFGFILE
echo '### SEE /etc/config/polipo INSTEAD' >> $CFGFILE
echo '' >> $CFGFILE
config_foreach polipo_config polipo
# handle values that are disabled when not defiend or empty
echo "### VALUES THAT ARE DISABLED WHEN EMPTY" >> $CFGFILE
polipo_atom "cache" "diskCacheRoot" '"' "1" >> $CFGFILE
polipo_atom "general" "logFile" '"' "1" >> $CFGFILE
polipo_atom "general" "localDocumentRoot" '"' "1" >> $CFGFILE
echo 'Polipo is starting...'
start-stop-daemon -S -q -x "$DAEMON" -- -c "$CFGFILE"
}
stop() {
echo 'Polipo is stopping...'
start-stop-daemon -K -q -x "$DAEMON"
rm -f $CFGFILE
}
restart() {
stop
sleep 2
start
}
polipo_config() {
echo "### SECTION $1" >> $CFGFILE
string_options='authCredentials authRealm dnsNameServer forbiddenFile
forbiddenUrl logFacility pidFile parentAuthCredentials parentProxy
proxyAddress proxyName redirector socksParentProxy socksProxyType
socksUserName uncachableFile'
number_options='bigBufferSize chunkCriticalMark chunkHighMark chunkLowMark
diskCacheDirectoryPermissions diskCacheFilePermissions
diskCacheTruncateSize diskCacheWriteoutOnClose forbiddenRedirectCode
logFilePermissions logLevel maxDiskCacheEntrySize maxDiskEntries
maxObjectsWhenIdle maxPipelineTrain maxSideBuffering maxWriteoutWhenIdle
objectHashTableSize objectHighMark pmmFirstSize pmmSize proxyPort
publicObjectLowMark redirectorRedirectCode replyUnpipelineSize
serverMaxSlots serverSlots serverSlots1 maxAgeFraction'
time_options='clientTimeout diskCacheTruncateTime diskCacheUnlinkTime
dnsGethostbynameTtl dnsMaxTimeout dnsNegativeTtl idleTime maxAge
maxConnectionAge maxConnectionRequests maxExpiresAge maxNoModifiedAge
replyUnpipelineTime serverExpireTime serverIdleTimeout serverTimeout
smallRequestTime'
multistate_options='censorReferer dnsQueryIPv6 dnsUseGethostbyname
dontTrustVaryETag expectContinue pipelineAdditionalRequests
useTemporarySourceAddress'
boolean_options='cacheIsShared daemonise disableConfiguration disableIndexing
disableLocalInterface disableProxy disableServersList disableVia
dontCacheCookies dontCacheRedirects logSyslog mindlesslyCacheVary
preciseExpiry proxyOffline scrubLogs laxHttpParser'
string_list_options='allowedClients censoredHeaders'
number_list_options='allowedPorts tunnelAllowedPorts'
for option in $string_options; do
polipo_atom "$1" "$option" '"' >> $CFGFILE
done
for option in $number_options; do
polipo_atom "$1" "$option" >> $CFGFILE
done
for option in $time_options; do
polipo_atom "$1" "$option" >> $CFGFILE
done
for option in $multistate_options; do
polipo_atom "$1" "$option" >> $CFGFILE
done
for option in $boolean_options; do
polipo_boolean "$1" "$option" >> $CFGFILE
done
for option in $string_list_options; do
polipo_list "$1" "$option" '"' >> $CFGFILE
done
for option in $number_list_options; do
polipo_list "$1" "$option" >> $CFGFILE
done
}
polipo_atom() {
local SECTION=$1
local OPTION=$2
local QUOTE=$3
local EMPTY_DISABLED=$4
config_get _value "$SECTION" "$OPTION"
[ -n "$_value" -o "$EMPTY_DISABLED" -eq "1" ] && {
echo "$OPTION = ${QUOTE}${_value}${QUOTE}"
}
}
polipo_boolean() {
local SECTION=$1
local OPTION=$2
config_get_bool _value "$SECTION" "$OPTION"
[ -n "$_value" ] && {
[ "$_value" -eq "1" ] && _value="true" || _value="false"
echo "$OPTION = $_value"
}
}
polipo_list() {
local SECTION=$1
local OPTION=$2
local QUOTE=$3
config_get _value "$SECTION" "$OPTION"
[ -n "$_value" ] && {
echo -n "$OPTION = "
local FIRST=1
for entry in $_value; do
[ "$FIRST" -ne "1" ] && echo -n ", " || FIRST=0
echo -n "${QUOTE}${entry}${QUOTE}"
done
echo ''
}
}