aboutsummaryrefslogtreecommitdiff
path: root/net/tinyproxy/files/tinyproxy.init
blob: 4afdae6aa22cce4fe8b04e77af1e8cec2112dc13 (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
151
152
153
154
155
156
157
158
#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2011 OpenWrt.org

START=50
USE_PROCD=1

CFGFILE=/var/etc/tinyproxy.conf
PROG=/usr/bin/tinyproxy

section_enabled() {
	local enabled
	config_get_bool enabled "$1" 'enabled' 0
	[ "$enabled" -gt 0 ]
}

write_upstream() {
	local type
	local via
	local target

	config_get "type" "$1" "type"
	config_get via "$1" via
	config_get target "$1" target
	[ -n "$target" ] && target=' "'"$target"'"'

	[ "$type" = "proxy" ] && [ -n "$via" ] && \
		echo "upstream $via$target"

	[ "$type" = "reject" ] && [ -n "$target" ] && \
		echo "no upstream$target"
}

proxy_atom() {
	local SECTION=$1
	local OPTION=$2
	local DEFAULT=$3

	config_get _value "$SECTION" "$OPTION"
	[ -z "$_value" ] && _value="$DEFAULT"
	[ -n "$_value" ] && echo "$OPTION $_value"
}

proxy_string() {
	local SECTION=$1
	local OPTION=$2
	local ALIAS=$3
	local DEFAULT=$4

	config_get _value "$SECTION" "$OPTION"
	[ -z "$_value" ] && _value="$DEFAULT"
	[ -n "$_value" ] && echo "${ALIAS:-${OPTION}} "'"'"$_value"'"'
	[ -n "$_value" ] && [ "$OPTION" = "LogFile" ] && {
		touch "$_value"
		chmod 666 "$_value"
	}
}

proxy_m_string() {
	local SECTION=$1
	local OPTION=$2

	config_get _value "$SECTION" "$OPTION"
	[ -n "$_value" ] && echo "${ALIAS:-${OPTION}} ""$_value"
}

proxy_flag() {
	local SECTION=$1
	local OPTION=$2
	local TRUE="${3:-On}"
	local FALSE="${4:-Off}"

	config_get_bool _value "$SECTION" "$OPTION" 0
	[ "$_value" -eq "1" ] && _value="$TRUE" || _value="$FALSE"
	echo "$OPTION $_value"
}

proxy_list() {
	local SECTION=$1
	local OPTION=$2
	local ENCLOSE=$3

	config_get _value "$SECTION" "$OPTION"
	[ -n "$_value" ] && {
		for entry in $_value; do
			echo "$OPTION ${ENCLOSE}${entry}${ENCLOSE}"
		done
	}
}

start_proxy() {
	section_enabled "$1" || return 1

	mkdir -p /var/etc
	chmod 0755 /var/etc
	{
	echo '### AUTOGENERATED CONFIGURATION'
	echo '### DO NOT EDIT'
	echo '### SEE /etc/config/tinyproxy INSTEAD'
	echo ''

	proxy_atom "$1" User
	proxy_atom "$1" Group
	proxy_atom "$1" Port 8888
	proxy_atom "$1" Listen
	proxy_atom "$1" Bind
	proxy_atom "$1" Timeout

	proxy_string "$1" ErrorFile_400 "ErrorFile 400"
	proxy_string "$1" ErrorFile_403 "ErrorFile 403"
	proxy_string "$1" ErrorFile_404 "ErrorFile 404"
	proxy_string "$1" ErrorFile_408 "ErrorFile 408"
	proxy_string "$1" ErrorFile_503 "ErrorFile 503"

	proxy_string "$1" DefaultErrorFile
	proxy_string "$1" StatHost StatHost 127.0.0.1
	proxy_string "$1" StatFile
	proxy_string "$1" LogFile

	proxy_m_string "$1" BasicAuth

	proxy_flag "$1" Syslog

	proxy_atom "$1" LogLevel

	proxy_flag "$1" XTinyproxy

	proxy_atom "$1" MaxClients
	proxy_atom "$1" MinSpareServers
	proxy_atom "$1" MaxSpareServers
	proxy_atom "$1" StartServers
	proxy_atom "$1" MaxRequestsPerChild
	proxy_list "$1" Allow

	proxy_string "$1" ViaProxyName
	proxy_string "$1" Filter

	proxy_flag "$1" FilterURLs
	proxy_flag "$1" FilterExtended
	proxy_flag "$1" FilterCaseSensitive
	proxy_flag "$1" FilterDefaultDeny Yes No

	proxy_list "$1" Anonymous '"'
	proxy_list "$1" ConnectPort

	config_foreach write_upstream upstream
	} > "$CFGFILE"

	procd_open_instance
	procd_set_param command "$PROG"
	procd_append_param command -c "$CFGFILE"
	procd_append_param command -d
	procd_close_instance
}

start_service() {
	config_load 'tinyproxy'
	config_foreach start_proxy 'tinyproxy'
}