better IP Ban logging

This commit is contained in:
Shish 2012-06-10 17:49:17 +01:00
parent b0c46b63ca
commit 8c1e495ab7

View File

@ -56,6 +56,7 @@ class IPBan extends Extension {
else $end = $_POST['end'];
send_event(new AddIPBanEvent($_POST['ip'], $_POST['reason'], $end));
flash_message("Ban for {$_POST['ip']} added");
$page->set_mode("redirect");
$page->set_redirect(make_link("ip_ban/list"));
}
@ -63,6 +64,8 @@ class IPBan extends Extension {
else if($event->get_arg(0) == "remove" && $user->check_auth_token()) {
if(isset($_POST['id'])) {
send_event(new RemoveIPBanEvent($_POST['id']));
flash_message("Ban removed");
$page->set_mode("redirect");
$page->set_redirect(make_link("ip_ban/list"));
}
@ -86,14 +89,21 @@ class IPBan extends Extension {
}
public function onAddIPBan(AddIPBanEvent $event) {
global $user;
$this->add_ip_ban($event->ip, $event->reason, $event->end, $user);
global $user, $database;
$sql = "INSERT INTO bans (ip, reason, end_timestamp, banner_id) VALUES (:ip, :reason, :end, :admin_id)";
$database->Execute($sql, array("ip"=>$event->ip, "reason"=>$event->reason, "end"=>strtotime($event->end), "admin_id"=>$user->id));
$database->cache->delete("ip_bans_sorted");
log_info("ipban", "Banned {$event->ip} because '{$event->reason}' until {$event->end}");
}
public function onRemoveIPBan(RemoveIPBanEvent $event) {
global $database;
$database->Execute("DELETE FROM bans WHERE id = :id", array("id"=>$event->id));
$database->cache->delete("ip_bans_sorted");
$ban = $database->get_row("SELECT * FROM bans WHERE id = :id", array("id"=>$event->id));
if($ban) {
$database->Execute("DELETE FROM bans WHERE id = :id", array("id"=>$event->id));
$database->cache->delete("ip_bans_sorted");
log_info("ipban", "Removed {$ban['ip']}'s ban");
}
}
// installer {{{
@ -211,6 +221,8 @@ class IPBan extends Extension {
exit;
}
}
log_error("ipban", "block() called but no bans matched");
exit;
}
// }}}
// database {{{
@ -264,14 +276,6 @@ class IPBan extends Extension {
$database->cache->set("ip_bans_sorted", $sorted, 600);
return $sorted;
}
private function add_ip_ban($ip, $reason, $end, $user) {
global $database;
$sql = "INSERT INTO bans (ip, reason, end_timestamp, banner_id) VALUES (:ip, :reason, :end, :admin_id)";
$database->Execute($sql, array("ip"=>$ip, "reason"=>$reason, "end"=>strtotime($end), "admin_id"=>$user->id));
$database->cache->delete("ip_bans_sorted");
log_info("ipban", "'$user->name' has banned '$ip' because '$reason' until '$end'");
}
// }}}
}
?>