CREATE TABLE users (
id serial unique,
username varchar(32) not null unique,
password varchar(256) not null default 'x',
name text not null,
ctime timestamp not null default now()
);
CREATE TABLE addresses (
id serial unique,
ref_name text not null,
ip inet not null unique,
reverse text,
notes text
);
CREATE TABLE clients (
id serial unique,
ref_number integer,
username varchar(32) not null unique,
password varchar(256) not null,
name text not null,
address text,
email text not null
);
CREATE TABLE billing (
client_id integer not null references clients (id) on update cascade on delete cascade,
plan_name text not null,
amount float,
start_time timestamp,
recurrance interval,
end_time timestamp
);
CREATE TABLE domains (
id serial unique,
owner integer references clients (id) on update cascade on delete set null,
domain text not null unique,
local_dns boolean not null default 't',
slave_dns boolean not null default 'f',
dynamic_dns boolean not null default 'f',
master_server inet
);
CREATE TABLE apache_hosts (
id serial unique,
owner integer references clients (id) on update cascade on delete set null,
hostname text not null unique,
documentroot text not null,
systemuser varchar(32),
systemgroup varchar(32),
admin_email text,
nossl boolean,
ssl boolean,
php boolean,
cgi boolean,
jsp boolean,
override text
);
CREATE TABLE apache_options (
host_id integer references apache_hosts(id) on update cascade on delete cascade,
name text,
value text,
CONSTRAINT DISTINCT ON (host_id,name,value)
);
CREATE TABLE apache_aliases (
host_id integer references apache_hosts(id) on update cascade on delete cascade,
alias text not null unique
);
CREATE TABLE apache_ips (
host_id integer references apache_hosts(id) on update cascade on delete cascade,
ip_ref integer references addresses(id) on update cascade on delete cascade,
CONSTRAINT DISTINCT ON (host_id,ip_ref)
);
CREATE TABLE databases (
id serial unique,
owner integer references clients (id) on update cascade on delete set null,
dbname text not null,
dbsystem char not null,
username varchar(32),
CONSTRAINT DISTINCT ON (dbname,dbsystem)
);
CREATE TABLE email_domains (
id serial unique,
owner integer references clients (id) on update cascade on delete set null,
domain text not null unique,
prefix varchar(16) unique,
organization text not null,
backup_only boolean not null default 'f'
);