|
|
- #!/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'
- }
|