]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - html/cgi-bin/proxy.cgi
Removed mldonkey and ocaml.
[people/pmueller/ipfire-2.x.git] / html / cgi-bin / proxy.cgi
index d41d0af4f032edd509e7be70b21c4c33c83442ab..a387d3e75f8b7042dc4c6bd195608995b7802557 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2008  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2009  Michael Tremer & Christian Schmidt                      #
 #                                                                             #
 # 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        #
 #                                                                             #
 ###############################################################################
 #
-# (c) 2004-2008 marco.s - http://www.advproxy.net
+# (c) 2004-2009 marco.s - http://www.advproxy.net
 #
 # This code is distributed under the terms of the GPL
 #
-# $Id: advproxy.cgi,v 3.0.0 2008/08/18 00:00:00 marco.s Exp $
+# $Id: advproxy.cgi,v 3.0.2 2009/02/04 00:00:00 marco.s Exp $
 #
 
 use strict;
@@ -180,6 +180,12 @@ close(FILE);
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 
+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{'ACTION'} = '';
@@ -192,6 +198,7 @@ $proxysettings{'TRANSPARENT_BLUE'} = 'off';
 $proxysettings{'PROXY_PORT'} = '800';
 $proxysettings{'VISIBLE_HOSTNAME'} = '';
 $proxysettings{'ADMIN_MAIL_ADDRESS'} = '';
+$proxysettings{'ADMIN_PASSWORD'} = '';
 $proxysettings{'ERR_LANGUAGE'} = 'German';
 $proxysettings{'ERR_DESIGN'} = 'ipfire';
 $proxysettings{'SUPPRESS_VERSION'} = 'off';
@@ -203,8 +210,10 @@ $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';
@@ -272,7 +281,7 @@ $proxysettings{'IDENT_USER_ACL'} = 'positive';
 $proxysettings{'ENABLE_FILTER'} = 'off';
 $proxysettings{'ENABLE_UPDXLRATOR'} = 'off';
 $proxysettings{'ENABLE_CLAMAV'} = 'off';
-$proxysettings{'CHILDREN'} = '5';
+$proxysettings{'CHILDREN'} = '10';
 
 $ncsa_buttontext = $Lang::tr{'advproxy NCSA create user'};
 
@@ -331,15 +340,15 @@ 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'};
@@ -354,12 +363,18 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'}
                        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+/) ||
                ($proxysettings{'CACHE_MEM'} < 1))
        {
                $errormessage = $Lang::tr{'advproxy errmsg mem cache size'};
                goto ERROR;
-       }               
+       }
        my @free = `/usr/bin/free`;
        $free[1] =~ m/(\d+)/;
        $cachemem = int $1 / 2048;
@@ -434,8 +449,8 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'}
                                }
                        }
                }
-               if ((!($proxysettings{'AUTH_MAX_USERIP'} eq '')) && 
-                       ((!($proxysettings{'AUTH_MAX_USERIP'} =~ /^\d+/)) || ($proxysettings{'AUTH_MAX_USERIP'} < 1) || ($proxysettings{'AUTH_MAX_USERIP'} > 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;
@@ -625,6 +640,8 @@ ERROR:
                &writeconfig;
                &writepacfile;
 
+               if ($proxysettings{'CACHEMGR'} eq 'on'){&writecachemgr;}
+
                system ('/usr/local/bin/squidctrl', 'disable');
                unlink "${General::swroot}/proxy/enable";
                unlink "${General::swroot}/proxy/transparent";
@@ -643,7 +660,8 @@ ERROR:
                        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{'advproxy clear cache'})
@@ -704,6 +722,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'";
@@ -915,8 +936,7 @@ if ($netsettings{'BLUE_DEV'}) {
        print "<td colspan='2'>&nbsp;</td>";
 }
 print <<END
-       <td class='base'>$Lang::tr{'advproxy admin mail'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
-       <td><input type='text' name='ADMIN_MAIL_ADDRESS' value='$proxysettings{'ADMIN_MAIL_ADDRESS'}' /></td>
+       <td colspan='2'>&nbsp;</td>
 </tr>
 <tr>
 END
@@ -969,19 +989,24 @@ my $count = `arp -a | wc -l`;
 if ( $count < 1 ){$count = 1;}
 if ( -e "/usr/bin/squidclamav" ) {
        print "<td class='base'><b>".$Lang::tr{'advproxy squidclamav'}."</b><br />";
-       print $Lang::tr{'advproxy enabled'}."<input type='checkbox' name='ENABLE_CLAMAV' ".$checked{'ENABLE_CLAMAV'}{'on'}." /><br />";
-       print "+ ".int(sqrt($count) * 8);
+       if ( ! -e "/var/run/clamav/clamd.pid" ){
+               print "<font color='red'>clamav not running</font><br /><br />";
+               $proxysettings{'ENABLE_CLAMAV'} = 'off';
+               }
+       else {
+               print $Lang::tr{'advproxy enabled'}."<input type='checkbox' name='ENABLE_CLAMAV' ".$checked{'ENABLE_CLAMAV'}{'on'}." /><br />";
+               print "+ ".int(( $count**(1/3)) * 8);}
        print "</td>";
 } else {
        print "<td></td>";
 }
 print "<td class='base'><b>".$Lang::tr{'advproxy url filter'}."</b><br />";
 print $Lang::tr{'advproxy enabled'}."<input type='checkbox' name='ENABLE_FILTER' ".$checked{'ENABLE_FILTER'}{'on'}." /><br />";
-print "+ ".int(sqrt($count) * 6);
+print "+ ".int(($count**(1/3)) * 6);
 print "</td>";
 print "<td class='base'><b>".$Lang::tr{'advproxy update accelerator'}."</b><br />";
 print $Lang::tr{'advproxy enabled'}."<input type='checkbox' name='ENABLE_UPDXLRATOR' ".$checked{'ENABLE_UPDXLRATOR'}{'on'}." /><br />";
-print "+ ".int(sqrt($count) * 6);
+print "+ ".int(($count**(1/3)) * 5);
 print "</td></tr>";
 print <<END
 </table>
@@ -1038,6 +1063,18 @@ print <<END
 <tr>
        <td colspan='4'><b>$Lang::tr{'advproxy cache management'}</b></td>
 </tr>
+<tr>
+       <td class='base'>$Lang::tr{'proxy cachemgr'}:</td>
+       <td><input type='checkbox' name='CACHEMGR' $checked{'CACHEMGR'}{'on'} /></td>
+       <td class='base'>$Lang::tr{'advproxy admin mail'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+       <td><input type='text' name='ADMIN_MAIL_ADDRESS' value='$proxysettings{'ADMIN_MAIL_ADDRESS'}' /></td>
+</tr>
+<tr>
+       <td class='base'>$Lang::tr{'proxy filedescriptors'}:</td>
+       <td><input type='text' name='FILEDESCRIPTORS' value='$proxysettings{'FILEDESCRIPTORS'}' size='5' /></td>
+       <td class='base'>$Lang::tr{'proxy admin password'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+       <td><input type='text' name='ADMIN_PASSWORD' value='$proxysettings{'ADMIN_PASSWORD'}' /></td>
+</tr>
 <tr>
        <td width='25%'></td> <td width='20%'> </td><td width='25%'> </td><td width='30%'></td>
 </tr>
@@ -1162,10 +1199,10 @@ END
 
 if (!$proxysettings{'SRC_SUBNETS'})
 {
-       print "$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}\n";
+       print "$green_cidr\n";
        if ($netsettings{'BLUE_DEV'})
        {
-               print "$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}\n";
+               print "$blue_cidr\n";
        }
 } else { print $proxysettings{'SRC_SUBNETS'}; }
 
@@ -1324,7 +1361,7 @@ END
 
 # -------------------------------------------------------------------
 
-print <<END 
+print <<END
 
 <table width='100%'>
 <tr>
@@ -1513,7 +1550,7 @@ print <<END
        <td width='10%'><input type='checkbox' name='THROTTLE_MMEDIA' $checked{'THROTTLE_MMEDIA'}{'on'} /></td>
        <td width='15%'>&nbsp;</td>
        <td width='10%'>&nbsp;</td>
-</tr>  
+</tr>
 </table>
 <hr size='1'>
 <table width='100%'>
@@ -1754,9 +1791,9 @@ print <<END
 END
 ;
 if (!$proxysettings{'IDENT_HOSTS'}) {
-       print "$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}\n";
+       print "$green_cidr\n";
        if ($netsettings{'BLUE_DEV'}) {
-               print "$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}\n";
+               print "$blue_cidr\n";
        }
 } else {
        print $proxysettings{'IDENT_HOSTS'};
@@ -2111,6 +2148,7 @@ print <<END
 <tr>
        <td>&nbsp;</td>
        <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+       <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'proxy reconfigure'}' /></td>
        <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'advproxy save and restart'}' /></td>
        <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'advproxy clear cache'}' /></td>
        <td>&nbsp;</td>
@@ -2543,6 +2581,7 @@ sub check_acls
        }
 
        @temp = split(/\n/,$proxysettings{'DST_NOAUTH'});
+       undef $proxysettings{'DST_NOAUTH'};
        foreach (@temp)
        {
                s/^\s+//g;
@@ -2659,10 +2698,10 @@ sub write_acls
        flock(FILE, 2);
        if (!$proxysettings{'SRC_SUBNETS'})
        {
-               print FILE "$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}\n";
+               print FILE "$green_cidr\n";
                if ($netsettings{'BLUE_DEV'})
                {
-                       print FILE "$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}\n";
+                       print FILE "$blue_cidr\n";
                }
        } else { print FILE $proxysettings{'SRC_SUBNETS'}; }
        close(FILE);
@@ -2913,7 +2952,7 @@ END
                        {
                                @temp = split(/\//);
                                if (
-                                       ($temp[0] ne $netsettings{'GREEN_NETADDRESS'}) && ($temp[1] ne $netsettings{'GREEN_NETMASK'}) && 
+                                       ($temp[0] ne $netsettings{'GREEN_NETADDRESS'}) && ($temp[1] ne $netsettings{'GREEN_NETMASK'}) &&
                                        ($temp[0] ne $netsettings{'BLUE_NETADDRESS'}) && ($temp[1] ne $netsettings{'BLUE_NETMASK'})
                                        )
                                {
@@ -3015,7 +3054,7 @@ END
                        print FILE "cache deny no_cache_domains\n";
                }
                if (!-z $acl_dst_nocache_net) {
-                       print FILE "acl no_cache_domains dst \"$acl_dst_nocache_net\"\n";
+                       print FILE "acl no_cache_ipaddr dst \"$acl_dst_nocache_net\"\n";
                        print FILE "cache deny no_cache_ipaddr\n";
                }
                if (!-z $acl_dst_nocache_url) {
@@ -3184,7 +3223,7 @@ END
                                                print MSNTCONF "allowusers $ntlmdir/msntauth.allowusers\n";
                                        } else {
                                                print MSNTCONF "denyusers $ntlmdir/msntauth.denyusers\n";
-                                       } 
+                                       }
                                }
                                close(MSNTCONF);
                        }
@@ -3268,7 +3307,7 @@ END
 
        if ($proxysettings{'ENABLE_BROWSER_CHECK'} eq 'on') { print FILE "acl with_allowed_useragents browser $browser_regexp\n\n"; }
 
-       print FILE "acl within_timeframe time "; 
+       print FILE "acl within_timeframe time ";
        if ($proxysettings{'TIME_MON'} eq 'on') { print FILE "M"; }
        if ($proxysettings{'TIME_TUE'} eq 'on') { print FILE "T"; }
        if ($proxysettings{'TIME_WED'} eq 'on') { print FILE "W"; }
@@ -3286,8 +3325,8 @@ END
        }
 
        print FILE <<END
-acl all src 0.0.0.0/0.0.0.0
-acl localhost src 127.0.0.1/255.255.255.255
+#acl all src all
+acl localhost src 127.0.0.1/32
 END
 ;
 open (PORTS,"$acl_ports_ssl");
@@ -3311,12 +3350,12 @@ acl IPFire_https port $https_port
 acl IPFire_ips              dst $netsettings{'GREEN_ADDRESS'}
 acl IPFire_networks         src "$acl_src_subnets"
 acl IPFire_servers          dst "$acl_src_subnets"
-acl IPFire_green_network    src $netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}
-acl IPFire_green_servers    dst $netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}
+acl IPFire_green_network    src $green_cidr
+acl IPFire_green_servers    dst $green_cidr
 END
        ;
-       if ($netsettings{'BLUE_DEV'}) { print FILE "acl IPFire_blue_network     src $netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}\n"; }
-       if ($netsettings{'BLUE_DEV'}) { print FILE "acl IPFire_blue_servers     dst $netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}\n"; }
+       if ($netsettings{'BLUE_DEV'}) { print FILE "acl IPFire_blue_network     src $blue_cidr\n"; }
+       if ($netsettings{'BLUE_DEV'}) { print FILE "acl IPFire_blue_servers     dst $blue_cidr\n"; }
        if (!-z $acl_src_banned_ip) { print FILE "acl IPFire_banned_ips       src \"$acl_src_banned_ip\"\n"; }
        if (!-z $acl_src_banned_mac) { print FILE "acl IPFire_banned_mac       arp \"$acl_src_banned_mac\"\n"; }
        if (!-z $acl_src_unrestricted_ip) { print FILE "acl IPFire_unrestricted_ips src \"$acl_src_unrestricted_ip\"\n"; }
@@ -3364,7 +3403,7 @@ END
        my $blue_net = ''; #BLUE empty by default
        my $blue_ip = '';
        if ($netsettings{'BLUE_DEV'} && $proxysettings{'ENABLE_BLUE'} eq 'on') {
-               $blue_net = "$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}";
+               $blue_net = "$blue_cidr";
                $blue_ip  = "$netsettings{'BLUE_ADDRESS'}";
        }
        if (!-z $acl_include)
@@ -3373,7 +3412,7 @@ END
                print FILE "\n#Start of custom includes\n\n";
                while (<ACL>) {
                        $_ =~ s/__GREEN_IP__/$netsettings{'GREEN_ADDRESS'}/;
-                       $_ =~ s/__GREEN_NET__/$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}/;
+                       $_ =~ s/__GREEN_NET__/$green_cidr/;
                        $_ =~ s/__BLUE_IP__/$blue_ip/;
                        $_ =~ s/__BLUE_NET__/$blue_net/;
                        $_ =~ s/__PROXY_PORT__/$proxysettings{'PROXY_PORT'}/;
@@ -3500,7 +3539,7 @@ if ($delaypools) {
                print FILE "delay_access 2 deny  all\n";
        }
 
-       print FILE "delay_initial_bucket_level 100\n"; 
+       print FILE "delay_initial_bucket_level 100\n";
        print FILE "\n";
 }
 
@@ -3606,7 +3645,7 @@ END
                        if (($proxysettings{'AUTH_METHOD'} eq 'ntlm') && ($proxysettings{'NTLM_ENABLE_INT_AUTH'} eq 'on'))
                        {
                                if ($proxysettings{'NTLM_ENABLE_ACL'} eq 'on')
-                               {       
+                               {
                                        if (($proxysettings{'NTLM_USER_ACL'} eq 'positive') && (!-z "$ntlmdir/msntauth.allowusers"))
                                        {
                                                print FILE " for_acl_users";
@@ -3651,7 +3690,7 @@ END
                        if (($proxysettings{'AUTH_METHOD'} eq 'ntlm') && ($proxysettings{'NTLM_ENABLE_INT_AUTH'} eq 'on'))
                        {
                                if ($proxysettings{'NTLM_ENABLE_ACL'} eq 'on')
-                               {       
+                               {
                                        if (($proxysettings{'NTLM_USER_ACL'} eq 'positive') && (!-z "$ntlmdir/msntauth.allowusers"))
                                        {
                                                print FILE " for_acl_users";
@@ -3778,19 +3817,23 @@ END
 
                if ($proxysettings{'FORWARD_IPADDRESS'} eq 'off')
                {
-                       print FILE "header_access X-Forwarded-For deny all\n";
+                       print FILE "request_header_access X-Forwarded-For deny all\n";
+                       print FILE "reply_header_access X-Forwarded-For deny all\n";
                }
                if ($proxysettings{'FORWARD_VIA'} eq 'off')
                {
-                       print FILE "header_access Via deny all\n";
+                       print FILE "request_header_access Via deny all\n";
+                       print FILE "reply_header_access Via deny all\n";
                }
                if (!($proxysettings{'FAKE_USERAGENT'} eq ''))
                {
-                       print FILE "header_access User-Agent deny all\n";
+                       print FILE "request_header_access User-Agent deny all\n";
+                       print FILE "reply_header_access User-Agent deny all\n";
                }
                if (!($proxysettings{'FAKE_REFERER'} eq ''))
                {
-                       print FILE "header_access Referer deny all\n";
+                       print FILE "request_header_access Referer deny all\n";
+                       print FILE "reply_header_access Referer deny all\n";
                }
 
                print FILE "\n";
@@ -3838,14 +3881,18 @@ END
        ;
        $replybodymaxsize = 1024 * $proxysettings{'MAX_INCOMING_SIZE'};
        if ($proxysettings{'MAX_INCOMING_SIZE'} > 0) {
-               if (!-z $acl_src_unrestricted_ip) { print FILE "reply_body_max_size 0 allow IPFire_unrestricted_ips\n"; }
-               if (!-z $acl_src_unrestricted_mac) { print FILE "reply_body_max_size 0 allow IPFire_unrestricted_mac\n"; }
+               if (!-z $acl_src_unrestricted_ip) { print FILE "reply_body_max_size 0 deny IPFire_unrestricted_ips\n"; }
+               if (!-z $acl_src_unrestricted_mac) { print FILE "reply_body_max_size 0 deny IPFire_unrestricted_mac\n"; }
                if ($proxysettings{'AUTH_METHOD'} eq 'ncsa')
                {
-                       if (!-z $extgrp) { print FILE "reply_body_max_size 0 allow for_extended_users\n"; }
+                       if (!-z $extgrp) { print FILE "reply_body_max_size 0 deny for_extended_users\n"; }
                }
        }
-       print FILE "reply_body_max_size $replybodymaxsize allow all\n\n";
+       
+       if ( $replybodymaxsize != '0' )
+       {
+               print FILE "reply_body_max_size $replybodymaxsize deny all\n\n";
+       }
 
        print FILE "visible_hostname";
        if ($proxysettings{'VISIBLE_HOSTNAME'} eq '')
@@ -3855,7 +3902,11 @@ END
                print FILE " $proxysettings{'VISIBLE_HOSTNAME'}\n\n";
        }
 
-       if (!($proxysettings{'ADMIN_MAIL_ADDRESS'} eq '')) { print FILE "cache_mgr $proxysettings{'ADMIN_MAIL_ADDRESS'}\n\n"; }
+       if (!($proxysettings{'ADMIN_MAIL_ADDRESS'} eq '')) { print FILE "cache_mgr $proxysettings{'ADMIN_MAIL_ADDRESS'}\n"; }
+       if (!($proxysettings{'ADMIN_PASSWORD'} eq '')) { print FILE "cachemgr_passwd $proxysettings{'ADMIN_PASSWORD'} all\n"; }
+       print FILE "\n";
+
+       print FILE "max_filedescriptors $proxysettings{'FILEDESCRIPTORS'}\n\n";
 
        # Write the parent proxy info, if needed.
        if ($remotehost ne '')
@@ -3953,3 +4004,15 @@ sub deluser
 }
 
 # -------------------------------------------------------------------
+
+sub writecachemgr
+{
+       open(FILE, ">${General::swroot}/proxy/cachemgr.conf");
+       flock(FILE, 2);
+       print FILE "$netsettings{'GREEN_ADDRESS'}:$proxysettings{'PROXY_PORT'}\n";
+       print FILE "localhost";
+       close(FILE);
+  return;
+}
+
+# -------------------------------------------------------------------