UCIfied Polipo (patch by "SnapShot_")
authorSteven Barth <cyrus@openwrt.org>
Wed, 5 Nov 2008 21:32:04 +0000 (21:32 +0000)
committerSteven Barth <cyrus@openwrt.org>
Wed, 5 Nov 2008 21:32:04 +0000 (21:32 +0000)
SVN-Revision: 13128

net/polipo/files/polipo.config
net/polipo/files/polipo.init

index 80e9940..8f85331 100644 (file)
@@ -1,5 +1,42 @@
-config polipo
-       option enabled       0
-       #option config_file  '/etc/polipo/config'
-       #option pid_file     '/var/run/polipo.pid'
+# polipo daemon configuration
+config 'polipo' 'daemon'
+       # daemonise polipo (fork in background)
+       option 'daemonise' '1'
+       # where polipo will store its process pid
+       option 'pidFile' '/var/run/polipo.pid'
+
+config 'polipo' 'general'
+       option 'enabled' '1'
+       # adress on which polipo will listen, 0.0.0.0 means all addresses
+       option 'proxyAddress' '0.0.0.0'
+       # port on which polipo will listen, default is 8123
+       #option 'proxyPort' '8123'
+       # list of allowed clients to connect
+       list 'allowedClients' '192.168.1.0/24'
+       #list 'allowedClients' '127.0.0.1'
+       #list 'allowedClients' '192.168.2.1'
+       # how much RAM memory should Polipo use (in bytes).
+       option 'chunkHighMark' '1048576'
+       # enable disk cache index and serverlist of integrated polipo web interface
+       #option 'disableIndexing' '0'
+       #option 'disableServersList' '0'
+       # disable loging to syslog 
+       option 'logSyslog' '0'
+       # set log file location (disabled when not set)
+       #option 'logFile' '/mnt/usbdrive/polipo/log'
+
+config 'polipo' 'cache'
+       # disk cache location, you should always use external storage device
+       # (disabled when not set)
+       #option 'diskCacheRoot' '/mnt/usbdrive-p2/polipo/cache'
+       # disk cache cleanup settings
+       #option 'diskCacheUnlinkTime' '20d'
+       #option 'diskCacheTruncateTime' '5d'
+       #option 'diskCacheTruncateSize' '3145728'
+       # set to 1 if proxy is used by multiple users
+       #option 'cacheIsShared' '1'
+
+config 'polipo' 'pmm'
+       # poor man's multiplexing semgnet size to fetch
+       #option 'pmmSize' '8192'
 
index 4eac9c7..43c31dc 100644 (file)
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2007 OpenWrt.org
-
+# Copyright (C) 2008 OpenWrt.org
 START=99
 
-NAME=polipo
-BIN_F=/usr/sbin/$NAME
-SSD=start-stop-daemon
+DAEMON=/usr/sbin/polipo
+CFGFILE=/var/etc/polipo.conf
 
-is_enabled() {
-       local cfg="$1"
+start() {
+       config_load polipo
 
-       config_get_bool enabled "$cfg" enabled '1'
-       [ $enabled -ne 0 ] || {
-               echo "$initscript: not enabled"
-               return 1
+       config_get_bool enabled "general" enabled
+       [ "$enabled" -ne "1" ] && {
+               echo 'Polipo is disabled.'
+               return 0
        }
+       
+       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 defiend 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
+       
+       echo 'Polipo is starting...'
+       start-stop-daemon -S -q -x "$DAEMON" -- -c "$CFGFILE"
 }
 
-get_pid_file() {
-       local cfg="$1"
-
-       config_get pid_file "$cfg" pid-file
-       [ -n "$pid_file" ] || pid_file="/var/run/$NAME.pid"
+stop() {
+       echo 'Polipo is stopping...'
+       start-stop-daemon -K -q -x "$DAEMON"
+       rm -f $CFGFILE
 }
 
-get_options() {
-       local cfg="$1"
-
-       config_get options "$cfg" options
-
-       config_get config_file "$cfg" config_file
-       [ -n "$config_script" ] && append options "-c $config_file"
+restart() {
+       stop
+       sleep 2
+       start
 }
 
-start_service() {
-       local cfg="$1"
-
-       is_enabled "$cfg" || return
-       get_pid_file "$cfg"
-       get_options "$cfg"
-
-       $SSD -S -p $pid_file -b -m -x $BIN_F -- $options &>/dev/null
+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'
+
+       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
 }
 
-stop_service() {
-       local cfg="$1"
+polipo_atom() {
+       local SECTION=$1
+       local OPTION=$2
+       local QUOTE=$3
+       local EMPTY_DISABLED=$4
 
-       is_enabled "$cfg" || return
-       get_pid_file "$cfg"
-
-       $SSD -K -p $pid_file &>/dev/null
+       config_get _value "$SECTION" "$OPTION"
+       [ -n "$_value" -o "$EMPTY_DISABLED" -eq "1" ] && {
+               echo "$OPTION = ${QUOTE}${_value}${QUOTE}"
+       }
 }
 
-start() {
-       config_load $NAME
-       config_foreach start_service $NAME
+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"
+       }
 }
 
-stop() {
-       config_load $NAME
-       config_foreach stop_service $NAME
+polipo_list() {
+       local SECTION=$1
+       local OPTION=$2
+       local QUOTE=$3
+
+       config_get _value "$SECTION" "$OPTION"
+       [ -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 ''
+       }
 }