aboutsummaryrefslogtreecommitdiff
path: root/net/polipo/files/polipo.init
blob: 3cd73d49bd439e7a1c3f56260027b428f83b3aa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/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 ''
	}
}