Merge branch 'master' of defaria.com:/opt/git/clearscm
[clearscm.git] / maps / bin / add2nulllist.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 use FindBin;
6
7 use lib $FindBin::Bin, '/opt/clearscm/lib';
8
9 use MAPS;
10 use MAPSLog;
11 use MAPSWeb;
12 use Display;
13
14 # Highly specialized!
15 my $userid = $ENV{USER};
16 my $Userid;
17 my $type = "null";
18
19 sub GetItems {
20   my $filename = shift;
21
22   my @items;
23
24   open FILE, $filename
25     or error "Unable to open $filename - $!", 1;
26
27   while (<FILE>) {
28     my @fields = split;
29     my %item;
30
31     my @address = split /\@/, $fields [0];
32
33     $item{pattern}   = $address[0];
34     $item{domain}    = $address[1];
35     $item{comment}   = $fields[1] ? $fields[1] : '';
36     $itme{hit_count} = $fields[2] ? $fields[2] : 0;
37
38     push @items, \%item;
39   } # while
40
41   return @items;
42 } # GetItems
43
44 sub Add2List {
45   my @items = @_;
46
47   my $sender  = "";
48   my $nextseq = MAPSDB::GetNextSequenceNo $userid, $type;
49
50   foreach (@items) {
51     my %item = %{$_};
52
53     my $pattern   = $item{pattern};
54     my $domain    = $item{domain};
55     my $comment   = $item{comment};
56     my $hit_count = $item{hit_count};
57
58     display_nolf "Adding $pattern\@$domain ($comment) to null list ($nextseq)...";
59
60     last if ((!defined $pattern || $pattern eq '') &&
61              (!defined $domain  || $domain  eq ''));
62
63     $sender = lc ("$pattern\@$domain");
64
65     if (OnNulllist $sender) {
66       display " Already on list";
67     } else {
68       Add2Nulllist $sender, $userid, $comment, $hit_count;
69       display " done";
70
71       # Now remove this entry from the other lists (if present)
72       foreach my $otherlist ("white", "black") {
73         my $sth = FindList $otherlist, $sender;
74         my ($sequence, $count);
75
76         ($_, $_, $_, $_, $_, $sequence) = GetList $sth;
77
78         if ($sequence) {
79           $count = DeleteList $otherlist, $sequence;
80         } # if
81       } # foreach
82     } # if
83     $nextseq++;
84   } # while
85 } # Add2List
86
87 # Main
88 my $filename;
89
90 if ($ARGV [0]) {
91   $filename = $ARGV[0];
92 } else {
93   error "Must specify a filename of addresses to null list", 1;
94 } # if
95
96 SetContext $userid;
97
98 $Userid = ucfirst $userid;
99
100 Add2List (GetItems $filename);
101
102 exit;