diff options
Diffstat (limited to 'packages/squid3')
-rw-r--r-- | packages/squid3/squid.inc | 30 | ||||
-rw-r--r-- | packages/squid3/squid_nac.xml | 7 |
2 files changed, 33 insertions, 4 deletions
diff --git a/packages/squid3/squid.inc b/packages/squid3/squid.inc index 9b87ce80..fc647481 100644 --- a/packages/squid3/squid.inc +++ b/packages/squid3/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; @@ -697,6 +701,24 @@ 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/squid3/squid_nac.xml b/packages/squid3/squid_nac.xml index 435671a2..8b1741d6 100644 --- a/packages/squid3/squid_nac.xml +++ b/packages/squid3/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, &$input_errors); |