43c31dc7d329207e6fb6d002cfbdac5f0d54468d
[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 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