UCIfied Polipo (patch by "SnapShot_")
[packages.git] / net / polipo / files / polipo.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008 OpenWrt.org
3 START=99
4
5 DAEMON=/usr/sbin/polipo
6 CFGFILE=/var/etc/polipo.conf
7
8 start() {
9         config_load polipo
10
11         config_get_bool enabled "general" enabled
12         [ "$enabled" -ne "1" ] && {
13                 echo 'Polipo is disabled.'
14                 return 0
15         }
16         
17         echo '### AUTOGENERATED CONFIGURATION' > $CFGFILE
18         echo '### DO NOT EDIT' >> $CFGFILE
19         echo '### SEE /etc/config/polipo INSTEAD' >> $CFGFILE
20         echo '' >> $CFGFILE
21
22         config_foreach polipo_config polipo
23         
24         # handle values that are disabled when not defiend or empty
25         echo "### VALUES THAT ARE DISABLED WHEN EMPTY" >> $CFGFILE
26         polipo_atom "cache" "diskCacheRoot" '"' "1" >> $CFGFILE
27         polipo_atom "general" "logFile" '"' "1" >> $CFGFILE
28         polipo_atom "general" "localDocumentRoot" '"' "1" >> $CFGFILE
29         
30         echo 'Polipo is starting...'
31         start-stop-daemon -S -q -x "$DAEMON" -- -c "$CFGFILE"
32 }
33
34 stop() {
35         echo 'Polipo is stopping...'
36         start-stop-daemon -K -q -x "$DAEMON"
37         rm -f $CFGFILE
38 }
39
40 restart() {
41         stop
42         sleep 2
43         start
44 }
45
46 polipo_config() {
47         echo "### SECTION $1" >> $CFGFILE
48
49         string_options='authCredentials authRealm dnsNameServer forbiddenFile
50                 forbiddenUrl logFacility pidFile parentAuthCredentials parentProxy
51                 proxyAddress proxyName redirector socksParentProxy socksProxyType
52                 socksUserName uncachableFile'
53
54         number_options='bigBufferSize chunkCriticalMark chunkHighMark chunkLowMark
55                 diskCacheDirectoryPermissions diskCacheFilePermissions
56                 diskCacheTruncateSize diskCacheWriteoutOnClose forbiddenRedirectCode
57                 logFilePermissions logLevel maxDiskCacheEntrySize maxDiskEntries
58                 maxObjectsWhenIdle maxPipelineTrain maxSideBuffering maxWriteoutWhenIdle
59                 objectHashTableSize objectHighMark pmmFirstSize pmmSize proxyPort
60                 publicObjectLowMark redirectorRedirectCode replyUnpipelineSize
61                 serverMaxSlots serverSlots serverSlots1 maxAgeFraction'
62
63         time_options='clientTimeout diskCacheTruncateTime diskCacheUnlinkTime
64                 dnsGethostbynameTtl dnsMaxTimeout dnsNegativeTtl idleTime maxAge
65                 maxConnectionAge maxConnectionRequests maxExpiresAge maxNoModifiedAge
66                 replyUnpipelineTime serverExpireTime serverIdleTimeout serverTimeout
67                 smallRequestTime'
68
69         multistate_options='censorReferer dnsQueryIPv6 dnsUseGethostbyname
70                 dontTrustVaryETag expectContinue pipelineAdditionalRequests
71                 useTemporarySourceAddress'
72
73         boolean_options='cacheIsShared daemonise disableConfiguration disableIndexing
74                 disableLocalInterface disableProxy disableServersList disableVia
75                 dontCacheCookies dontCacheRedirects logSyslog mindlesslyCacheVary
76                 preciseExpiry proxyOffline scrubLogs laxHttpParser'
77
78         string_list_options='allowedClients censoredHeaders'
79
80         number_list_options='allowedPorts tunnelAllowedPorts'
81
82         for option in $string_options; do
83                 polipo_atom "$1" "$option" '"' >> $CFGFILE
84         done
85
86         for option in $number_options; do
87                 polipo_atom "$1" "$option" >> $CFGFILE
88         done
89
90         for option in $time_options; do
91                 polipo_atom "$1" "$option" >> $CFGFILE
92         done
93         
94         for option in $multistate_options; do
95                 polipo_atom "$1" "$option" >> $CFGFILE
96         done
97
98         for option in $boolean_options; do
99                 polipo_boolean "$1" "$option" >> $CFGFILE
100         done
101
102         for option in $string_list_options; do
103                 polipo_list "$1" "$option" '"' >> $CFGFILE
104         done
105         
106         for option in $number_list_options; do
107                 polipo_list "$1" "$option" >> $CFGFILE
108         done
109 }
110
111 polipo_atom() {
112         local SECTION=$1
113         local OPTION=$2
114         local QUOTE=$3
115         local EMPTY_DISABLED=$4
116
117         config_get _value "$SECTION" "$OPTION"
118         [ -n "$_value" -o "$EMPTY_DISABLED" -eq "1" ] && {
119                 echo "$OPTION = ${QUOTE}${_value}${QUOTE}"
120         }
121 }
122
123 polipo_boolean() {
124         local SECTION=$1
125         local OPTION=$2
126
127         config_get_bool _value "$SECTION" "$OPTION"
128         [ -n "$_value" ] && {
129                 [ "$_value" -eq "1" ] && _value="true" || _value="false"
130                 echo "$OPTION = $_value"
131         }
132 }
133
134 polipo_list() {
135         local SECTION=$1
136         local OPTION=$2
137         local QUOTE=$3
138
139         config_get _value "$SECTION" "$OPTION"
140         [ -n "$_value" ] && {
141                 echo -n "$OPTION = "
142                 
143                 local FIRST=1
144                 for entry in $_value; do
145                         [ "$FIRST" -ne "1" ] && echo -n ", " || FIRST=0
146                         
147                         echo -n "${QUOTE}${entry}${QUOTE}"
148                 done
149                 
150                 echo ''
151         }
152 }
153