- Stats, keys, providers, scan, recon, dorks, config endpoints - JSON response wrappers with proper tags for all entities - Filtering, pagination, 404/204/202 status codes - SSE hub stub (full impl in task 2) - Resolved merge conflict in schema.sql - 16 passing tests covering all endpoints
80 lines
2.8 KiB
SQL
80 lines
2.8 KiB
SQL
-- KeyHunter database schema
|
|
-- Version: 1
|
|
|
|
CREATE TABLE IF NOT EXISTS scans (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
started_at DATETIME NOT NULL,
|
|
finished_at DATETIME,
|
|
source_path TEXT,
|
|
finding_count INTEGER DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS findings (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
scan_id INTEGER REFERENCES scans(id),
|
|
provider_name TEXT NOT NULL,
|
|
key_value BLOB NOT NULL,
|
|
key_masked TEXT NOT NULL,
|
|
confidence TEXT NOT NULL,
|
|
source_path TEXT,
|
|
source_type TEXT,
|
|
line_number INTEGER,
|
|
verified INTEGER NOT NULL DEFAULT 0,
|
|
verify_status TEXT NOT NULL DEFAULT '',
|
|
verify_http_code INTEGER NOT NULL DEFAULT 0,
|
|
verify_metadata_json TEXT,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT NOT NULL,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Indexes for common queries
|
|
CREATE INDEX IF NOT EXISTS idx_findings_scan_id ON findings(scan_id);
|
|
CREATE INDEX IF NOT EXISTS idx_findings_provider ON findings(provider_name);
|
|
CREATE INDEX IF NOT EXISTS idx_findings_created ON findings(created_at DESC);
|
|
|
|
-- Phase 8: user-authored dork definitions complementing the embedded
|
|
-- YAML-based dork registry (pkg/dorks/definitions). Embedded dorks are
|
|
-- read-only; custom_dorks stores rows created via `keyhunter dorks add`.
|
|
CREATE TABLE IF NOT EXISTS custom_dorks (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
dork_id TEXT NOT NULL UNIQUE,
|
|
name TEXT NOT NULL,
|
|
source TEXT NOT NULL,
|
|
category TEXT NOT NULL,
|
|
query TEXT NOT NULL,
|
|
description TEXT,
|
|
tags TEXT, -- JSON array
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_custom_dorks_source ON custom_dorks(source);
|
|
CREATE INDEX IF NOT EXISTS idx_custom_dorks_category ON custom_dorks(category);
|
|
|
|
-- Phase 17: Telegram bot subscribers for auto-notifications.
|
|
CREATE TABLE IF NOT EXISTS subscribers (
|
|
chat_id INTEGER PRIMARY KEY,
|
|
username TEXT,
|
|
subscribed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Phase 17: Cron-based scheduled scan jobs.
|
|
CREATE TABLE IF NOT EXISTS scheduled_jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT UNIQUE NOT NULL,
|
|
cron_expr TEXT NOT NULL,
|
|
scan_command TEXT NOT NULL,
|
|
notify_telegram BOOLEAN DEFAULT FALSE,
|
|
enabled BOOLEAN DEFAULT TRUE,
|
|
last_run DATETIME,
|
|
next_run DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_enabled ON scheduled_jobs(enabled);
|