#!/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 '' } }