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