You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
3.0 KiB

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