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