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;
-#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
maxsize 5000000
maxredir 30
timeout 60
-#trust_cache 1
+trust_cache 1
#
# Do not scan standard HTTP images
abort ^.*\.(ico|gif|png|jpg)$
abortcontent ^.*application\/x-mms-framed.*$
#
# White list some sites
-whitelist .*\.clamav.net
\ No newline at end of file
+whitelist .*\.clamav.net
&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'";
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" }
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 <<END
#Access to squid:
print FILE "include /etc/squid/squid.conf.local\n";
}
close FILE;
+
+ # Proxy settings for squidclamav - if installed.
+ #
+ # Check if squidclamav is enabled.
+ if ($proxysettings{'ENABLE_CLAMAV'} eq 'on') {
+
+ my $configfile='/etc/squidclamav.conf';
+
+ my $data = &General::read_file_utf8($configfile);
+ $data =~ s/squid_port [0-9]+/squid_port $proxysettings{'PROXY_PORT'}/g;
+ &General::write_file_utf8($configfile, $data);
+ }
}
# -------------------------------------------------------------------
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = squidclamav
-PAK_VER = 15
+PAK_VER = 17
DEPS = "clamav"
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/squidclamav-5.11-dont_use_ipv6.patch
cd $(DIR_APP) && ./configure --prefix=/usr
cd $(DIR_APP) && make install
install -v -m 755 $(DIR_CONF)/squidclamav/squidclamav.conf /etc/squidclamav.conf
sed -e "s|logfile.*|logfile /var/log/squid/squidclamav.log|g" /etc/squidclamav.conf
fi
+if [ "$VERSION" -lt "16" ]; then
+ sed -e "s/proxy none//g" -i /etc/squidclamav.conf
+ sed -e "s/^#squid_ip 127\.0\.0\.1/squid_ip 127\.0\.0\.1/g" \
+ -e "s/^#squid_port 3128/squid_port 800/g" \
+ -e "s/^#trust_cache 1/trust_cache 1/g" -i /etc/squidclamav.conf
+
+ # Regenerate configuration files.
+ perl /srv/web/ipfire/cgi-bin/proxy.cgi
+fi
+
/etc/init.d/squid restart
--- /dev/null
+diff -Nur a/src/squidclamav.c b/src/squidclamav.c
+--- a/src/squidclamav.c 2012-10-29 09:46:06.000000000 +0100
++++ b/src/squidclamav.c 2013-07-06 19:10:56.375292374 +0200
+@@ -413,6 +413,9 @@
+ /* Suppress error: SSL certificate problem, verify that the CA cert is OK */
+ curl_easy_setopt (eh, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, 0);
++
++ /* Prevent squidclamav from using IPv6 - fix by Nico Prenzel */
++ curl_easy_setopt (eh, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+ }
+ }
+ /* create a squidguard child process and setup pipes */