#! /usr/bin/perl -w # # cvt-urlbldb # Author : Jose-Marcio.Martins@ensmp.fr # Date : Nov 21, 2004 # # Conversion program used to convert j-chkmail URL database # # Usage : # cvt-urlbldb [-s newscore] [-w whitelist] [-o source] inputfile > outputfile # newscore : new score for each URL # whitelist : file containing domains to be whitelisted # source : all | multi.surbl | j-chkmail | spamanti.net use strict; use Getopt::Long; my $score = 20; my $wlfile = "whitelist"; my $src = "all"; my $ok = GetOptions('s=i' => \$score, 'w=s' => \$wlfile, 'o=s' => \$src); my $date = time(); my %WL = (); rd_wl_file(); while (<>) { chomp; next if /^\s*$/; next if /^\s*#/; eff_blancs($_); my ($key, $value, undef) = split; my ($tag, $url) = split (':', $key); next if exists $WL{$url}; my ($oldscore, $date, $code, $oldsrc, undef) = split(':', $value); $oldscore = $score if ($src =~ /all/i || $src eq $oldsrc); printf "%-46s %d:%d:%s:%s\n", $key, $oldscore, $date, $code, $oldsrc; } exit 0; # # sub rd_wl_file { return 0 unless (-f $wlfile); open WL, "< $wlfile" || die "Error opening $wlfile"; %WL = map { $_, 1} grep { chomp; eff_blancs($_); !/(^\s*$)|(^\s#)/;} ; close WL; return 1; } # # sub eff_blancs { return "" if $#_ < 0; $_[0] =~ s/^\s+|\s+$//g; return $_[0]; }