gfsd
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
-- Migration: Add anonymous activity log and multi-layer anonymous banning tables
|
||||
|
||||
CREATE TABLE IF NOT EXISTS anon_activity_log (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
fingerprint VARCHAR(128),
|
||||
action VARCHAR(64) NOT NULL,
|
||||
target_id INT,
|
||||
ip VARCHAR(128) NOT NULL,
|
||||
user_agent TEXT,
|
||||
details JSONB,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_act_user_id ON anon_activity_log (user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_act_action ON anon_activity_log (action);
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_act_ip ON anon_activity_log (ip);
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_act_created ON anon_activity_log (created_at);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS banned_ips (
|
||||
id SERIAL PRIMARY KEY,
|
||||
ip VARCHAR(128) NOT NULL UNIQUE,
|
||||
ip_hash VARCHAR(128),
|
||||
reason TEXT DEFAULT 'Banned by administrator',
|
||||
banned_by INT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
expires_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_banned_ips_ip ON banned_ips (ip);
|
||||
CREATE INDEX IF NOT EXISTS idx_banned_ips_hash ON banned_ips (ip_hash);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS banned_fingerprints (
|
||||
id SERIAL PRIMARY KEY,
|
||||
fingerprint VARCHAR(128) NOT NULL UNIQUE,
|
||||
pubkey TEXT,
|
||||
reason TEXT DEFAULT 'Banned by administrator',
|
||||
banned_by INT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
expires_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_banned_fp_fp ON banned_fingerprints (fingerprint);
|
||||
|
||||
ALTER TABLE comments ADD COLUMN IF NOT EXISTS ip VARCHAR(128);
|
||||
ALTER TABLE items ADD COLUMN IF NOT EXISTS uploader_ip VARCHAR(128);
|
||||
ALTER TABLE anon_identities ADD COLUMN IF NOT EXISTS created_ip VARCHAR(128);
|
||||
ALTER TABLE anon_identities ADD COLUMN IF NOT EXISTS last_ip VARCHAR(128);
|
||||
@@ -0,0 +1,26 @@
|
||||
-- Migration: Add Hardware Fingerprint Banning
|
||||
-- Adds banned_hardware_fingerprints table and links hw_fingerprint to anon_identities and anon_activity_log.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS banned_hardware_fingerprints (
|
||||
id SERIAL PRIMARY KEY,
|
||||
hw_fingerprint VARCHAR(128) UNIQUE NOT NULL,
|
||||
banned_by INT REFERENCES "user"(id) ON DELETE SET NULL,
|
||||
reason TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
expires_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_banned_hw_fp ON banned_hardware_fingerprints(hw_fingerprint);
|
||||
CREATE INDEX IF NOT EXISTS idx_banned_hw_expires ON banned_hardware_fingerprints(expires_at);
|
||||
|
||||
-- Add hardware fingerprint column to anon_identities
|
||||
ALTER TABLE anon_identities
|
||||
ADD COLUMN IF NOT EXISTS hw_fingerprint VARCHAR(128);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_identities_hw ON anon_identities(hw_fingerprint);
|
||||
|
||||
-- Add hardware fingerprint column to anon_activity_log
|
||||
ALTER TABLE anon_activity_log
|
||||
ADD COLUMN IF NOT EXISTS hw_fingerprint VARCHAR(128);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_anon_activity_hw ON anon_activity_log(hw_fingerprint);
|
||||
Reference in New Issue
Block a user