diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 3cdb36fbd..41643d8d7 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -1030,4 +1030,27 @@ sub RedIsWireless() { return 0; } +# Function to read a file with UTF-8 charset. +sub read_file_utf8 ($) { + my ($file) = @_; + + open my $in, '<:encoding(UTF-8)', $file or die "Could not open '$file' for reading $!"; + local $/ = undef; + my $all = <$in>; + close $in; + + return $all; +} + +# Function to write a file with UTF-8 charset. +sub write_file_utf8 ($) { + my ($file, $content) = @_; + + open my $out, '>:encoding(UTF-8)', $file or die "Could not open '$file' for writing $!";; + print $out $content; + close $out; + + return; +} + 1; diff --git a/config/squidclamav/squidclamav.conf b/config/squidclamav/squidclamav.conf index 19bffa060..2b8f5dc02 100644 --- a/config/squidclamav/squidclamav.conf +++ b/config/squidclamav/squidclamav.conf @@ -1,6 +1,5 @@ -#squid_ip 127.0.0.1 -#squid_port 3128 -proxy none +squid_ip 127.0.0.1 +squid_port 800 # logfile /var/log/squid/squidclamav.log redirect http://127.0.0.1:81/clwarn.cgi @@ -15,7 +14,7 @@ clamd_local /var/run/clamav/clamd maxsize 5000000 maxredir 30 timeout 60 -#trust_cache 1 +trust_cache 1 # # Do not scan standard HTTP images abort ^.*\.(ico|gif|png|jpg)$ @@ -37,4 +36,4 @@ abortcontent ^video\/x-flv$ abortcontent ^.*application\/x-mms-framed.*$ # # White list some sites -whitelist .*\.clamav.net \ No newline at end of file +whitelist .*\.clamav.net diff --git a/html/cgi-bin/proxy.cgi b/html/cgi-bin/proxy.cgi index fb313ac7c..c42d35a95 100644 --- a/html/cgi-bin/proxy.cgi +++ b/html/cgi-bin/proxy.cgi @@ -699,6 +699,16 @@ if (!$errormessage) &read_acls; } +# ------------------------------------------------------------------ + +# Hook to regenerate the configuration files, if cgi got called from command line. +if ($ENV{"REMOTE_ADDR"} eq "") { + writeconfig(); + exit(0); +} + +# ------------------------------------------------------------------- + $checked{'ENABLE'}{'off'} = ''; $checked{'ENABLE'}{'on'} = ''; $checked{'ENABLE'}{$proxysettings{'ENABLE'}} = "checked='checked'"; @@ -3061,12 +3071,6 @@ icp_port 0 END ; - - # Include file with user defined settings. - if (-e "/etc/squid/squid.conf.pre.local") { - print FILE "include /etc/squid/squid.conf.pre.local\n\n"; - } - print FILE "http_port $netsettings{'GREEN_ADDRESS'}:$proxysettings{'PROXY_PORT'}"; if ($proxysettings{'TRANSPARENT'} eq 'on') { print FILE " transparent" } if ($proxysettings{'NO_CONNECTION_AUTH'} eq 'on') { print FILE " no-connection-auth" } @@ -3448,6 +3452,19 @@ END close (ACL); } if ((!-z $extgrp) && ($proxysettings{'AUTH_METHOD'} eq 'ncsa') && ($proxysettings{'NCSA_BYPASS_REDIR'} eq 'on')) { print FILE "\nredirector_access deny for_extended_users\n"; } + + # Check if squidclamav is enabled. + if ($proxysettings{'ENABLE_CLAMAV'} eq 'on') { + print FILE "\n#Settings for squidclamav:\n"; + print FILE "http_port 127.0.0.1:$proxysettings{'PROXY_PORT'} transparent\n"; + print FILE "acl to_localhost dst 127.0.0.0/8\n"; + print FILE "acl purge method PURGE\n"; + print FILE "http_access deny to_localhost\n"; + print FILE "http_access allow localhost\n"; + print FILE "http_access allow purge localhost\n"; + print FILE "http_access deny purge\n"; + print FILE "url_rewrite_access deny localhost\n"; + } print FILE <