addbadname.pl
Copying Source is Forbidden
208 lines of code
1
#!/usr/local/bin/perl
2
3
($<,$>) = (getpwnam('nobody'), getpwnam('nobody')) or die $!;
4
5
binmode(STDIN, ":utf8");
6
binmode(STDOUT, ":utf8");
7
8
# must have's!
9
use strict;
10
use warnings;
11
use CGI::Carp qw(fatalsToBrowser);
12
use DBI;
13
use URI::Escape;
14
15
use lib "/var/www/html/Pm";
16
17
use Html qw(pre_html_header header html_end debug_banner);
18
use Html2 qw(tag br hr embolden);
19
use Bc_chef qw(cookie_get);
20
use Bc_misc qw(get_param referrer get_params_asHash);
21
use Bc_sql qw(sql_execute
22
get_constant
23
user_exists
24
$QUERY_PAGE
25
$QUERY_UID
26
$LOGGEDIN
27
28
$DB
29
);
30
use Redir qw(notice_redir error_redir);
31
use User qw(isUserModerator $USER_DATA);
32
use Security qw(banned);
33
34
my $output;
35
36
my $DEBUG = 0;
37
my $DEBUG_STR = "";
38
39
my %params = get_params_asHash();
40
# valid params are:
41
# d (delete)
42
# ID
43
# name
44
# newbad
45
46
my $failure = 0;
47
if (not user_exists($LOGGEDIN) or banned($LOGGEDIN) or not isUserModerator($LOGGEDIN)) {
48
my $msg = "Access Denied";
49
if ($DEBUG) { $msg .= " (addbadname.pl)"; }
50
$output = error_redir("/", $msg);
51
$failure = 1;
52
} else {
53
############################################################
54
### YOUR CONTENT HERE
55
my $url = "/?$QUERY_PAGE=" . get_constant("ADMIN_PAGE") . "&" .
56
get_constant("QUERY_ADMIN_PAGE") . "=" . get_constant("ADMIN_SYSTEM_PAGE") . "&" .
57
"t=badnames";
58
59
# rt = redirection type (admins, or moderators)
60
if ($params{rt} eq "mod") {
61
$url = "/?$QUERY_PAGE=" . get_constant("MOD_PAGE");
62
}
63
64
$output = pre_html_header();
65
$output .= header(
66
"Add Bad Name",
67
"?nobg_img=1&nogrid=1",
68
0,
69
"setTimeout(removeMsg, " . get_constant("REMOVE_MSG_TIMEOUT") . ");",
70
"",
71
"style=\"padding: 2px;\""
72
);
73
74
if (keys %params) {
75
foreach my $key (sort keys %params) {
76
$params{$key} =~ s/^ *//;
77
$params{$key} =~ s/ *$//;
78
$DEBUG_STR .= "$key = $params{$key}" . br;
79
}
80
} else {
81
{ my %str;
82
$str{tag} = "div";
83
$str{class} = "red-panel";
84
$str{innerHTML} = "No Params Given!";
85
86
$DEBUG_STR .= tag(\%str);
87
}
88
$DEBUG_STR .= br;
89
}
90
$DEBUG_STR .= hr;
91
92
if ($params{d}) {
93
my %div;
94
$div{tag} = "div";
95
$div{class} = "yellow-panel";
96
$div{innerHTML} = "Delete Bad Word Requested";
97
$DEBUG_STR .= tag(\%div) . hr;
98
99
my $delsql = "delete from badnames where ID=" . $DB->quote($params{ID});
100
$DEBUG_STR .= "Delete SQL: " . embolden($delsql) . br;
101
102
my $deleted = sql_execute($delsql);
103
if ($deleted) {
104
$DEBUG_STR .= embolden($params{ID}) . " Deleted!" . br;
105
} else {
106
$DEBUG_STR .= embolden($params{ID}) . " Failed to Delete!" . br;
107
$failure = 2;
108
}
109
}
110
elsif ($params{ID} and $params{name}) {
111
my %div;
112
$div{tag} = "div";
113
$div{class} = "yellow-panel";
114
$div{innerHTML} = "Update Bad Word Requested";
115
$DEBUG_STR .= tag(\%div) . hr;
116
117
my $checksql = "select * from badnames where ID=" . $DB->quote($params{ID});
118
$DEBUG_STR .= "Check SQL: " . embolden($checksql) . br;
119
120
my $exists = sql_execute($checksql, "", 1);
121
if (@$exists == 1) {
122
$DEBUG_STR .= "Bad Word Exists" . br;
123
my $updatesql = "update badnames set name=" . $DB->quote($params{name}) . " where ID=" . $DB->quote($params{ID});
124
$DEBUG_STR .= "Update SQL: " . embolden($updatesql) . br;
125
126
my $updated = sql_execute($updatesql);
127
if ($updated) {
128
$DEBUG_STR .= embolden($params{ID}) . " Updated!" . br;
129
} else {
130
$DEBUG_STR .= embolden($params{ID}) . " Failed to Update!" . br;
131
$failure = 3;
132
}
133
} else {
134
$DEBUG_STR .= "Bad Name does not Exist" . br;
135
$failure = 4;
136
}
137
}
138
elsif ($params{newbad}) {
139
my %div;
140
$div{tag} = "div";
141
$div{class} = "yellow-panel";
142
$div{innerHTML} = "Add Bad Word Requested";
143
$DEBUG_STR .= tag(\%div) . hr;
144
145
my $checksql = "select * from badnames where name like " . $DB->quote($params{newbad});
146
$DEBUG_STR .= "Check SQL: " . embolden($checksql) . br;
147
148
my $exists = sql_execute($checksql, "", 1);
149
if (@$exists == 1) {
150
$DEBUG_STR .= "Bad Word Exists" . br;
151
} else {
152
$DEBUG_STR .= "Bad Word does not Exist" . br;
153
my $insert = "insert into badnames values (NULL, " .
154
$DB->quote($params{newbad}) .
155
")";
156
$DEBUG_STR .= "Insert SQL: " . embolden($insert) . br;
157
158
my $inserted = sql_execute($insert);
159
if ($inserted) {
160
$DEBUG_STR .= embolden($params{newbad}) . " Inserted!" . br;
161
} else {
162
$DEBUG_STR .= embolden($params{newbad}) . " Failed to Insert!" . br;
163
$failure = 5;
164
}
165
}
166
} else {
167
my %div;
168
$div{tag} = "div";
169
$div{class} = "red-panel";
170
$div{innerHTML} = "Invalid Request";
171
$DEBUG_STR .= tag(\%div) . hr;
172
$failure = 6;
173
}
174
175
{ my %url;
176
$url{tag} = "a";
177
$url{href} = $url;
178
$url{innerHTML} = $url;
179
180
$DEBUG_STR .= hr . tag(\%url) . br;
181
}
182
$output .= debug_banner("Add Bad Word", $DEBUG_STR, 1);
183
184
if (not $DEBUG) {
185
if ($failure) {
186
my $msg = "Failed to Update Bad Names List!";
187
if ($failure == 1) { $msg = "Access Denied"; }
188
elsif ($failure == 2) { $msg = "Failed to Delete Bad Word (SQL Failure)"; }
189
elsif ($failure == 3) { $msg = "Failed to Update Bad Word (SQL Failure)"; }
190
elsif ($failure == 4) { $msg = "Requested Word doesn't Exist"; }
191
elsif ($failure == 5) { $msg = "Failed to Add Bad Word (SQL Failure)"; }
192
elsif ($failure == 6) { $msg = "Bad Word Already Exists"; }
193
print error_redir($url, $msg);
194
} else {
195
print notice_redir($url, "Bad Words Updated!");
196
}
197
198
exit 1;
199
}
200
201
### END YOUR CONTENT
202
$output .= html_end();
203
############################################################
204
}
205
206
print $output;
207
208
exit 1;