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