|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TYPE JobType AS ENUM ('shell', 'init', 'python', 'service');
|
|
|
|
CREATE TYPE JobState AS ENUM ('queued', 'running', 'finished');
|
|
|
|
CREATE TYPE AgentState AS ENUM ('new', 'active', 'banned');
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agents (
|
|
|
|
alias TEXT,
|
|
|
|
hostname TEXT NOT NULL,
|
|
|
|
host_info 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)
|
|
|
|
);
|