119 lines
4.4 KiB
SQL
119 lines
4.4 KiB
SQL
-- Initialize PostgreSQL database for FreeRADIUS and RadiusController App
|
|
|
|
-- Standard FreeRADIUS PostgreSQL Schema
|
|
CREATE TABLE IF NOT EXISTS radcheck (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL DEFAULT '',
|
|
attribute VARCHAR(64) NOT NULL DEFAULT '',
|
|
op VARCHAR(2) NOT NULL DEFAULT ':=',
|
|
value VARCHAR(253) NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radcheck_username ON radcheck (username);
|
|
|
|
CREATE TABLE IF NOT EXISTS radreply (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL DEFAULT '',
|
|
attribute VARCHAR(64) NOT NULL DEFAULT '',
|
|
op VARCHAR(2) NOT NULL DEFAULT '=',
|
|
value VARCHAR(253) NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radreply_username ON radreply (username);
|
|
|
|
CREATE TABLE IF NOT EXISTS radgroupcheck (
|
|
id SERIAL PRIMARY KEY,
|
|
groupname VARCHAR(64) NOT NULL DEFAULT '',
|
|
attribute VARCHAR(64) NOT NULL DEFAULT '',
|
|
op VARCHAR(2) NOT NULL DEFAULT ':=',
|
|
value VARCHAR(253) NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radgroupcheck_groupname ON radgroupcheck (groupname);
|
|
|
|
CREATE TABLE IF NOT EXISTS radgroupreply (
|
|
id SERIAL PRIMARY KEY,
|
|
groupname VARCHAR(64) NOT NULL DEFAULT '',
|
|
attribute VARCHAR(64) NOT NULL DEFAULT '',
|
|
op VARCHAR(2) NOT NULL DEFAULT '=',
|
|
value VARCHAR(253) NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radgroupreply_groupname ON radgroupreply (groupname);
|
|
|
|
CREATE TABLE IF NOT EXISTS radusergroup (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL DEFAULT '',
|
|
groupname VARCHAR(64) NOT NULL DEFAULT '',
|
|
priority INT NOT NULL DEFAULT 1
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radusergroup_username ON radusergroup (username);
|
|
|
|
CREATE TABLE IF NOT EXISTS radacct (
|
|
radacctid BIGSERIAL PRIMARY KEY,
|
|
acctsessionid VARCHAR(64) NOT NULL DEFAULT '',
|
|
acctuniqueid VARCHAR(32) NOT NULL DEFAULT '',
|
|
username VARCHAR(64) NOT NULL DEFAULT '',
|
|
realm VARCHAR(64) DEFAULT '',
|
|
nasipaddress VARCHAR(15) NOT NULL DEFAULT '',
|
|
nasportid VARCHAR(32) DEFAULT NULL,
|
|
nasporttype VARCHAR(32) DEFAULT NULL,
|
|
acctstarttime TIMESTAMP WITH TIME ZONE DEFAULT NULL,
|
|
acctupdatetime TIMESTAMP WITH TIME ZONE DEFAULT NULL,
|
|
acctstoptime TIMESTAMP WITH TIME ZONE DEFAULT NULL,
|
|
acctinterval INT DEFAULT NULL,
|
|
acctsessiontime BIGINT DEFAULT NULL,
|
|
acctauthentic VARCHAR(32) DEFAULT NULL,
|
|
connectinfo_in VARCHAR(50) DEFAULT NULL,
|
|
connectinfo_out VARCHAR(50) DEFAULT NULL,
|
|
acctinputoctets BIGINT DEFAULT NULL,
|
|
acctoutputoctets BIGINT DEFAULT NULL,
|
|
calledstationid VARCHAR(50) NOT NULL DEFAULT '',
|
|
callingstationid VARCHAR(50) NOT NULL DEFAULT '',
|
|
acctterminatecause VARCHAR(32) NOT NULL DEFAULT '',
|
|
servicetype VARCHAR(32) DEFAULT NULL,
|
|
framedprotocol VARCHAR(32) DEFAULT NULL,
|
|
framedipaddress VARCHAR(15) NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS radacct_username ON radacct (username);
|
|
CREATE INDEX IF NOT EXISTS radacct_active ON radacct (acctstoptime) WHERE acctstoptime IS NULL;
|
|
|
|
CREATE TABLE IF NOT EXISTS nas (
|
|
id SERIAL PRIMARY KEY,
|
|
nasname VARCHAR(128) NOT NULL,
|
|
shortname VARCHAR(32),
|
|
type VARCHAR(30) DEFAULT 'other',
|
|
ports INT,
|
|
secret VARCHAR(60) NOT NULL,
|
|
server VARCHAR(64),
|
|
community VARCHAR(50),
|
|
description VARCHAR(200) DEFAULT 'RADIUS Client'
|
|
);
|
|
|
|
-- Application Management Tables
|
|
CREATE TABLE IF NOT EXISTS guest_profiles (
|
|
id SERIAL PRIMARY KEY,
|
|
guest_name VARCHAR(255) NOT NULL,
|
|
username VARCHAR(64) NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
session_time_minutes INT NOT NULL DEFAULT 60,
|
|
data_limit_mb BIGINT NOT NULL DEFAULT 500,
|
|
status VARCHAR(32) NOT NULL DEFAULT 'Active'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS admin_users (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(64) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS system_settings (
|
|
key VARCHAR(64) PRIMARY KEY,
|
|
value VARCHAR(255) NOT NULL,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Seed Default Settings
|
|
INSERT INTO system_settings (key, value) VALUES ('default_session_time', '60') ON CONFLICT (key) DO NOTHING;
|
|
INSERT INTO system_settings (key, value) VALUES ('default_data_limit', '500') ON CONFLICT (key) DO NOTHING;
|
|
|
|
-- System settings initialized on startup
|
|
-- Admin user is created by administrator during first startup via the web interface
|