aboutsummaryrefslogtreecommitdiff
path: root/net/polipo/files/polipo.init
diff options
context:
space:
mode:
Diffstat (limited to 'net/polipo/files/polipo.init')
-rw-r--r--net/polipo/files/polipo.init150
1 files changed, 150 insertions, 0 deletions
diff --git a/net/polipo/files/polipo.init b/net/polipo/files/polipo.init
new file mode 100644
index 000000000..3cd73d49b
--- /dev/null
+++ b/net/polipo/files/polipo.init
@@ -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 ''
+ }
+}
+