X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=config%2Furlfilter%2Fautoupdate.pl;h=6d61f43741941cd254f13d9dc3003727568ba912;hb=1465b12776a8ab342cf19f959d065781c1dabfc8;hp=9e61b44c4317a1c072eca2c404178cf690c363f9;hpb=10e4f2395ed42d50545ef9c3d73994b542e09dac;p=people%2Fteissler%2Fipfire-2.x.git diff --git a/config/urlfilter/autoupdate.pl b/config/urlfilter/autoupdate.pl index 9e61b44c4..6d61f4374 100644 --- a/config/urlfilter/autoupdate.pl +++ b/config/urlfilter/autoupdate.pl @@ -1,181 +1,10 @@ #!/usr/bin/perl - # -# $Id: autoupdate.pl,v 1.0 2005/06/15 00:00:00 marco Exp $ +# This code is distributed under the terms of the GPL # -use strict; - -my $make_clean = 1; - -my $swroot = "/var/ipfire"; -my $target = "$swroot/urlfilter/download"; -my $dbdir = "$swroot/urlfilter/blacklists"; - -my $sourceurlfile = "$swroot/urlfilter/autoupdate/autoupdate.urls"; -my $updconffile = "$swroot/urlfilter/autoupdate/autoupdate.conf"; -my $updflagfile = "$swroot/urlfilter/blacklists/.autoupdate.last"; - -my %cgiparams; -my %updatesettings; -my $blacklist_url; -my $blacklist_src; -my $source_url; -my $source_name; -my @source_urllist; - -my $blacklist; -my $category; - -my $exitcode = 1; - -if (-e "$sourceurlfile") -{ - open(FILE, $sourceurlfile); - @source_urllist = ; - close(FILE); -} - -if (-e "$updconffile") { &readhash("$updconffile", \%updatesettings); } - -if (@ARGV[0] =~ m@^(f|h)tt?ps?://@) { $updatesettings{'UPDATE_SOURCE'} = @ARGV[0]; } - -if ($updatesettings{'UPDATE_SOURCE'} eq 'custom') -{ - $blacklist_url=$updatesettings{'CUSTOM_UPDATE_URL'}; -} else { - $blacklist_url=$updatesettings{'UPDATE_SOURCE'}; - foreach (@source_urllist) - { - chomp; - $source_name = substr($_,0,rindex($_,",")); - $source_url = substr($_,index($_,",")+1); - if ($blacklist_url eq $source_url) { $blacklist_src=$source_name; } - } -} - -if ($blacklist_src eq '') { $blacklist_src="custom source URL"; } - -$blacklist_url =~ s/\&/\\\&/; - -$blacklist=substr($blacklist_url,rindex($blacklist_url,"/")+1); -if (($blacklist =~ /\?/) || (!($blacklist =~ /\.t(ar\.)?gz$/))) { $blacklist = 'blacklist.tar.gz'; } -$blacklist=$target.'/'.$blacklist; - -unless ($blacklist_url eq '') -{ - - if (-d $target) { system("rm -rf $target"); } - system("mkdir $target"); - - system("/usr/bin/wget -o $target/wget.log -O $blacklist $blacklist_url"); - - if (-e $blacklist) - { - system("/bin/tar --no-same-owner -xzf $blacklist -C $target"); - if (-d "$target/blacklists") - { - open(FILE, ">$target/update.conf"); - flock FILE, 2; - print FILE "logdir $target\n"; - print FILE "dbhome $target/blacklists\n\n"; - - foreach (<$target/blacklists/*>) - { - if ((-d $_) && ((-s "$_/domains") || (-s "$_/urls"))) - { - $category=substr($_,rindex($_,"/")+1); - print FILE "dest $category {\n"; - if (-s "$_/domains") { print FILE " domainlist $category/domains\n"; } - if (-s "$_/urls") { print FILE " urllist $category/urls\n"; } - print FILE "}\n\n"; - } - } - print FILE "acl {\n"; - print FILE " default {\n"; - print FILE " pass none\n"; - print FILE " }\n"; - print FILE "}\n"; - close FILE; - - system("/usr/sbin/squidGuard -d -c $target/update.conf -C all"); - - system("cp -r $target/blacklists/* $dbdir"); - - system("chown -R nobody.nobody $dbdir"); - - foreach $category (<$dbdir/*>) - { - if (-d $category) - { - system("chmod 755 $category &> /dev/null"); - foreach $blacklist (<$category/*>) - { - if (-f $blacklist){ system("chmod 644 $blacklist &> /dev/null"); } - if (-d $blacklist){ system("chmod 755 $blacklist &> /dev/null"); } - } - system("chmod 666 $category/*.db &> /dev/null"); - } - } - - system("touch $updflagfile"); - system("chown nobody.nobody $updflagfile"); - - system("/usr/local/bin/restartsquid"); - - system("logger -t installpackage[urlfilter] \"URL filter blacklist - Update from $blacklist_src completed\""); - - $exitcode = 0; - - } else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: Not a valid URL filter blacklist\""); - } - } else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: Unable to retrieve blacklist from $blacklist_src\""); - } - -} else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: No update source defined\""); -} - -if ((-d $target) && ($make_clean)) { system("rm -rf $target"); } - -exit $exitcode; - -# ------------------------------------------------------------------- - -sub readhash -{ - my $filename = $_[0]; - my $hash = $_[1]; - my ($var, $val); - - if (-e $filename) - { - open(FILE, $filename) or die "Unable to read file $filename"; - while () - { - chop; - ($var, $val) = split /=/, $_, 2; - if ($var) - { - $val =~ s/^\'//g; - $val =~ s/\'$//g; - - # Untaint variables read from hash - $var =~ /([A-Za-z0-9_-]*)/; $var = $1; - $val =~ /([\w\W]*)/; $val = $1; - $hash->{$var} = $val; - } - } - close FILE; - } -} - -# ------------------------------------------------------------------- -#!/usr/bin/perl - +# (c) 2004-2007 marco.s - http://www.urlfilter.net # -# $Id: autoupdate.pl,v 1.0 2005/06/15 00:00:00 marco Exp $ +# $Id: autoupdate.pl,v 1.1 2007/03/14 00:00:00 marco.s Exp $ # use strict; @@ -183,6 +12,7 @@ my $make_clean = 1; my $swroot = "/var/ipfire"; my $target = "$swroot/urlfilter/download"; +my $tempdb = "$target/blacklists"; my $dbdir = "$swroot/urlfilter/blacklists"; my $sourceurlfile = "$swroot/urlfilter/autoupdate/autoupdate.urls"; @@ -197,6 +27,7 @@ my $source_url; my $source_name; my @source_urllist; +my @categories; my $blacklist; my $category; @@ -246,24 +77,32 @@ unless ($blacklist_url eq '') if (-e $blacklist) { system("/bin/tar --no-same-owner -xzf $blacklist -C $target"); - if (-d "$target/blacklists") + if (-d "$target/BL") { system ("mv $target/BL $target/blacklists"); } + if (-d "$tempdb") { + undef(@categories); + &getblockcategory ($tempdb); + foreach (@categories) { $_ = substr($_,length($tempdb)+1); } + open(FILE, ">$target/update.conf"); flock FILE, 2; print FILE "logdir $target\n"; - print FILE "dbhome $target/blacklists\n\n"; - - foreach (<$target/blacklists/*>) - { - if ((-d $_) && ((-s "$_/domains") || (-s "$_/urls"))) - { - $category=substr($_,rindex($_,"/")+1); - print FILE "dest $category {\n"; - if (-s "$_/domains") { print FILE " domainlist $category/domains\n"; } - if (-s "$_/urls") { print FILE " urllist $category/urls\n"; } - print FILE "}\n\n"; + print FILE "dbhome $tempdb\n\n"; + + foreach $category (@categories) { + $blacklist = $category; + $category =~ s/\//_/g; + print FILE "dest $category {\n"; + if (-s "$tempdb/$blacklist/domains") { + print FILE " domainlist $blacklist\/domains\n"; + } + if (-s "$tempdb/$blacklist/urls") { + print FILE " urllist $blacklist\/urls\n"; } + print FILE "}\n\n"; + $category = $blacklist; } + print FILE "acl {\n"; print FILE " default {\n"; print FILE " pass none\n"; @@ -277,19 +116,7 @@ unless ($blacklist_url eq '') system("chown -R nobody.nobody $dbdir"); - foreach $category (<$dbdir/*>) - { - if (-d $category) - { - system("chmod 755 $category &> /dev/null"); - foreach $blacklist (<$category/*>) - { - if (-f $blacklist){ system("chmod 644 $blacklist &> /dev/null"); } - if (-d $blacklist){ system("chmod 755 $blacklist &> /dev/null"); } - } - system("chmod 666 $category/*.db &> /dev/null"); - } - } + &setpermissions ($dbdir); system("touch $updflagfile"); system("chown nobody.nobody $updflagfile"); @@ -346,177 +173,41 @@ sub readhash } # ------------------------------------------------------------------- -#!/usr/bin/perl - -# -# $Id: autoupdate.pl,v 1.0 2005/06/15 00:00:00 marco Exp $ -# -use strict; - -my $make_clean = 1; - -my $swroot = "/var/ipfire"; -my $target = "$swroot/urlfilter/download"; -my $dbdir = "$swroot/urlfilter/blacklists"; - -my $sourceurlfile = "$swroot/urlfilter/autoupdate/autoupdate.urls"; -my $updconffile = "$swroot/urlfilter/autoupdate/autoupdate.conf"; -my $updflagfile = "$swroot/urlfilter/blacklists/.autoupdate.last"; - -my %cgiparams; -my %updatesettings; -my $blacklist_url; -my $blacklist_src; -my $source_url; -my $source_name; -my @source_urllist; - -my $blacklist; -my $category; - -my $exitcode = 1; - -if (-e "$sourceurlfile") -{ - open(FILE, $sourceurlfile); - @source_urllist = ; - close(FILE); -} - -if (-e "$updconffile") { &readhash("$updconffile", \%updatesettings); } - -if (@ARGV[0] =~ m@^(f|h)tt?ps?://@) { $updatesettings{'UPDATE_SOURCE'} = @ARGV[0]; } - -if ($updatesettings{'UPDATE_SOURCE'} eq 'custom') -{ - $blacklist_url=$updatesettings{'CUSTOM_UPDATE_URL'}; -} else { - $blacklist_url=$updatesettings{'UPDATE_SOURCE'}; - foreach (@source_urllist) - { - chomp; - $source_name = substr($_,0,rindex($_,",")); - $source_url = substr($_,index($_,",")+1); - if ($blacklist_url eq $source_url) { $blacklist_src=$source_name; } - } -} - -if ($blacklist_src eq '') { $blacklist_src="custom source URL"; } - -$blacklist_url =~ s/\&/\\\&/; - -$blacklist=substr($blacklist_url,rindex($blacklist_url,"/")+1); -if (($blacklist =~ /\?/) || (!($blacklist =~ /\.t(ar\.)?gz$/))) { $blacklist = 'blacklist.tar.gz'; } -$blacklist=$target.'/'.$blacklist; -unless ($blacklist_url eq '') +sub getblockcategory { - - if (-d $target) { system("rm -rf $target"); } - system("mkdir $target"); - - system("/usr/bin/wget -o $target/wget.log -O $blacklist $blacklist_url"); - - if (-e $blacklist) + foreach $category (<$_[0]/*>) { - system("/bin/tar --no-same-owner -xzf $blacklist -C $target"); - if (-d "$target/blacklists") + if (-d $category) { - open(FILE, ">$target/update.conf"); - flock FILE, 2; - print FILE "logdir $target\n"; - print FILE "dbhome $target/blacklists\n\n"; - - foreach (<$target/blacklists/*>) + if ((-s "$category/domains") || (-s "$category/urls")) { - if ((-d $_) && ((-s "$_/domains") || (-s "$_/urls"))) - { - $category=substr($_,rindex($_,"/")+1); - print FILE "dest $category {\n"; - if (-s "$_/domains") { print FILE " domainlist $category/domains\n"; } - if (-s "$_/urls") { print FILE " urllist $category/urls\n"; } - print FILE "}\n\n"; - } + unless ($category =~ /\bcustom\b/) { push(@categories,$category); } } - print FILE "acl {\n"; - print FILE " default {\n"; - print FILE " pass none\n"; - print FILE " }\n"; - print FILE "}\n"; - close FILE; - - system("/usr/sbin/squidGuard -d -c $target/update.conf -C all"); - - system("cp -r $target/blacklists/* $dbdir"); - - system("chown -R nobody.nobody $dbdir"); - - foreach $category (<$dbdir/*>) - { - if (-d $category) - { - system("chmod 755 $category &> /dev/null"); - foreach $blacklist (<$category/*>) - { - if (-f $blacklist){ system("chmod 644 $blacklist &> /dev/null"); } - if (-d $blacklist){ system("chmod 755 $blacklist &> /dev/null"); } - } - system("chmod 666 $category/*.db &> /dev/null"); - } - } - - system("touch $updflagfile"); - system("chown nobody.nobody $updflagfile"); - - system("/usr/local/bin/restartsquid"); - - system("logger -t installpackage[urlfilter] \"URL filter blacklist - Update from $blacklist_src completed\""); - - $exitcode = 0; - - } else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: Not a valid URL filter blacklist\""); + &getblockcategory ($category); } - } else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: Unable to retrieve blacklist from $blacklist_src\""); } - -} else { - system("logger -t installpackage[urlfilter] \"URL filter blacklist - ERROR: No update source defined\""); } -if ((-d $target) && ($make_clean)) { system("rm -rf $target"); } - -exit $exitcode; - # ------------------------------------------------------------------- -sub readhash +sub setpermissions { - my $filename = $_[0]; - my $hash = $_[1]; - my ($var, $val); + my $bldir = $_[0]; - if (-e $filename) + foreach $category (<$bldir/*>) { - open(FILE, $filename) or die "Unable to read file $filename"; - while () - { - chop; - ($var, $val) = split /=/, $_, 2; - if ($var) + if (-d $category){ + system("chmod 755 $category &> /dev/null"); + foreach $blacklist (<$category/*>) { - $val =~ s/^\'//g; - $val =~ s/\'$//g; - - # Untaint variables read from hash - $var =~ /([A-Za-z0-9_-]*)/; $var = $1; - $val =~ /([\w\W]*)/; $val = $1; - $hash->{$var} = $val; + if (-f $blacklist) { system("chmod 644 $blacklist &> /dev/null"); } + if (-d $blacklist) { system("chmod 755 $blacklist &> /dev/null"); } } + system("chmod 666 $category/*.db &> /dev/null"); + &setpermissions ($category); } - close FILE; - } + } } # -------------------------------------------------------------------