diff options
Diffstat (limited to 'packages/squid')
-rw-r--r-- | packages/squid/squid.inc | 31 | ||||
-rw-r--r-- | packages/squid/squid.xml | 4 | ||||
-rw-r--r-- | packages/squid/squid_nac.xml | 7 |
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, &$input_errors); |