[aur-dev] [PATCH 1/2] Add "Bans" table to database schema
Dan McGee
dpmcgee at gmail.com
Tue Mar 19 20:21:24 EDT 2013
On Tue, Mar 19, 2013 at 7:17 PM, canyonknight <canyonknight at gmail.com> wrote:
> The "Bans" table creates a DB structure for the ability to ban IP
> addresses. It takes an IP address converted by ip2long(). It can easily
> be extended for other features such as time limits (for temporary bans).
>
> The table will eventually be able to be populated directly through
> the web interface by Trusted Users and Developers.
>
> Signed-off-by: canyonknight <canyonknight at gmail.com>
> ---
> UPGRADING | 11 +++++++++++
> support/schema/aur-schema.sql | 9 +++++++++
> 2 files changed, 20 insertions(+)
>
> diff --git a/UPGRADING b/UPGRADING
> index 9c05467..7d13c43 100644
> --- a/UPGRADING
> +++ b/UPGRADING
> @@ -11,6 +11,17 @@ ALTER TABLE Users
> ADD COLUMN LastLoginIPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0;
> ----
>
> +2. Add a new "Bans" table:
> +
> +----
> +CREATE TABLE Bans (
> + ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> + IPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0,
> + PRIMARY KEY (ID),
> + UNIQUE (IPAddress)
> +) ENGINE = InnoDB;
> +----
> +
> From 2.0.0 to 2.1.0
> -------------------
>
> diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
> index fab40d6..2d268fa 100644
> --- a/support/schema/aur-schema.sql
> +++ b/support/schema/aur-schema.sql
> @@ -213,3 +213,12 @@ CREATE TABLE IF NOT EXISTS TU_Votes (
> FOREIGN KEY (VoteID) REFERENCES TU_VoteInfo(ID) ON DELETE CASCADE,
> FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE
> ) ENGINE = InnoDB;
> +
> +-- Malicious user banning
> +--
> +CREATE TABLE Bans (
> + ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> + IPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0,
> + PRIMARY KEY (ID),
> + UNIQUE (IPAddress)
> +) ENGINE = InnoDB;
Why bother with an ID column at all here, since your IPAddress column
is unique, an integer, and could be it's own primary key?
Finally, I would highly recommend adding a created timestamp in lieu
of an ID; it still gives insertion order but also relative time
spacing of said insertions, and would allow gradual aging out of old
entries if that was ever desired in the future.
-Dan
More information about the aur-dev
mailing list