Skip to content

Commit aaf9d9e

Browse files
committed
fix .merge and .reset; always log initiator of admin operations
1 parent 4e2bb14 commit aaf9d9e

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

cb_functions.php

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ function log_str($str) {
108108
function log_strv(/*$fmt, @args*/) {
109109
$args = func_get_args();
110110
$fmt = array_shift($args);
111+
foreach ($args as &$v)
112+
if ($v === null)
113+
$v = "-";
111114
return log_str(vsprintf($fmt, $args));
112115
}
113116

@@ -119,10 +122,11 @@ function user_is_admin($nick) {
119122
return (bool) @$users[$nick]['admin'];
120123
}
121124

122-
function user_make_admin($nick) {
125+
function user_make_admin($caller, $nick) {
123126
global $users;
124127
$nick = nicktolower($nick);
125128
$users[$nick]['admin'] = true;
129+
log_strv("%s grant:admin %s", $caller, $nick);
126130
save_db();
127131
}
128132

@@ -132,7 +136,7 @@ function user_is_ignored($nick) {
132136
return (bool) @$users[$nick]['ignore'];
133137
}
134138

135-
function user_set_ignored($nick, $ignore) {
139+
function user_set_ignored($caller, $nick, $ignore) {
136140
global $users;
137141
$nick = nicktolower($nick);
138142

@@ -141,11 +145,11 @@ function user_set_ignored($nick, $ignore) {
141145
if ($ignore) {
142146
$users[$nick]["points"] = 0;
143147
$users[$nick]["log"] = array("Ignored =0" => 1);
144-
log_strv("ignore %s", $nick);
148+
log_strv("%s ignore %s y", $caller, $nick);
145149
send("NOTICE", $nick, "You are now ignored by me.");
146150
} else {
147151
unset($users[$nick]["log"]["Ignored =0"]);
148-
log_strv("unignore %s", $nick);
152+
log_strv("%s ignore %s n", $caller, $nick);
149153
send("NOTICE", $nick, "I stopped ignoring you.");
150154
}
151155

@@ -167,6 +171,10 @@ function user_get_points($nick) {
167171
}
168172

169173
function user_adj_points($nick, $delta, $reason) {
174+
return user_adj_points_by(null, $nick, $delta, $reason);
175+
}
176+
177+
function user_adj_points_by($caller, $nick, $delta, $reason) {
170178
global $users;
171179
$nick = nicktolower($nick);
172180
if(@$users[$nick]["ignore"])
@@ -181,11 +189,18 @@ function user_adj_points($nick, $delta, $reason) {
181189
$log = @$users[$nick]["verbose"];
182190
else
183191
$log = @$users[$nick]["vdedo"];
184-
if ($log)
185-
send("NOTICE", $nick, "$reason ($delta points)");
186192

187-
log_strv("change %s %s%d \"%s\"",
188-
$nick, ($delta < 0 ? "" : "+"), $delta, strescape($reason));
193+
if ($log) {
194+
$msg = "$reason ($delta points)";
195+
if ($caller !== null)
196+
$msg .= " (by $caller)";
197+
send("NOTICE", $nick, $msg);
198+
}
199+
200+
log_strv("%s change %s %s%d \"%s\"",
201+
$caller, $nick,
202+
($delta < 0 ? "" : "+"), $delta,
203+
strescape($reason));
189204

190205
return $delta;
191206
}
@@ -196,20 +211,21 @@ function user_reset_points($caller, $nick) {
196211

197212
unset($users[$nick]);
198213
save_db();
199-
log_strv("reset %s", $nick);
214+
log_strv("%s reset %s", $caller, $nick);
200215

201216
if (!nickeq($nick, $caller))
202217
send("NOTICE", $nick, "Your ClueBot account was reset by $caller.");
203218
}
204219

205-
function user_merge($old_user, $new_user) {
220+
function user_merge($caller, $old_user, $new_user) {
206221
global $users;
207222
$old_user = nicktolower($old_user);
208223
$new_user = nicktolower($new_user);
209224

210225
$old_points = user_get_points($old_user);
211-
user_adj_points($new_user, $old_points, "Merged with $old_user");
212-
user_reset_points($old_user);
226+
log_strv("%s merge %s %s %s", $caller, $old_user, $new_user, $old_points);
227+
user_adj_points_by($caller, $new_user, $old_points, "Merged with $old_user");
228+
user_reset_points($caller, $old_user);
213229
save_db();
214230
}
215231

cb_tcp.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ function handle_req($req, $out) {
1717
}
1818
fwrite($out, "OK\n");
1919
break;
20+
case "tailf":
21+
pcntl_exec("/usr/bin/tail", array("-f", "points.log"));
22+
fwrite($out, "ERROR\n");
23+
exit;
2024
default:
2125
fwrite($out, "lolz\n");
2226
}

cluebot.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ function on_trigger($source, $target, $message) {
119119
send("NOTICE", $srcnick, "Missing user argument.");
120120
break;
121121
}
122-
user_set_ignored($victim, $ignore);
122+
user_set_ignored($srcnick, $victim, $ignore);
123123
if ($ignore)
124124
send("NOTICE", $srcnick, "$victim is now ignored.");
125125
else
@@ -148,7 +148,7 @@ function on_trigger($source, $target, $message) {
148148
send("NOTICE", $srcnick, "Missing user argument.");
149149
break;
150150
}
151-
user_make_admin($victim);
151+
user_make_admin($srcnick, $victim);
152152
send("NOTICE", $srcnick, "$victim is now an admin.");
153153
send("NOTICE", $victim, "$srcnick just made you an admin.");
154154
} else {
@@ -171,7 +171,7 @@ function on_trigger($source, $target, $message) {
171171
send("NOTICE", $srcnick, "Usage: .merge old_user new_user");
172172
break;
173173
}
174-
user_merge($old_user, $new_user);
174+
user_merge($srcnick, $old_user, $new_user);
175175
send("NOTICE", $srcnick, "Merged $old_user into $new_user");
176176
break;
177177
} else {
@@ -186,7 +186,8 @@ function on_trigger($source, $target, $message) {
186186
send("NOTICE", $srcnick, "Missing user argument.");
187187
break;
188188
}
189-
user_adj_points($victim, $delta, "Administratively changed");
189+
user_adj_points_by($srcnick, $victim, $delta,
190+
"Administratively changed");
190191
send("NOTICE", $srcnick, "Points of $victim changed.");
191192
} else {
192193
send("NOTICE", $srcnick, "Access denied.");
@@ -199,7 +200,7 @@ function on_trigger($source, $target, $message) {
199200
break;
200201
}
201202
if (user_is_admin($srcnick) || nickeq($srcnick, $victim)) {
202-
user_reset_points($victim);
203+
user_reset_points($srcnick, $victim);
203204
send("NOTICE", $srcnick, "User $victim reset.");
204205
} else {
205206
send("NOTICE", $srcnick, "Access denied.");

0 commit comments

Comments
 (0)