X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fproxy.cgi;h=8b3200dab4306eb570857f416f518c73c0cbf680;hp=269ce36a2fa497519c90cc6f5b80a04b908ba24e;hb=bbb7dc042092e75f56f1822bbfa1024c74c9b5a9;hpb=8deebac86a150ae1fc9e5645a9c531330b01e7a6 diff --git a/html/cgi-bin/proxy.cgi b/html/cgi-bin/proxy.cgi index 269ce36a2f..8b3200dab4 100644 --- a/html/cgi-bin/proxy.cgi +++ b/html/cgi-bin/proxy.cgi @@ -1,10 +1,29 @@ #!/usr/bin/perl +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2011 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### # -# IPCop CGIs +# (c) 2004-2009 marco.s - http://www.advproxy.net # # This code is distributed under the terms of the GPL # -# $Id: advproxy.cgi,v 1.2.1 2006/04/02 00:00:00 marco.s Exp $ +# $Id: advproxy.cgi,v 3.0.2 2009/02/04 00:00:00 marco.s Exp $ # use strict; @@ -13,20 +32,25 @@ use strict; #use warnings; #use CGI::Carp 'fatalsToBrowser'; -use IO::Socket; - require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; +my @squidversion = `/usr/sbin/squid -v`; +my $http_port='81'; +my $https_port='444'; + +my %color = (); +my %mainsettings = (); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + my %proxysettings=(); my %netsettings=(); my %filtersettings=(); -my %updaccsettings=(); +my %xlratorsettings=(); my %stdproxysettings=(); my %mainsettings=(); -my $urlfilter_addon=0; -my $updacclrtr_addon=0; my %checked=(); my %selected=(); @@ -36,6 +60,9 @@ my $throttle_binary="bin|cab|exe|gz|rar|sea|tar|tgz|zip"; my $throttle_dskimg="b5t|bin|bwt|ccd|cdi|cue|gho|img|iso|mds|nrg|pqi"; my $throttle_mmedia="aiff?|asf|avi|divx|mov|mp3|mpe?g|qt|ra?m"; +my $def_ports_safe="80 # http\n21 # ftp\n443 # https\n563 # snews\n70 # gopher\n210 # wais\n1025-65535 # unregistered ports\n280 # http-mgmt\n488 # gss-http\n591 # filemaker\n777 # multiling http\n800 # Squids port (for icons)\n"; +my $def_ports_ssl="443 # https\n563 # snews\n"; + my @useragent=(); my @useragentlist=(); @@ -55,7 +82,6 @@ my @templist=(); my $cachemem=0; my $proxy1=''; my $proxy2=''; -my $replybodymaxsize=0; my $browser_regexp=''; my $needhup = 0; my $errormessage=''; @@ -82,7 +108,8 @@ my $cre_svhosts = "${General::swroot}/proxy/advanced/cre/supervisors"; my $identhosts = "$identdir/hosts"; -my $libexecdir = "/usr/lib/squid"; +my $authdir = "/usr/lib/squid/"; +my $errordir = "/usr/lib/squid/errors"; my $acl_src_subnets = "$acldir/src_subnets.acl"; my $acl_src_banned_ip = "$acldir/src_banned_ip.acl"; @@ -91,11 +118,22 @@ my $acl_src_unrestricted_ip = "$acldir/src_unrestricted_ip.acl"; my $acl_src_unrestricted_mac = "$acldir/src_unrestricted_mac.acl"; my $acl_src_noaccess_ip = "$acldir/src_noaccess_ip.acl"; my $acl_src_noaccess_mac = "$acldir/src_noaccess_mac.acl"; -my $acl_dst_nocache = "$acldir/dst_nocache.acl"; my $acl_dst_noauth = "$acldir/dst_noauth.acl"; +my $acl_dst_noauth_dom = "$acldir/dst_noauth_dom.acl"; +my $acl_dst_noauth_net = "$acldir/dst_noauth_net.acl"; +my $acl_dst_noauth_url = "$acldir/dst_noauth_url.acl"; +my $acl_dst_nocache = "$acldir/dst_nocache.acl"; +my $acl_dst_nocache_dom = "$acldir/dst_nocache_dom.acl"; +my $acl_dst_nocache_net = "$acldir/dst_nocache_net.acl"; +my $acl_dst_nocache_url = "$acldir/dst_nocache_url.acl"; my $acl_dst_throttle = "$acldir/dst_throttle.acl"; +my $acl_ports_safe = "$acldir/ports_safe.acl"; +my $acl_ports_ssl = "$acldir/ports_ssl.acl"; my $acl_include = "$acldir/include.acl"; +my $updaccelversion = 'n/a'; +my $urlfilterversion = 'n/a'; + unless (-d "$acldir") { mkdir("$acldir"); } unless (-d "$ncsadir") { mkdir("$ncsadir"); } unless (-d "$ntlmdir") { mkdir("$ntlmdir"); } @@ -118,9 +156,17 @@ unless (-e $acl_src_unrestricted_ip) { system("touch $acl_src_unrestricted_ip") unless (-e $acl_src_unrestricted_mac) { system("touch $acl_src_unrestricted_mac"); } unless (-e $acl_src_noaccess_ip) { system("touch $acl_src_noaccess_ip"); } unless (-e $acl_src_noaccess_mac) { system("touch $acl_src_noaccess_mac"); } -unless (-e $acl_dst_nocache) { system("touch $acl_dst_nocache"); } -unless (-e $acl_dst_noauth) { system("touch $acl_dst_noauth"); } +unless (-e $acl_dst_noauth) { system("touch $acl_dst_noauth"); } +unless (-e $acl_dst_noauth_dom) { system("touch $acl_dst_noauth_dom"); } +unless (-e $acl_dst_noauth_net) { system("touch $acl_dst_noauth_net"); } +unless (-e $acl_dst_noauth_url) { system("touch $acl_dst_noauth_url"); } +unless (-e $acl_dst_nocache) { system("touch $acl_dst_nocache"); } +unless (-e $acl_dst_nocache_dom) { system("touch $acl_dst_nocache_dom"); } +unless (-e $acl_dst_nocache_net) { system("touch $acl_dst_nocache_net"); } +unless (-e $acl_dst_nocache_url) { system("touch $acl_dst_nocache_url"); } unless (-e $acl_dst_throttle) { system("touch $acl_dst_throttle"); } +unless (-e $acl_ports_safe) { system("touch $acl_ports_safe"); } +unless (-e $acl_ports_ssl) { system("touch $acl_ports_ssl"); } unless (-e $acl_include) { system("touch $acl_include"); } unless (-e $browserdb) { system("touch $browserdb"); } @@ -130,35 +176,17 @@ open FILE, $browserdb; @useragentlist = sort { reverse(substr(reverse(substr($a,index($a,',')+1)),index(reverse(substr($a,index($a,','))),',')+1)) cmp reverse(substr(reverse(substr($b,index($b,',')+1)),index(reverse(substr($b,index($b,','))),',')+1))} grep !/(^$)|(^\s*#)/,; close(FILE); -my %filtersettings=(); -$filtersettings{'CHILDREN'} = '5'; -if (-e "${General::swroot}/urlfilter/settings") { - &General::readhash("${General::swroot}/urlfilter/settings", \%filtersettings); -} - &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); &General::readhash("${General::swroot}/main/settings", \%mainsettings); -if (-e "${General::swroot}/urlfilter/version") { $urlfilter_addon = 1; } -if (-e "${General::swroot}/updacclrtr/version") { $updacclrtr_addon = 1; } - -if ($urlfilter_addon) { - $filtersettings{'CHILDREN'} = '5'; - if (-e "${General::swroot}/urlfilter/settings") { - &General::readhash("${General::swroot}/urlfilter/settings", \%filtersettings); - } -} - -if ($updacclrtr_addon) { - $updaccsettings{'ACCELERATORS'} = '10'; - if (-e "${General::swroot}/updacclrtr/settings") { - &General::readhash("${General::swroot}/updacclrtr/settings", \%updaccsettings); - } +my $green_cidr = &General::ipcidr("$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}"); +my $blue_cidr = "# Blue not defined"; +if ($netsettings{'BLUE_DEV'}) { + $blue_cidr = &General::ipcidr("$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}"); } &Header::showhttpheaders(); -$proxysettings{'ENABLE_FILTER'} = 'off'; $proxysettings{'ACTION'} = ''; $proxysettings{'VALID'} = ''; @@ -169,16 +197,22 @@ $proxysettings{'TRANSPARENT_BLUE'} = 'off'; $proxysettings{'PROXY_PORT'} = '800'; $proxysettings{'VISIBLE_HOSTNAME'} = ''; $proxysettings{'ADMIN_MAIL_ADDRESS'} = ''; -$proxysettings{'ERR_LANGUAGE'} = 'English'; +$proxysettings{'ADMIN_PASSWORD'} = ''; +$proxysettings{'ERR_LANGUAGE'} = 'German'; +$proxysettings{'ERR_DESIGN'} = 'ipfire'; +$proxysettings{'SUPPRESS_VERSION'} = 'off'; $proxysettings{'FORWARD_VIA'} = 'off'; $proxysettings{'FORWARD_IPADDRESS'} = 'off'; $proxysettings{'FORWARD_USERNAME'} = 'off'; +$proxysettings{'NO_CONNECTION_AUTH'} = 'off'; $proxysettings{'UPSTREAM_PROXY'} = ''; $proxysettings{'UPSTREAM_USER'} = ''; $proxysettings{'UPSTREAM_PASSWORD'} = ''; $proxysettings{'LOGGING'} = 'off'; +$proxysettings{'CACHEMGR'} = 'off'; $proxysettings{'LOGQUERY'} = 'off'; $proxysettings{'LOGUSERAGENT'} = 'off'; +$proxysettings{'FILEDESCRIPTORS'} = '4096'; $proxysettings{'CACHE_MEM'} = '2'; $proxysettings{'CACHE_SIZE'} = '50'; $proxysettings{'MAX_SIZE'} = '4096'; @@ -189,6 +223,8 @@ $proxysettings{'L1_DIRS'} = '16'; $proxysettings{'OFFLINE_MODE'} = 'off'; $proxysettings{'CLASSROOM_EXT'} = 'off'; $proxysettings{'SUPERVISOR_PASSWORD'} = ''; +$proxysettings{'NO_PROXY_LOCAL'} = 'off'; +$proxysettings{'NO_PROXY_LOCAL_BLUE'} = 'off'; $proxysettings{'TIME_ACCESS_MODE'} = 'allow'; $proxysettings{'TIME_FROM_HOUR'} = '00'; $proxysettings{'TIME_FROM_MINUTE'} = '00'; @@ -232,7 +268,7 @@ $proxysettings{'NTLM_BDC'} = ''; $proxysettings{'NTLM_ENABLE_ACL'} = 'off'; $proxysettings{'NTLM_USER_ACL'} = 'positive'; $proxysettings{'RADIUS_SERVER'} = ''; -$proxysettings{'RADIUS_PORT'} = '1645'; +$proxysettings{'RADIUS_PORT'} = '1812'; $proxysettings{'RADIUS_IDENTIFIER'} = ''; $proxysettings{'RADIUS_SECRET'} = ''; $proxysettings{'RADIUS_ENABLE_ACL'} = 'off'; @@ -241,14 +277,10 @@ $proxysettings{'IDENT_REQUIRED'} = 'off'; $proxysettings{'IDENT_TIMEOUT'} = '10'; $proxysettings{'IDENT_ENABLE_ACL'} = 'off'; $proxysettings{'IDENT_USER_ACL'} = 'positive'; - -if ($urlfilter_addon) { - $proxysettings{'ENABLE_FILTER'} = 'off'; -} - -if ($updacclrtr_addon) { - $proxysettings{'ENABLE_UPDACCEL'} = 'off'; -} +$proxysettings{'ENABLE_FILTER'} = 'off'; +$proxysettings{'ENABLE_UPDXLRATOR'} = 'off'; +$proxysettings{'ENABLE_CLAMAV'} = 'off'; +$proxysettings{'CHILDREN'} = '10'; $ncsa_buttontext = $Lang::tr{'advproxy NCSA create user'}; @@ -292,6 +324,10 @@ if ($proxysettings{'ACTION'} eq $Lang::tr{'remove'}) &deluser($proxysettings{'ID'}); } +$checked{'ENABLE_UPDXLRATOR'}{'off'} = ''; +$checked{'ENABLE_UPDXLRATOR'}{'on'} = ''; +$checked{'ENABLE_UPDXLRATOR'}{$proxysettings{'ENABLE_UPDXLRATOR'}} = "checked='checked'"; + if ($proxysettings{'ACTION'} eq $Lang::tr{'edit'}) { $proxysettings{'NCSA_EDIT_MODE'} = 'yes'; @@ -303,19 +339,33 @@ if ($proxysettings{'ACTION'} eq $Lang::tr{'edit'}) $proxysettings{'NCSA_PASS_CONFIRM'} = $proxysettings{'NCSA_PASS'}; } -if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'} eq $Lang::tr{'advproxy save and restart'})) -{ - if ($proxysettings{'ENABLE'} !~ /^(on|off)$/ || - $proxysettings{'TRANSPARENT'} !~ /^(on|off)$/ || - $proxysettings{'ENABLE_BLUE'} !~ /^(on|off)$/ || +if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'} eq $Lang::tr{'advproxy save and restart'}) || ($proxysettings{'ACTION'} eq $Lang::tr{'proxy reconfigure'})) +{ + if ($proxysettings{'ENABLE'} !~ /^(on|off)$/ || + $proxysettings{'TRANSPARENT'} !~ /^(on|off)$/ || + $proxysettings{'ENABLE_BLUE'} !~ /^(on|off)$/ || $proxysettings{'TRANSPARENT_BLUE'} !~ /^(on|off)$/ ) { $errormessage = $Lang::tr{'invalid input'}; goto ERROR; - } + } + if (!(&General::validport($proxysettings{'PROXY_PORT'}))) + { + $errormessage = $Lang::tr{'advproxy errmsg invalid proxy port'}; + goto ERROR; + } if (!($proxysettings{'CACHE_SIZE'} =~ /^\d+/) || ($proxysettings{'CACHE_SIZE'} < 10)) { - $errormessage = $Lang::tr{'advproxy errmsg hdd cache size'}; + if (!($proxysettings{'CACHE_SIZE'} eq '0')) + { + $errormessage = $Lang::tr{'advproxy errmsg hdd cache size'}; + goto ERROR; + } + } + if (!($proxysettings{'FILEDESCRIPTORS'} =~ /^\d+/) || + ($proxysettings{'FILEDESCRIPTORS'} < 1) || ($proxysettings{'FILEDESCRIPTORS'} > 16384)) + { + $errormessage = $Lang::tr{'proxy errmsg filedescriptors'}; goto ERROR; } if (!($proxysettings{'CACHE_MEM'} =~ /^\d+/) || @@ -323,7 +373,7 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'} { $errormessage = $Lang::tr{'advproxy errmsg mem cache size'}; goto ERROR; - } + } my @free = `/usr/bin/free`; $free[1] =~ m/(\d+)/; $cachemem = int $1 / 2048; @@ -345,15 +395,6 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'} $errormessage = $Lang::tr{'invalid maximum outgoing size'}; goto ERROR; } - if ($proxysettings{'ENABLE_FILTER'} eq 'on') - { - print FILE < 255))) + if ((!($proxysettings{'AUTH_MAX_USERIP'} eq '')) && + ((!($proxysettings{'AUTH_MAX_USERIP'} =~ /^\d+/)) || ($proxysettings{'AUTH_MAX_USERIP'} < 1) || ($proxysettings{'AUTH_MAX_USERIP'} > 255))) { $errormessage = $Lang::tr{'advproxy errmsg max userip'}; goto ERROR; @@ -493,6 +539,10 @@ END $errormessage = $Lang::tr{'advproxy errmsg invalid bdc'}; goto ERROR; } + + $proxysettings{'NTLM_DOMAIN'} = lc($proxysettings{'NTLM_DOMAIN'}); + $proxysettings{'NTLM_PDC'} = lc($proxysettings{'NTLM_PDC'}); + $proxysettings{'NTLM_BDC'} = lc($proxysettings{'NTLM_BDC'}); } if ($proxysettings{'AUTH_METHOD'} eq 'radius') { @@ -513,16 +563,17 @@ END } } - # Quick parent proxy error checking of username and password info. If username password don't both exist give an error. - $proxy1 = 'YES'; - $proxy2 = 'YES'; - if (($proxysettings{'UPSTREAM_USER'} eq '')) {$proxy1 = '';} - if (($proxysettings{'UPSTREAM_PASSWORD'} eq '')) {$proxy2 = '';} - if (($proxy1 ne $proxy2)) - { - $errormessage = $Lang::tr{'advproxy errmsg invalid upstream proxy username or password setting'}; - goto ERROR; - } + # Quick parent proxy error checking of username and password info. If username password don't both exist give an error. + $proxy1 = 'YES'; + $proxy2 = 'YES'; + if (($proxysettings{'UPSTREAM_USER'} eq '')) {$proxy1 = '';} + if (($proxysettings{'UPSTREAM_PASSWORD'} eq '')) {$proxy2 = '';} + if ($proxysettings{'UPSTREAM_USER'} eq 'PASS') {$proxy1=$proxy2='PASS'; $proxysettings{'UPSTREAM_PASSWORD'} = '';} + if (($proxy1 ne $proxy2)) + { + $errormessage = $Lang::tr{'advproxy errmsg invalid upstream proxy username or password setting'}; + goto ERROR; + } ERROR: &check_acls; @@ -530,7 +581,7 @@ ERROR: if ($errormessage) { $proxysettings{'VALID'} = 'no'; } else { - $proxysettings{'VALID'} = 'yes'; } + $proxysettings{'VALID'} = 'yes'; } if ($proxysettings{'VALID'} eq 'yes') { @@ -543,6 +594,8 @@ ERROR: delete $proxysettings{'SRC_UNRESTRICTED_MAC'}; delete $proxysettings{'DST_NOCACHE'}; delete $proxysettings{'DST_NOAUTH'}; + delete $proxysettings{'PORTS_SAFE'}; + delete $proxysettings{'PORTS_SSL'}; delete $proxysettings{'MIME_TYPES'}; delete $proxysettings{'NTLM_ALLOW_USERS'}; delete $proxysettings{'NTLM_DENY_USERS'}; @@ -573,44 +626,46 @@ ERROR: &General::writehash("${General::swroot}/proxy/advanced/settings", \%proxysettings); - if ($urlfilter_addon) - { - if (-e "${General::swroot}/proxy/settings") { &General::readhash("${General::swroot}/proxy/settings", \%stdproxysettings); } - $stdproxysettings{'ENABLE_FILTER'} = $proxysettings{'ENABLE_FILTER'}; - &General::writehash("${General::swroot}/proxy/settings", \%stdproxysettings); - } - - if ($updacclrtr_addon) - { - if (-e "${General::swroot}/proxy/settings") { &General::readhash("${General::swroot}/proxy/settings", \%stdproxysettings); } - $stdproxysettings{'ENABLE_UPDACCEL'} = $proxysettings{'ENABLE_UPDACCEL'}; - &General::writehash("${General::swroot}/proxy/settings", \%stdproxysettings); - } + if (-e "${General::swroot}/proxy/settings") { &General::readhash("${General::swroot}/proxy/settings", \%stdproxysettings); } + $stdproxysettings{'PROXY_PORT'} = $proxysettings{'PROXY_PORT'}; + $stdproxysettings{'UPSTREAM_PROXY'} = $proxysettings{'UPSTREAM_PROXY'}; + $stdproxysettings{'UPSTREAM_USER'} = $proxysettings{'UPSTREAM_USER'}; + $stdproxysettings{'UPSTREAM_PASSWORD'} = $proxysettings{'UPSTREAM_PASSWORD'}; + $stdproxysettings{'ENABLE_FILTER'} = $proxysettings{'ENABLE_FILTER'}; + $stdproxysettings{'ENABLE_UPDXLRATOR'} = $proxysettings{'ENABLE_UPDXLRATOR'}; + $stdproxysettings{'ENABLE_CLAMAV'} = $proxysettings{'ENABLE_CLAMAV'}; + &General::writehash("${General::swroot}/proxy/settings", \%stdproxysettings); &writeconfig; &writepacfile; + if ($proxysettings{'CACHEMGR'} eq 'on'){&writecachemgr;} + + system ('/usr/local/bin/squidctrl', 'disable'); unlink "${General::swroot}/proxy/enable"; unlink "${General::swroot}/proxy/transparent"; unlink "${General::swroot}/proxy/enable_blue"; unlink "${General::swroot}/proxy/transparent_blue"; if ($proxysettings{'ENABLE'} eq 'on') { - system ('/bin/touch', "${General::swroot}/proxy/enable"); } - if ($proxysettings{'TRANSPARENT'} eq 'on') { - system ('/bin/touch', "${General::swroot}/proxy/transparent"); } + system ('/usr/bin/touch', "${General::swroot}/proxy/enable"); + system ('/usr/local/bin/squidctrl', 'enable'); } + if ($proxysettings{'TRANSPARENT'} eq 'on' && $proxysettings{'ENABLE'} eq 'on') { + system ('/usr/bin/touch', "${General::swroot}/proxy/transparent"); } if ($proxysettings{'ENABLE_BLUE'} eq 'on') { - system ('/bin/touch', "${General::swroot}/proxy/enable_blue"); } - if ($proxysettings{'TRANSPARENT_BLUE'} eq 'on') { - system ('/bin/touch', "${General::swroot}/proxy/transparent_blue"); } - - if ($proxysettings{'ACTION'} eq $Lang::tr{'advproxy save and restart'}) { system('/usr/local/bin/restartsquid'); } - } + system ('/usr/bin/touch', "${General::swroot}/proxy/enable_blue"); + system ('/usr/local/bin/squidctrl', 'enable'); } + if ($proxysettings{'TRANSPARENT_BLUE'} eq 'on' && $proxysettings{'ENABLE_BLUE'} eq 'on') { + system ('/usr/bin/touch', "${General::swroot}/proxy/transparent_blue"); } + + if ($proxysettings{'ACTION'} eq $Lang::tr{'advproxy save and restart'}) { system('/usr/local/bin/squidctrl restart >/dev/null 2>&1'); } + if ($proxysettings{'ACTION'} eq $Lang::tr{'proxy reconfigure'}) { system('/usr/local/bin/squidctrl reconfigure >/dev/null 2>&1'); } + } } -if ($proxysettings{'ACTION'} eq $Lang::tr{'clear cache'}) +if ($proxysettings{'ACTION'} eq $Lang::tr{'advproxy clear cache'}) { - system('/usr/local/bin/restartsquid','-f'); + system('/usr/local/bin/squidctrl flush >/dev/null 2>&1'); } if (!$errormessage) @@ -639,6 +694,10 @@ $checked{'TRANSPARENT_BLUE'}{'off'} = ''; $checked{'TRANSPARENT_BLUE'}{'on'} = ''; $checked{'TRANSPARENT_BLUE'}{$proxysettings{'TRANSPARENT_BLUE'}} = "checked='checked'"; +$checked{'SUPPRESS_VERSION'}{'off'} = ''; +$checked{'SUPPRESS_VERSION'}{'on'} = ''; +$checked{'SUPPRESS_VERSION'}{$proxysettings{'SUPPRESS_VERSION'}} = "checked='checked'"; + $checked{'FORWARD_IPADDRESS'}{'off'} = ''; $checked{'FORWARD_IPADDRESS'}{'on'} = ''; $checked{'FORWARD_IPADDRESS'}{$proxysettings{'FORWARD_IPADDRESS'}} = "checked='checked'"; @@ -648,6 +707,9 @@ $checked{'FORWARD_USERNAME'}{$proxysettings{'FORWARD_USERNAME'}} = "checked='che $checked{'FORWARD_VIA'}{'off'} = ''; $checked{'FORWARD_VIA'}{'on'} = ''; $checked{'FORWARD_VIA'}{$proxysettings{'FORWARD_VIA'}} = "checked='checked'"; +$checked{'NO_CONNECTION_AUTH'}{'off'} = ''; +$checked{'NO_CONNECTION_AUTH'}{'on'} = ''; +$checked{'NO_CONNECTION_AUTH'}{$proxysettings{'NO_CONNECTION_AUTH'}} = "checked='checked'"; $selected{'MEM_POLICY'}{$proxysettings{'MEM_POLICY'}} = "selected='selected'"; $selected{'CACHE_POLICY'}{$proxysettings{'CACHE_POLICY'}} = "selected='selected'"; @@ -659,6 +721,9 @@ $checked{'OFFLINE_MODE'}{$proxysettings{'OFFLINE_MODE'}} = "checked='checked'"; $checked{'LOGGING'}{'off'} = ''; $checked{'LOGGING'}{'on'} = ''; $checked{'LOGGING'}{$proxysettings{'LOGGING'}} = "checked='checked'"; +$checked{'CACHEMGR'}{'off'} = ''; +$checked{'CACHEMGR'}{'on'} = ''; +$checked{'CACHEMGR'}{$proxysettings{'CACHEMGR'}} = "checked='checked'"; $checked{'LOGQUERY'}{'off'} = ''; $checked{'LOGQUERY'}{'on'} = ''; $checked{'LOGQUERY'}{$proxysettings{'LOGQUERY'}} = "checked='checked'"; @@ -667,6 +732,14 @@ $checked{'LOGUSERAGENT'}{'on'} = ''; $checked{'LOGUSERAGENT'}{$proxysettings{'LOGUSERAGENT'}} = "checked='checked'"; $selected{'ERR_LANGUAGE'}{$proxysettings{'ERR_LANGUAGE'}} = "selected='selected'"; +$selected{'ERR_DESIGN'}{$proxysettings{'ERR_DESIGN'}} = "selected='selected'"; + +$checked{'NO_PROXY_LOCAL'}{'off'} = ''; +$checked{'NO_PROXY_LOCAL'}{'on'} = ''; +$checked{'NO_PROXY_LOCAL'}{$proxysettings{'NO_PROXY_LOCAL'}} = "checked='checked'"; +$checked{'NO_PROXY_LOCAL_BLUE'}{'off'} = ''; +$checked{'NO_PROXY_LOCAL_BLUE'}{'on'} = ''; +$checked{'NO_PROXY_LOCAL_BLUE'}{$proxysettings{'NO_PROXY_LOCAL_BLUE'}} = "checked='checked'"; $checked{'CLASSROOM_EXT'}{'off'} = ''; $checked{'CLASSROOM_EXT'}{'on'} = ''; @@ -733,9 +806,9 @@ $checked{'ENABLE_BROWSER_CHECK'}{$proxysettings{'ENABLE_BROWSER_CHECK'}} = "chec foreach (@useragentlist) { @useragent = split(/,/); - $checked{'UA_'.@useragent[0]}{'off'} = ''; - $checked{'UA_'.@useragent[0]}{'on'} = ''; - $checked{'UA_'.@useragent[0]}{$proxysettings{'UA_'.@useragent[0]}} = "checked='checked'"; + $checked{'UA_'.$useragent[0]}{'off'} = ''; + $checked{'UA_'.$useragent[0]}{'on'} = ''; + $checked{'UA_'.$useragent[0]}{$proxysettings{'UA_'.$useragent[0]}} = "checked='checked'"; } $checked{'AUTH_METHOD'}{'none'} = ''; @@ -794,17 +867,17 @@ $checked{'IDENT_USER_ACL'}{'positive'} = ''; $checked{'IDENT_USER_ACL'}{'negative'} = ''; $checked{'IDENT_USER_ACL'}{$proxysettings{'IDENT_USER_ACL'}} = "checked='checked'"; -if ($urlfilter_addon) { - $checked{'ENABLE_FILTER'}{'off'} = ''; - $checked{'ENABLE_FILTER'}{'on'} = ''; - $checked{'ENABLE_FILTER'}{$proxysettings{'ENABLE_FILTER'}} = "checked='checked'"; -} +$checked{'ENABLE_FILTER'}{'off'} = ''; +$checked{'ENABLE_FILTER'}{'on'} = ''; +$checked{'ENABLE_FILTER'}{$proxysettings{'ENABLE_FILTER'}} = "checked='checked'"; -if ($updacclrtr_addon) { - $checked{'ENABLE_UPDACCEL'}{'off'} = ''; - $checked{'ENABLE_UPDACCEL'}{'on'} = ''; - $checked{'ENABLE_UPDACCEL'}{$proxysettings{'ENABLE_UPDACCEL'}} = "checked='checked'"; -} +$checked{'ENABLE_UPDXLRATOR'}{'off'} = ''; +$checked{'ENABLE_UPDXLRATOR'}{'on'} = ''; +$checked{'ENABLE_UPDXLRATOR'}{$proxysettings{'ENABLE_UPDXLRATOR'}} = "checked='checked'"; + +$checked{'ENABLE_CLAMAV'}{'off'} = ''; +$checked{'ENABLE_CLAMAV'}{'on'} = ''; +$checked{'ENABLE_CLAMAV'}{$proxysettings{'ENABLE_CLAMAV'}} = "checked='checked'"; &Header::openpage($Lang::tr{'advproxy advanced web proxy configuration'}, 1, ''); @@ -816,6 +889,15 @@ if ($errormessage) { &Header::closebox(); } +if ($squidversion[0] =~ /^Squid\sCache:\sVersion\s/i) +{ + $squidversion[0] =~ s/^Squid\sCache:\sVersion//i; + $squidversion[0] =~ s/^\s+//g; + $squidversion[0] =~ s/\s+$//g; +} else { + $squidversion[0] = $Lang::tr{'advproxy unknown'}; +} + # =================================================================== # Main settings # =================================================================== @@ -853,8 +935,7 @@ if ($netsettings{'BLUE_DEV'}) { print " "; } print <$Lang::tr{'advproxy admin mail'}: * - +   END @@ -871,7 +952,7 @@ print < END ; - foreach () { + foreach (<$errordir/*>) { if (-d) { $language = substr($_,rindex($_,"/")+1); print "\n"; @@ -882,37 +963,81 @@ print < -
$Lang::tr{'urlfilter url filter'} + $Lang::tr{'advproxy suppress version'}: + + $Lang::tr{'advproxy error design'}: + - $Lang::tr{'urlfilter enabled'} - -   + $Lang::tr{'advproxy squid version'}: +  [ $squidversion[0] ] +   +  
+ + +END +; +my $count = `arp -a | wc -l`; +if ( $count < 1 ){$count = 1;} +if ( -e "/usr/bin/squidclamav" ) { + print ""; +} else { + print ""; +} +print ""; +print ""; +print < +
+
$Lang::tr{'advproxy redirector children'}
$Lang::tr{'processes'}".$Lang::tr{'advproxy squidclamav'}."
"; + if ( ! -e "/var/run/clamav/clamd.pid" ){ + print "clamav not running

"; + $proxysettings{'ENABLE_CLAMAV'} = 'off'; + } + else { + print $Lang::tr{'advproxy enabled'}."
"; + print "+ ".int(( $count**(1/3)) * 8);} + print "
".$Lang::tr{'advproxy url filter'}."
"; +print $Lang::tr{'advproxy enabled'}."
"; +print "+ ".int(($count**(1/3)) * 6); +print "
".$Lang::tr{'advproxy update accelerator'}."
"; +print $Lang::tr{'advproxy enabled'}."
"; +print "+ ".int(($count**(1/3)) * 5); +print "
- + - + - + + + + + + +
$Lang::tr{'advproxy upstream proxy'}
$Lang::tr{'advproxy via forwarding'}:$Lang::tr{'advproxy via forwarding'}: $Lang::tr{'advproxy upstream proxy host:port'} *
$Lang::tr{'advproxy client IP forwarding'}:$Lang::tr{'advproxy client IP forwarding'}: $Lang::tr{'advproxy upstream username'}: *
$Lang::tr{'advproxy username forwarding'}:$Lang::tr{'advproxy username forwarding'}: $Lang::tr{'advproxy upstream password'}: *
$Lang::tr{'advproxy no connection auth'}:  

@@ -937,6 +1062,18 @@ print < + + + + + + + + + + + + @@ -954,15 +1091,15 @@ print < - + - - - - -
$Lang::tr{'advproxy cache management'}
$Lang::tr{'proxy cachemgr'}:$Lang::tr{'advproxy admin mail'}: *
$Lang::tr{'proxy filedescriptors'}:$Lang::tr{'proxy admin password'}: *
$Lang::tr{'advproxy number of L1 dirs'}: - +
@@ -989,33 +1126,62 @@ print < - - + + - - + + - +
$Lang::tr{'advproxy memory replacement policy'}:$Lang::tr{'advproxy memory replacement policy'}:
$Lang::tr{'advproxy cache replacement policy'}:$Lang::tr{'advproxy cache replacement policy'}:
 
$Lang::tr{'advproxy offline mode'}:$Lang::tr{'advproxy offline mode'}:

+ + + + + + + + + + + + + + +
$Lang::tr{'advproxy destination ports'}
$Lang::tr{'advproxy standard ports'}:$Lang::tr{'advproxy ssl ports'}:
+
+ @@ -1023,25 +1189,51 @@ print < - - + - +END +; + +$line = $Lang::tr{'advproxy no internal proxy on green'}; +$line =~ s/Green/Green<\/font>/i; +print "\n"; +print < + +END +; +if ($netsettings{'BLUE_DEV'}) { + $line = $Lang::tr{'advproxy no internal proxy on blue'}; + $line =~ s/Blue/Blue<\/font>/i; + print "\n"; + print "\n"; + print < + +END +; +} +print < + + +
$Lang::tr{'advproxy network based access'}
$Lang::tr{'advproxy allowed subnets'}: $Lang::tr{'advproxy allowed subnets'}:
$line:
$line:
 
 
@@ -1054,7 +1246,7 @@ print <$Lang::tr{'advproxy unrestricted mac clients'}: *
- -
END ; +} +print "
"; + } else { print < @@ -1158,13 +1357,14 @@ END END ; } + # ------------------------------------------------------------------- -print < - $Lang::tr{'advproxy time restrictions'} + $Lang::tr{'advproxy time restrictions'} @@ -1347,23 +1547,23 @@ print < - - - + + +
$Lang::tr{'advproxy throttle mmedia'}:   
  

- - - - - + +END +; +if ( $proxysettings{'ENABLE_MIME_FILTER'} eq 'on' ){ +print < - - + + - - + + +END +; +} +print < +
$Lang::tr{'advproxy MIME filter'}
$Lang::tr{'advproxy enabled'}:$Lang::tr{'advproxy MIME filter'} $Lang::tr{'advproxy enabled'}:
$Lang::tr{'advproxy MIME block types'}: *    
    
- - - - - - - + +END +; +if ( $proxysettings{'ENABLE_BROWSER_CHECK'} eq 'on' ){ +print < \n"; } if (($n+$i) < @useragentlist) { @useragent = split(/,/,@useragentlist[$n+$i]); - print "\n"; + print "\n"; } if ($i eq 3) { print "<\/tr>\n"; } } } - +} print <
@@ -1423,14 +1626,10 @@ print <
- - - - - +
$Lang::tr{'advproxy web browser'}
$Lang::tr{'advproxy UA enable filter'}:  $Lang::tr{'advproxy web browser'} $Lang::tr{'advproxy UA enable filter'}:
END @@ -1407,13 +1610,13 @@ for ($n=0; $n<=@useragentlist; $n = $n + $i) { if ($i eq 0) { print "
@useragent[1]:<\/td>\n"; - print "$useragent[1]:<\/td>\n"; + print "
$Lang::tr{'advproxy fake useragent'}: *
$Lang::tr{'advproxy fake referer'}: *
@@ -1438,27 +1637,10 @@ print < - - $Lang::tr{'advproxy update accelerator'} - - - $Lang::tr{'advproxy enabled'}: - -   -   - - -
-END -; } - print < - $Lang::tr{'advproxy AUTH method'} + $Lang::tr{'advproxy AUTH method'} $Lang::tr{'advproxy AUTH method none'} @@ -1476,7 +1658,7 @@ if (!($proxysettings{'AUTH_METHOD'} eq 'none')) { if (!($proxysettings{'AUTH_MET
- + @@ -1539,8 +1721,8 @@ print < - - + + @@ -1565,7 +1747,7 @@ print <$Lang::tr{'advproxy NCSA min password length'}: - + @@ -1589,9 +1771,9 @@ print < - - - + + + @@ -1608,9 +1790,9 @@ print <$Lang::tr{'advproxy IDENT unauthorized users'} - - - -
$Lang::tr{'advproxy AUTH global settings'}$Lang::tr{'advproxy AUTH global settings'}
$Lang::tr{'advproxy AUTH always required'}:$Lang::tr{'advproxy AUTH always required'}:
  $Lang::tr{'advproxy NCSA redirector bypass'} \'$Lang::tr{'advproxy NCSA grp extended'}\':

 
$Lang::tr{'advproxy IDENT required'}:$Lang::tr{'advproxy AUTH always required'}:$Lang::tr{'advproxy AUTH always required'}:
$Lang::tr{'advproxy IDENT timeout'}: