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