]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - config/urlfilter/autoupdate.pl
Removed collectd config.
[people/pmueller/ipfire-2.x.git] / config / urlfilter / autoupdate.pl
index 9e61b44c4317a1c072eca2c404178cf690c363f9..fa6ec91dd0473d696a6134e8e80ce7968a5470c8 100644 (file)
 #!/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 = <FILE>;
-       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 (<FILE>)
-               {
-                       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";
@@ -271,30 +110,18 @@ unless ($blacklist_url eq '')
                        print FILE "}\n";
                        close FILE;
 
-                       system("/usr/sbin/squidGuard -d -c $target/update.conf -C all");
+                       system("/usr/bin/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");
-                               }
-                       }
+                       &setpermissions ($dbdir);
 
                        system("touch $updflagfile");
                        system("chown nobody.nobody $updflagfile");
 
-                       system("/usr/local/bin/restartsquid");
+                       system("/etc/init.d/squid restart");
 
                        system("logger -t installpackage[urlfilter] \"URL filter blacklist - Update from $blacklist_src completed\"");
 
@@ -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 = <FILE>;
-       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 ((-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 ((-s "$category/domains") || (-s "$category/urls"))
                        {
-                               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");
-                               }
+                               unless ($category =~ /\bcustom\b/) { push(@categories,$category); }
                        }
-
-                       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 (<FILE>)
-               {
-                       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;
-       }
+        }
 }
 
 # -------------------------------------------------------------------