Merge pull request #20731 from pprindeville/isc-dhcp-update-4.4.3-P1
[feed/packages.git] / net / tinyproxy / files / tinyproxy.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008-2011 OpenWrt.org
3
4 START=50
5 USE_PROCD=1
6
7 CFGFILE=/var/etc/tinyproxy.conf
8 PROG=/usr/bin/tinyproxy
9
10 section_enabled() {
11 local enabled
12 config_get_bool enabled "$1" 'enabled' 0
13 [ "$enabled" -gt 0 ]
14 }
15
16 write_upstream() {
17 local type
18 local via
19 local target
20
21 config_get "type" "$1" "type"
22 config_get via "$1" via
23 config_get target "$1" target
24 [ -n "$target" ] && target=' "'"$target"'"'
25
26 [ "$type" = "proxy" ] && [ -n "$via" ] && \
27 echo "upstream $via$target"
28
29 [ "$type" = "reject" ] && [ -n "$target" ] && \
30 echo "no upstream$target"
31 }
32
33 proxy_atom() {
34 local SECTION=$1
35 local OPTION=$2
36 local DEFAULT=$3
37
38 config_get _value "$SECTION" "$OPTION"
39 [ -z "$_value" ] && _value="$DEFAULT"
40 [ -n "$_value" ] && echo "$OPTION $_value"
41 }
42
43 proxy_string() {
44 local SECTION=$1
45 local OPTION=$2
46 local ALIAS=$3
47 local DEFAULT=$4
48
49 config_get _value "$SECTION" "$OPTION"
50 [ -z "$_value" ] && _value="$DEFAULT"
51 [ -n "$_value" ] && echo "${ALIAS:-${OPTION}} "'"'"$_value"'"'
52 [ -n "$_value" ] && [ "$OPTION" = "LogFile" ] && {
53 touch "$_value"
54 chmod 666 "$_value"
55 }
56 }
57
58 proxy_m_string() {
59 local SECTION=$1
60 local OPTION=$2
61
62 config_get _value "$SECTION" "$OPTION"
63 [ -n "$_value" ] && echo "${ALIAS:-${OPTION}} ""$_value"
64 }
65
66 proxy_flag() {
67 local SECTION=$1
68 local OPTION=$2
69 local TRUE="${3:-On}"
70 local FALSE="${4:-Off}"
71
72 config_get_bool _value "$SECTION" "$OPTION" 0
73 [ "$_value" -eq "1" ] && _value="$TRUE" || _value="$FALSE"
74 echo "$OPTION $_value"
75 }
76
77 proxy_list() {
78 local SECTION=$1
79 local OPTION=$2
80 local ENCLOSE=$3
81
82 config_get _value "$SECTION" "$OPTION"
83 [ -n "$_value" ] && {
84 for entry in $_value; do
85 echo "$OPTION ${ENCLOSE}${entry}${ENCLOSE}"
86 done
87 }
88 }
89
90 start_proxy() {
91 section_enabled "$1" || return 1
92
93 mkdir -p /var/etc
94 chmod 0755 /var/etc
95 {
96 echo '### AUTOGENERATED CONFIGURATION'
97 echo '### DO NOT EDIT'
98 echo '### SEE /etc/config/tinyproxy INSTEAD'
99 echo ''
100
101 proxy_atom "$1" User
102 proxy_atom "$1" Group
103 proxy_atom "$1" Port 8888
104 proxy_atom "$1" Listen
105 proxy_atom "$1" Bind
106 proxy_atom "$1" Timeout
107
108 proxy_string "$1" ErrorFile_400 "ErrorFile 400"
109 proxy_string "$1" ErrorFile_403 "ErrorFile 403"
110 proxy_string "$1" ErrorFile_404 "ErrorFile 404"
111 proxy_string "$1" ErrorFile_408 "ErrorFile 408"
112 proxy_string "$1" ErrorFile_503 "ErrorFile 503"
113
114 proxy_string "$1" DefaultErrorFile
115 proxy_string "$1" StatHost StatHost 127.0.0.1
116 proxy_string "$1" StatFile
117 proxy_string "$1" LogFile
118
119 proxy_m_string "$1" BasicAuth
120
121 proxy_flag "$1" Syslog
122
123 proxy_atom "$1" LogLevel
124
125 proxy_flag "$1" XTinyproxy
126
127 proxy_atom "$1" MaxClients
128 proxy_atom "$1" MinSpareServers
129 proxy_atom "$1" MaxSpareServers
130 proxy_atom "$1" StartServers
131 proxy_atom "$1" MaxRequestsPerChild
132 proxy_list "$1" Allow
133
134 proxy_string "$1" ViaProxyName
135 proxy_string "$1" Filter
136
137 proxy_flag "$1" FilterURLs
138 proxy_flag "$1" FilterExtended
139 proxy_flag "$1" FilterCaseSensitive
140 proxy_flag "$1" FilterDefaultDeny Yes No
141
142 proxy_list "$1" Anonymous '"'
143 proxy_list "$1" ConnectPort
144
145 config_foreach write_upstream upstream
146 } > "$CFGFILE"
147
148 procd_open_instance
149 procd_set_param command "$PROG"
150 procd_append_param command -c "$CFGFILE"
151 procd_append_param command -d
152 procd_close_instance
153 }
154
155 start_service() {
156 config_load 'tinyproxy'
157 config_foreach start_proxy 'tinyproxy'
158 }