aboutsummaryrefslogtreecommitdiffstats
path: root/packages/squid
diff options
context:
space:
mode:
authorMartin Fuchs <mfuchs@pfsense.org>2008-08-21 20:20:40 +0000
committerMartin Fuchs <mfuchs@pfsense.org>2008-08-21 20:20:40 +0000
commitf05e3049e1e4ba1d4c2f65fe65e8f20d1b8e16fd (patch)
treecf9b1c405c34ea95e04badd98b28e7634f435ca4 /packages/squid
parent24a36160585c3bcae20861fad0cad4162a8570c1 (diff)
downloadpfsense-packages-f05e3049e1e4ba1d4c2f65fe65e8f20d1b8e16fd.tar.gz
pfsense-packages-f05e3049e1e4ba1d4c2f65fe65e8f20d1b8e16fd.tar.bz2
pfsense-packages-f05e3049e1e4ba1d4c2f65fe65e8f20d1b8e16fd.zip
add support for external cache managers such as sqstat (http://forum.pfsense.org/index.php/topic,11027.0.html)
Diffstat (limited to 'packages/squid')
-rw-r--r--packages/squid/squid.inc31
-rw-r--r--packages/squid/squid.xml4
-rw-r--r--packages/squid/squid_nac.xml7
3 files changed, 36 insertions, 6 deletions
diff --git a/packages/squid/squid.inc b/packages/squid/squid.inc
index 9f08f7a9..1db19bd8 100644
--- a/packages/squid/squid.inc
+++ b/packages/squid/squid.inc
@@ -314,13 +314,10 @@ function squid_validate_general($post, $input_errors) {
if(!empty($post['dns_nameservers'])) {
$altdns = explode(";", ($post['dns_nameservers']));
-// $conf .= "# Custom options\n";
foreach ($altdns as $dnssrv) {
-// $conf .= $custopt."\n";
if (!is_ipaddr($dnssrv))
$input_errors[] = 'You must enter a valid IP address in the \'Alternate DNS servers\' field';
}}
-
}
function squid_validate_upstream($post, $input_errors) {
@@ -413,6 +410,13 @@ function squid_validate_nac($post, $input_errors) {
if (!empty($time) && !squid_is_timerange($time))
$input_errors[] = "The time range '$time' is not a valid time range";
}
+
+ if(!empty($post['ext_cachemanager'])) {
+ $extmgr = explode(";", ($post['ext_cachemanager']));
+ foreach ($extmgr as $mgr) {
+ if (!is_ipaddr($mgr))
+ $input_errors[] = 'You must enter a valid IP address in the \'External Cache Manager\' field';
+ }}
}
function squid_validate_traffic($post, $input_errors) {
@@ -572,7 +576,7 @@ EOD;
foreach ($altdns as $dnssrv) {
$conf .= $dnssrv." ";
}
-// $conf .= "\n";
+ $conf .= "\n";
}
return $conf;
@@ -696,8 +700,27 @@ EOD;
}
$conf .= <<<EOD
+
cache deny dynamic
http_access allow manager localhost
+
+EOD;
+
+ if(!empty($settings['ext_cachemanager'])) {
+ $extmgr = explode(";", ($settings['ext_cachemanager']));
+ $count = 1;
+ $conf .= "\n# Allow external cache managers\n";
+// $conf .= "acl ext_manager src ".$settings['ext_cachemanager']."\n";
+ foreach ($extmgr as $mgr) {
+ $conf .= "acl ext_manager_".$count." src ";
+ $conf .= $mgr." ";
+ $conf .= "\n";
+ $conf .= "http_access allow manager ext_manager_".$count."\n";
+ $count += 1;
+ }}
+
+ $conf .= <<<EOD
+
http_access deny manager
http_access allow purge localhost
http_access deny purge
diff --git a/packages/squid/squid.xml b/packages/squid/squid.xml
index 50409a90..6f20d586 100644
--- a/packages/squid/squid.xml
+++ b/packages/squid/squid.xml
@@ -282,8 +282,8 @@
<fieldname>disable_squidversion</fieldname>
<description>If set, suppress Squid version string info in HTTP headers and HTML error pages.</description>
<type>checkbox</type>
- </field>
- <field>
+ </field>
+ <field>
<fielddescr>Custom Options</fielddescr>
<fieldname>custom_options</fieldname>
<description>You can put your own custom options here, separated by semi-colons (;). They'll be added to the configuration. They need to be squid.conf native options, otherwise squid will NOT work.</description>
diff --git a/packages/squid/squid_nac.xml b/packages/squid/squid_nac.xml
index 435671a2..8b1741d6 100644
--- a/packages/squid/squid_nac.xml
+++ b/packages/squid/squid_nac.xml
@@ -126,6 +126,13 @@
<rows>5</rows>
<encoding>base64</encoding>
</field>
+ <field>
+ <fielddescr>Allow an external host as a cachemanager</fielddescr>
+ <fieldname>ext_cachemanager</fieldname>
+ <description>Enter the IPs for the external Cache Managers here, separated by semi-colons (;).</description>
+ <type>input</type>
+ <size>60</size>
+ </field>
</fields>
<custom_php_validation_command>
squid_validate_nac($_POST, &amp;$input_errors);