You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

4 years ago
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TYPE JobType AS ENUM ('shell', 'init', 'python');
4 years ago
CREATE TYPE JobState AS ENUM ('queued', 'running', 'finished');
CREATE TYPE AgentState AS ENUM ('new', 'active', 'banned');
4 years ago
CREATE TABLE IF NOT EXISTS agents (
alias TEXT,
hostname TEXT NOT NULL,
id UUID NOT NULL DEFAULT uuid_generate_v4(),
ip_gray TEXT,
ip_white TEXT,
is_root BOOLEAN NOT NULL DEFAULT false,
is_root_allowed BOOLEAN NOT NULL DEFAULT false,
last_active TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
platform TEXT NOT NULL,
regtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
state AgentState NOT NULL DEFAULT 'new',
token TEXT,
username TEXT NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE IF NOT EXISTS jobs (
alias TEXT,
argv TEXT NOT NULL,
id UUID NOT NULL DEFAULT uuid_generate_v4(),
exec_type JobType NOT NULL DEFAULT 'shell',
platform TEXT NOT NULL,
payload BYTEA,
payload_path TEXT,
schedule TEXT,
PRIMARY KEY(id)
);
CREATE TABLE IF NOT EXISTS results (
agent_id UUID NOT NULL,
alias TEXT,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
id UUID NOT NULL DEFAULT uuid_generate_v4(),
job_id UUID NOT NULL,
result BYTEA,
state JobState NOT NULL DEFAULT 'queued',
exec_type JobType NOT NULL DEFAULT 'shell',
retcode INTEGER,
updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(agent_id) REFERENCES agents(id) ON DELETE CASCADE,
FOREIGN KEY(job_id) REFERENCES jobs(id) ON DELETE CASCADE,
PRIMARY KEY(id)
);
CREATE TABLE IF NOT EXISTS certificates (
agent_id UUID NOT NULL,
id UUID NOT NULL DEFAULT uuid_generate_v4(),
is_revoked BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY(id),
FOREIGN KEY(agent_id) REFERENCES agents(id)
);