|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TYPE JobType AS ENUM ('shell', 'manage', 'binary', 'python');
|
|
|
|
CREATE TYPE JobState AS ENUM ('queued', 'running', 'finished');
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS agents (
|
|
|
|
alias TEXT
|
|
|
|
, hostname TEXT NOT NULL
|
|
|
|
, id UUID NOT NULL DEFAULT uuid_generate_v4()
|
|
|
|
, is_root BOOLEAN NOT NULL DEFAULT false
|
|
|
|
, is_root_allowed BOOLEAN NOT NULL DEFAULT false
|
|
|
|
, last_active TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
-- target triplet
|
|
|
|
, platform TEXT NOT NULL
|
|
|
|
, regtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
, status TEXT
|
|
|
|
-- is needed to processing requests
|
|
|
|
, token TEXT
|
|
|
|
, username TEXT NOT NULL
|
|
|
|
, PRIMARY KEY(id)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS ip_addrs (
|
|
|
|
agent_id UUID NOT NULL
|
|
|
|
, check_ts TIMESTAMP NOT NULL
|
|
|
|
, gateway TEXT
|
|
|
|
, id UUID NOT NULL DEFAULT uuid_generate_v4()
|
|
|
|
, iface TEXT NOT NULL
|
|
|
|
, ip_addr TEXT NOT NULL
|
|
|
|
, is_gray BOOLEAN NOT NULL DEFAULT true
|
|
|
|
, netmask TEXT NOT NULL
|
|
|
|
, PRIMARY KEY(id)
|
|
|
|
, FOREIGN KEY(agent_id) REFERENCES agents(id)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS jobs (
|
|
|
|
alias TEXT
|
|
|
|
, id UUID NOT NULL DEFAULT uuid_generate_v4()
|
|
|
|
-- Shell, Binary (with program download),
|
|
|
|
-- Python (with program and python download if not exist), Management
|
|
|
|
, exec_type JobType NOT NULL DEFAULT 'shell'
|
|
|
|
, platform TEXT NOT NULL
|
|
|
|
, payload BYTEA
|
|
|
|
, PRIMARY KEY(id)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS results (
|
|
|
|
agent_id UUID NOT NULL
|
|
|
|
, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
, id UUID NOT NULL DEFAULT uuid_generate_v4()
|
|
|
|
, job_id UUID NOT NULL
|
|
|
|
, result BYTEA
|
|
|
|
, retcode INTEGER
|
|
|
|
-- , state JobState NOT NULL DEFAULT 'queued'
|
|
|
|
, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
, FOREIGN KEY(agent_id) REFERENCES agents(id)
|
|
|
|
, FOREIGN KEY(job_id) REFERENCES jobs(id)
|
|
|
|
, 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)
|
|
|
|
);
|