blob: 1feac669c3d1433ed78404e8a72f0740e4822c2e (
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
|
#!/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_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_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'
}
|