Update public source
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_methods (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_method_versions (
|
||||
method_id TEXT NOT NULL,
|
||||
version INTEGER NOT NULL,
|
||||
definition_json TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
PRIMARY KEY (method_id, version),
|
||||
FOREIGN KEY (method_id)
|
||||
REFERENCES crack_methods(id),
|
||||
CHECK (version > 0)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_clients (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
token_hash TEXT,
|
||||
status TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
last_seen_at TEXT,
|
||||
metadata_json TEXT,
|
||||
CHECK (status IN ('ACTIVE', 'DISABLED'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_jobs (
|
||||
id TEXT PRIMARY KEY,
|
||||
method_id TEXT NOT NULL,
|
||||
method_version INTEGER NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
queued_at TEXT,
|
||||
started_at TEXT,
|
||||
completed_at TEXT,
|
||||
cancelled_at TEXT,
|
||||
imported_at TEXT,
|
||||
client_id TEXT,
|
||||
hash_file_name TEXT NOT NULL,
|
||||
hash_file_sha256 TEXT NOT NULL,
|
||||
hash_count INTEGER NOT NULL,
|
||||
step_count INTEGER NOT NULL,
|
||||
result_sha256 TEXT,
|
||||
error TEXT,
|
||||
FOREIGN KEY (method_id, method_version)
|
||||
REFERENCES crack_method_versions(method_id, version),
|
||||
FOREIGN KEY (client_id)
|
||||
REFERENCES crack_clients(id),
|
||||
CHECK (
|
||||
status IN (
|
||||
'CREATED',
|
||||
'QUEUED',
|
||||
'RUNNING',
|
||||
'PARTIAL',
|
||||
'COMPLETED',
|
||||
'FAILED',
|
||||
'CANCELLED'
|
||||
)
|
||||
),
|
||||
CHECK (hash_count >= 0),
|
||||
CHECK (step_count > 0)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_job_handshakes (
|
||||
job_id TEXT NOT NULL,
|
||||
handshake_id INTEGER NOT NULL,
|
||||
hash22000 TEXT NOT NULL,
|
||||
access_point_id INTEGER,
|
||||
PRIMARY KEY (job_id, handshake_id),
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
FOREIGN KEY (handshake_id)
|
||||
REFERENCES handshakes(id),
|
||||
FOREIGN KEY (access_point_id)
|
||||
REFERENCES access_points(id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_job_steps (
|
||||
job_id TEXT NOT NULL,
|
||||
step_no INTEGER NOT NULL,
|
||||
step_id TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
session_name TEXT NOT NULL,
|
||||
definition_json TEXT NOT NULL,
|
||||
started_at TEXT,
|
||||
completed_at TEXT,
|
||||
exit_code INTEGER,
|
||||
restore_seen INTEGER NOT NULL DEFAULT 0,
|
||||
error TEXT,
|
||||
PRIMARY KEY (job_id, step_no),
|
||||
UNIQUE (job_id, step_id),
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
CHECK (step_no > 0),
|
||||
CHECK (
|
||||
status IN (
|
||||
'PENDING',
|
||||
'RUNNING',
|
||||
'COMPLETED',
|
||||
'FAILED',
|
||||
'SKIPPED'
|
||||
)
|
||||
),
|
||||
CHECK (restore_seen IN (0, 1))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_reservations (
|
||||
id TEXT PRIMARY KEY,
|
||||
handshake_id INTEGER NOT NULL,
|
||||
method_id TEXT NOT NULL,
|
||||
method_version INTEGER NOT NULL,
|
||||
job_id TEXT NOT NULL,
|
||||
client_id TEXT,
|
||||
status TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
expires_at TEXT,
|
||||
released_at TEXT,
|
||||
FOREIGN KEY (handshake_id)
|
||||
REFERENCES handshakes(id),
|
||||
FOREIGN KEY (method_id, method_version)
|
||||
REFERENCES crack_method_versions(method_id, version),
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
FOREIGN KEY (client_id)
|
||||
REFERENCES crack_clients(id),
|
||||
CHECK (
|
||||
status IN (
|
||||
'ACTIVE',
|
||||
'RELEASED',
|
||||
'EXPIRED',
|
||||
'CANCELLED'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_attempts (
|
||||
handshake_id INTEGER NOT NULL,
|
||||
method_id TEXT NOT NULL,
|
||||
method_version INTEGER NOT NULL,
|
||||
job_id TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
completed_at TEXT,
|
||||
PRIMARY KEY (handshake_id, method_id, method_version),
|
||||
FOREIGN KEY (handshake_id)
|
||||
REFERENCES handshakes(id),
|
||||
FOREIGN KEY (method_id, method_version)
|
||||
REFERENCES crack_method_versions(method_id, version),
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
CHECK (status = 'COMPLETED')
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_results (
|
||||
job_id TEXT PRIMARY KEY,
|
||||
status TEXT NOT NULL,
|
||||
result_json TEXT NOT NULL,
|
||||
imported_at TEXT NOT NULL,
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
CHECK (
|
||||
status IN (
|
||||
'COMPLETED',
|
||||
'PARTIAL',
|
||||
'FAILED',
|
||||
'CANCELLED'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS crack_audit_log (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
created_at TEXT NOT NULL,
|
||||
event_type TEXT NOT NULL,
|
||||
job_id TEXT,
|
||||
client_id TEXT,
|
||||
handshake_id INTEGER,
|
||||
method_id TEXT,
|
||||
method_version INTEGER,
|
||||
details_json TEXT,
|
||||
FOREIGN KEY (job_id)
|
||||
REFERENCES crack_jobs(id),
|
||||
FOREIGN KEY (client_id)
|
||||
REFERENCES crack_clients(id),
|
||||
FOREIGN KEY (handshake_id)
|
||||
REFERENCES handshakes(id),
|
||||
FOREIGN KEY (method_id, method_version)
|
||||
REFERENCES crack_method_versions(method_id, version)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_crack_reservations_active
|
||||
ON crack_reservations(handshake_id, method_id, method_version)
|
||||
WHERE status = 'ACTIVE';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_method_versions_method
|
||||
ON crack_method_versions(method_id, version);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_jobs_status
|
||||
ON crack_jobs(status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_jobs_method_status
|
||||
ON crack_jobs(method_id, method_version, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_jobs_client_status
|
||||
ON crack_jobs(client_id, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_job_handshakes_handshake
|
||||
ON crack_job_handshakes(handshake_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_job_handshakes_job
|
||||
ON crack_job_handshakes(job_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_job_steps_status
|
||||
ON crack_job_steps(job_id, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_reservations_handshake
|
||||
ON crack_reservations(handshake_id, method_id, method_version);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_reservations_job
|
||||
ON crack_reservations(job_id, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_reservations_client
|
||||
ON crack_reservations(client_id, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_attempts_method
|
||||
ON crack_attempts(method_id, method_version, status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_attempts_job
|
||||
ON crack_attempts(job_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_attempts_handshake
|
||||
ON crack_attempts(handshake_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_audit_job
|
||||
ON crack_audit_log(job_id, created_at);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_audit_client
|
||||
ON crack_audit_log(client_id, created_at);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_audit_handshake
|
||||
ON crack_audit_log(handshake_id, created_at);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_crack_audit_event
|
||||
ON crack_audit_log(event_type, created_at);
|
||||
Reference in New Issue
Block a user