|
|
@ -0,0 +1,150 @@ |
|
|
|
#!/bin/sh /etc/rc.common |
|
|
|
# Copyright (C) 2008-2011 OpenWrt.org |
|
|
|
|
|
|
|
START=99 |
|
|
|
|
|
|
|
CFGFILE=/var/etc/polipo.conf |
|
|
|
|
|
|
|
start() { |
|
|
|
config_load 'polipo' |
|
|
|
|
|
|
|
config_get_bool enabled "general" 'enabled' '0' |
|
|
|
[ $enabled -gt 0 ] || return 1 |
|
|
|
|
|
|
|
mkdir -m 0755 -p /var/etc/ |
|
|
|
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 defined 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 |
|
|
|
|
|
|
|
service_start /usr/sbin/polipo -c "$CFGFILE" |
|
|
|
} |
|
|
|
|
|
|
|
stop() { |
|
|
|
service_stop /usr/sbin/polipo -c "$CFGFILE" |
|
|
|
} |
|
|
|
|
|
|
|
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 relaxTransparency' |
|
|
|
|
|
|
|
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:-0} |
|
|
|
|
|
|
|
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" |
|
|
|
|
|
|
|
[ "$SECTION" = general ] && [ "$OPTION" = allowedClients ] && { |
|
|
|
case "$_value" in |
|
|
|
*127.0.0.1*) : ;; |
|
|
|
*) _value="127.0.0.1 $_value" ;; |
|
|
|
esac |
|
|
|
} |
|
|
|
|
|
|
|
[ -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 '' |
|
|
|
} |
|
|
|
} |
|
|
|
|