diff options
Diffstat (limited to 'net/polipo/files/polipo.init')
-rw-r--r-- | net/polipo/files/polipo.init | 150 |
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 '' + } +} + |