95 lines
3.2 KiB
SQL
95 lines
3.2 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);
|
|
|
|
<<<<<<< HEAD
|
|
-- 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
|
|
);
|
|
=======
|
|
-- Phase 17: scheduled scan jobs for cron-based recurring scans.
|
|
CREATE TABLE IF NOT EXISTS scheduled_jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
cron_expr TEXT NOT NULL,
|
|
scan_path TEXT NOT NULL,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
notify INTEGER NOT NULL DEFAULT 1,
|
|
last_run_at DATETIME,
|
|
next_run_at DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_enabled ON scheduled_jobs(enabled);
|
|
>>>>>>> worktree-agent-a39573e4
|