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