Files
ad-infr-control/init-db.sql
ilyastar9999 cffbd77b74 init
2025-12-02 14:01:34 +03:00

80 lines
2.5 KiB
SQL

-- Database initialization script for A/D Infrastructure Control
-- Services table for controller
CREATE TABLE IF NOT EXISTS services (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
path VARCHAR(512) NOT NULL,
git_url VARCHAR(512),
status VARCHAR(50) DEFAULT 'stopped',
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Service logs table
CREATE TABLE IF NOT EXISTS service_logs (
id SERIAL PRIMARY KEY,
service_id INTEGER REFERENCES services(id) ON DELETE CASCADE,
action VARCHAR(100) NOT NULL,
status VARCHAR(50) NOT NULL,
message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Attacks tracking table for scoreboard injector
CREATE TABLE IF NOT EXISTS attacks (
id SERIAL PRIMARY KEY,
attack_id VARCHAR(255) UNIQUE,
attacker_team_id INTEGER,
victim_team_id INTEGER,
service_name VARCHAR(255),
flag VARCHAR(255),
timestamp TIMESTAMP NOT NULL,
points FLOAT,
is_our_attack BOOLEAN DEFAULT FALSE,
is_attack_to_us BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Attack alerts table
CREATE TABLE IF NOT EXISTS attack_alerts (
id SERIAL PRIMARY KEY,
attack_id INTEGER REFERENCES attacks(id) ON DELETE CASCADE,
alert_type VARCHAR(100) NOT NULL,
severity VARCHAR(50) NOT NULL,
message TEXT,
notified BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Telegram messages log
CREATE TABLE IF NOT EXISTS telegram_messages (
id SERIAL PRIMARY KEY,
chat_id BIGINT NOT NULL,
message TEXT NOT NULL,
sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN DEFAULT TRUE,
error_message TEXT
);
-- System settings
CREATE TABLE IF NOT EXISTS settings (
key VARCHAR(255) PRIMARY KEY,
value TEXT NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert default settings
INSERT INTO settings (key, value) VALUES
('our_team_id', '0'),
('alert_threshold_points', '100'),
('alert_threshold_time', '300')
ON CONFLICT (key) DO NOTHING;
-- Create indexes for performance
CREATE INDEX IF NOT EXISTS idx_attacks_timestamp ON attacks(timestamp);
CREATE INDEX IF NOT EXISTS idx_attacks_our_attack ON attacks(is_our_attack);
CREATE INDEX IF NOT EXISTS idx_attacks_attack_to_us ON attacks(is_attack_to_us);
CREATE INDEX IF NOT EXISTS idx_service_logs_service_id ON service_logs(service_id);
CREATE INDEX IF NOT EXISTS idx_attack_alerts_notified ON attack_alerts(notified);