Store banned IP addresses as plain text

Inspired by commit 32c8d0c (Store last login address as plain text,
2016-03-13).

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
Lukas Fleischer 2017-01-25 08:37:48 +01:00
parent f8916d7e9b
commit 70db022aa8
3 changed files with 9 additions and 2 deletions

View file

@ -376,7 +376,7 @@ CREATE TABLE IF NOT EXISTS TU_Votes (
-- Malicious user banning -- Malicious user banning
-- --
CREATE TABLE Bans ( CREATE TABLE Bans (
IPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0, IPAddress VARCHAR(45) NULL DEFAULT NULL,
BanTS TIMESTAMP NOT NULL, BanTS TIMESTAMP NOT NULL,
PRIMARY KEY (IPAddress) PRIMARY KEY (IPAddress)
) ENGINE = InnoDB; ) ENGINE = InnoDB;

View file

@ -11,3 +11,10 @@ ALTER TABLE Users
ADD COLUMN LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, ADD COLUMN LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
ADD COLUMN LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL; ADD COLUMN LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL;
--- ---
3. Convert the IPAddress column of the Bans table to VARCHAR(45). If the table
contains any active bans, convert them accordingly:
----
ALTER TABLE Bans MODIFY IPAddress VARCHAR(45) NULL DEFAULT NULL;
----

View file

@ -621,7 +621,7 @@ function try_login() {
function is_ipbanned() { function is_ipbanned() {
$dbh = DB::connect(); $dbh = DB::connect();
$q = "SELECT * FROM Bans WHERE IPAddress = " . $dbh->quote(ip2long($_SERVER['REMOTE_ADDR'])); $q = "SELECT * FROM Bans WHERE IPAddress = " . $dbh->quote($_SERVER['REMOTE_ADDR']);
$result = $dbh->query($q); $result = $dbh->query($q);
return ($result->fetchColumn() ? true : false); return ($result->fetchColumn() ? true : false);