bfa8f4db931296e321eb94785e9285ba64229da4
[clearscm.git] / maps / bin / add2blacklist.cgi
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         $RCSfile: add2blacklist.cgi,v $
5 # Revision:     $Revision: 1.1 $
6 # Description:  Add an email address to the blacklist
7 # Author:       Andrew@DeFaria.com
8 # Created:      Mon Jan 16 20:25:32 PST 2006
9 # Modified:     $Date: 2013/06/12 14:05:47 $
10 # Language:     Perl
11 #
12 # (c) Copyright 2000-2006, Andrew@DeFaria.com, all rights reserved.
13 #
14 ################################################################################
15 use strict;
16 use warnings;
17
18 use FindBin;
19 local $0 = $FindBin::Script;
20
21 use lib "$FindBin::Bin/../lib";
22 use lib "$FindBin::Bin/../../lib";
23
24 use Utils;
25
26 use MAPS;
27 use MAPSLog;
28 use MAPSWeb;
29
30 use CGI qw/:standard *table/;
31 use CGI::Carp 'fatalsToBrowser';
32
33 sub Add2List(%) {
34   my (%rec) = @_;
35
36   CheckParms(['userid', 'type'], \%rec);
37
38   my $nextseq = GetNextSequenceNo(%rec);
39
40   my $Userid = ucfirst $rec{userid};
41
42   while () {
43     $rec{pattern}   = param "pattern$nextseq";
44     $rec{domain}    = param "domain$nextseq";
45     $rec{comment}   = param "comment$nextseq";
46     $rec{hit_count} = param "hit_count$nextseq";
47     $rec{retention} = param "retention$nextseq";
48
49     last unless $rec{pattern} or $rec{domain};
50
51     $rec{sender} = CheckEmail $rec{pattern}, $rec{domain};
52
53     my ($status, $rule) = OnBlacklist($rec{sender});
54
55     if ($status) {
56       print br {-class => 'error'},
57         "The email address $rec{sender} is already on ${Userid}'s $rec{type} list";
58     } else {
59       my ($messages, $msg) = Add2Blacklist(%rec);
60
61       if ($messages < -1) {
62         print br {-class => 'error'}, "Unable to add $rec{sender} to $rec{type} list";
63         return;
64       } else {
65         print br "The email address, $rec{sender}, has been added to ${Userid}'s $rec{type} list";
66       } # if
67
68       # Now remove this entry from the other lists (if present)
69       for my $otherlist ('white', 'null') {
70         FindList(
71           userid => $rec{userid},
72           type   => $otherlist,
73           sender => $rec{sender},
74         );
75
76         my $seq = GetList;
77
78         if ($seq->{sequence}) {
79           my $err;
80
81           ($err, $msg) = DeleteList(
82             userid   => $rec{userid},
83             type     => $otherlist,
84             sequence => $seq->{sequence},
85           );
86
87           croak $msg if $err < 0;
88
89           print br "Removed $rec{sender} from ${Userid}'s " . ucfirst $otherlist . ' list'
90             if $err > 0;
91
92           ResequenceList(
93             userid => $rec{userid},
94             type   => $otherlist,
95           );
96         } # if
97       } # for
98     } # if
99
100     $nextseq++;
101   } # while
102
103   return;
104 } # Add2List
105
106 # Main
107 my $userid = Heading(
108   'getcookie',
109   '',
110   'Add to Black List',
111   'Add to Black List',
112 );
113
114 $userid ||= $ENV{USER};
115
116 my $type = 'black';
117
118 SetContext($userid);
119
120 NavigationBar($userid);
121
122 Add2List(
123   userid => $userid,
124   type   => $type,
125 );
126
127 print start_form {
128   -method => 'post',
129   -action => 'processaction.cgi',
130   -name   => 'list',
131 };
132
133 print '<p></p><center>',
134   hidden ({-name => 'type',   -default => $type}),
135   submit ({-name => 'action', -value   => 'Add'}),
136   '</center>';
137
138 Footing;
139
140 exit;