Another PgSQL update

This commit is contained in:
Pinga 2024-01-05 22:11:06 +02:00
parent 0cec56475a
commit c256cd9fc9
7 changed files with 173 additions and 171 deletions

View file

@ -6,6 +6,7 @@ $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
$dotenv->load(); $dotenv->load();
// Retrieve database connection details from environment variables // Retrieve database connection details from environment variables
$dbDriver = $_ENV['DB_DRIVER'];
$dbHost = $_ENV['DB_HOST']; $dbHost = $_ENV['DB_HOST'];
$dbName = $_ENV['DB_DATABASE']; $dbName = $_ENV['DB_DATABASE'];
$dbUser = $_ENV['DB_USERNAME']; $dbUser = $_ENV['DB_USERNAME'];
@ -26,12 +27,17 @@ $hashedPassword = password_hash($newPW, PASSWORD_ARGON2ID, $options);
try { try {
// Create PDO instance // Create PDO instance
$pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass); if ($dbDriver == 'mysql') {
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8";
} elseif ($dbDriver == 'pgsql') {
$dsn = "pgsql:host=$dbHost;dbname=$dbName";
}
$pdo = new PDO($dsn, $dbUser, $dbPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL query // SQL query
$sql = "INSERT INTO users (email, password, username, status, verified, resettable, roles_mask, registered, last_login, force_logout, tfa_secret, tfa_enabled, auth_method, backup_codes) $sql = "INSERT INTO users (email, password, username, status, verified, resettable, roles_mask, registered, last_login, force_logout, tfa_secret, tfa_enabled, auth_method, backup_codes)
VALUES (:email, :password, :username, 0, 1, 1, 0, 1, NULL, 0, NULL, 0, 'password', NULL)"; VALUES (:email, :password, :username, 0, 1, 1, 0, 1, NULL, 0, NULL, false, 'password', NULL)";
// Prepare and execute SQL statement // Prepare and execute SQL statement
$stmt = $pdo->prepare($sql); $stmt = $pdo->prepare($sql);

View file

@ -13,7 +13,7 @@ elseif (config('default') == 'sqlite') {
} }
// PostgreSQL Connection // PostgreSQL Connection
elseif (config('default') == 'pgsql') { elseif (config('default') == 'pgsql') {
$pdo = new \PDO($config['pgsql']['driver'].':dbname='.$config['pgsql']['database'].';host='.$config['pgsql']['host'].';charset='.$config['pgsql']['charset'].'', $config['pgsql']['username'], $config['pgsql']['password']); $pdo = new \PDO($config['pgsql']['driver'].':dbname='.$config['pgsql']['database'].';host='.$config['pgsql']['host'].';', $config['pgsql']['username'], $config['pgsql']['password']);
$db = \Pinga\Db\PdoDatabase::fromPdo($pdo); $db = \Pinga\Db\PdoDatabase::fromPdo($pdo);
} }
// SQL Server Connection // SQL Server Connection

View file

@ -43,7 +43,6 @@ return [
'database' => $_ENV['DB_DATABASE'] ?? 'db_username', 'database' => $_ENV['DB_DATABASE'] ?? 'db_username',
'username' => $_ENV['DB_USERNAME'] ?? 'db_password', 'username' => $_ENV['DB_USERNAME'] ?? 'db_password',
'password' => $_ENV['DB_PASSWORD'] ?? '', 'password' => $_ENV['DB_PASSWORD'] ?? '',
'charset' => 'utf8',
'prefix' => '', 'prefix' => '',
'schema' => 'public', 'schema' => 'public',
'sslmode' => 'prefer', 'sslmode' => 'prefer',

View file

@ -1,6 +1,4 @@
SET search_path TO registry, registryTransaction, registryAudit, public; CREATE TABLE launch_phases (
CREATE TABLE registry.launch_phases (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"tld_id" INT CHECK ("tld_id" >= 0), "tld_id" INT CHECK ("tld_id" >= 0),
"phase_name" VARCHAR(75) DEFAULT NULL, "phase_name" VARCHAR(75) DEFAULT NULL,
@ -20,10 +18,10 @@ BEGIN
END; END;
' LANGUAGE 'plpgsql'; ' LANGUAGE 'plpgsql';
CREATE TRIGGER add_current_date_to_launch_phases BEFORE UPDATE ON registry.launch_phases FOR EACH ROW EXECUTE PROCEDURE CREATE TRIGGER add_current_date_to_launch_phases BEFORE UPDATE ON launch_phases FOR EACH ROW EXECUTE PROCEDURE
update_phases(); update_phases();
CREATE TABLE registry.domain_tld ( CREATE TABLE domain_tld (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"tld" varchar(32) NOT NULL, "tld" varchar(32) NOT NULL,
"idn_table" varchar(255) NOT NULL, "idn_table" varchar(255) NOT NULL,
@ -32,13 +30,13 @@ CREATE TABLE registry.domain_tld (
unique ("tld") unique ("tld")
); );
CREATE TABLE registry.settings ( CREATE TABLE settings (
"name" varchar(64) NOT NULL, "name" varchar(64) NOT NULL,
"value" varchar(255) default NULL, "value" varchar(255) default NULL,
PRIMARY KEY ("name") PRIMARY KEY ("name")
); );
CREATE TABLE registry.domain_price ( CREATE TABLE domain_price (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
"command" varchar CHECK ("command" IN ( 'create','renew','transfer' )) NOT NULL default 'create', "command" varchar CHECK ("command" IN ( 'create','renew','transfer' )) NOT NULL default 'create',
@ -56,14 +54,14 @@ CREATE TABLE registry.domain_price (
unique ("tldid", "command") unique ("tldid", "command")
); );
CREATE TABLE registry.domain_restore_price ( CREATE TABLE domain_restore_price (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
"price" decimal(10,2) NOT NULL default '0.00', "price" decimal(10,2) NOT NULL default '0.00',
unique ("tldid") unique ("tldid")
); );
CREATE TABLE registry.allocation_tokens ( CREATE TABLE allocation_tokens (
"token" VARCHAR(255) NOT NULL, "token" VARCHAR(255) NOT NULL,
"domain_name" VARCHAR(255), "domain_name" VARCHAR(255),
"tokenStatus" VARCHAR(100), "tokenStatus" VARCHAR(100),
@ -78,21 +76,21 @@ CREATE TABLE registry.allocation_tokens (
PRIMARY KEY (token) PRIMARY KEY (token)
); );
CREATE TABLE registry.error_log ( CREATE TABLE error_log (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"log" TEXT NOT NULL, "log" TEXT NOT NULL,
"date" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP "date" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE registry.reserved_domain_names ( CREATE TABLE reserved_domain_names (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"type" varchar CHECK ("type" IN ( 'reserved','restricted' )) NOT NULL default 'reserved', "type" varchar CHECK ("type" IN ( 'reserved','restricted' )) NOT NULL default 'reserved',
unique ("name") unique ("name")
); );
CREATE TABLE registry.registrar ( CREATE TABLE registrar (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(255) NOT NULL, "name" varchar(255) NOT NULL,
"iana_id" int DEFAULT NULL, "iana_id" int DEFAULT NULL,
@ -126,17 +124,17 @@ END;
' LANGUAGE 'plpgsql'; ' LANGUAGE 'plpgsql';
-- before INSERT is handled by 'default CURRENT_TIMESTAMP' -- before INSERT is handled by 'default CURRENT_TIMESTAMP'
CREATE TRIGGER add_current_date_to_registrar BEFORE UPDATE ON registry.registrar FOR EACH ROW EXECUTE PROCEDURE CREATE TRIGGER add_current_date_to_registrar BEFORE UPDATE ON registrar FOR EACH ROW EXECUTE PROCEDURE
update_registrar(); update_registrar();
CREATE TABLE registry.registrar_whitelist ( CREATE TABLE registrar_whitelist (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"addr" varchar(45) NOT NULL, "addr" varchar(45) NOT NULL,
unique ("registrar_id", "addr") unique ("registrar_id", "addr")
); );
CREATE TABLE registry.registrar_contact ( CREATE TABLE registrar_contact (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'owner','admin','billing','tech','abuse' )) NOT NULL default 'admin', "type" varchar CHECK ("type" IN ( 'owner','admin','billing','tech','abuse' )) NOT NULL default 'admin',
@ -158,14 +156,14 @@ CREATE TABLE registry.registrar_contact (
unique ("registrar_id", "type") unique ("registrar_id", "type")
); );
CREATE TABLE registry.registrar_ote ( CREATE TABLE registrar_ote (
"registrar_id" integer NOT NULL, "registrar_id" integer NOT NULL,
"command" varchar(75) NOT NULL, "command" varchar(75) NOT NULL,
"result" int NOT NULL, "result" int NOT NULL,
CONSTRAINT test UNIQUE ("registrar_id", "command", "result") CONSTRAINT test UNIQUE ("registrar_id", "command", "result")
); );
CREATE TABLE registry.poll ( CREATE TABLE poll (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"qdate" timestamp(3) without time zone NOT NULL, "qdate" timestamp(3) without time zone NOT NULL,
@ -185,7 +183,7 @@ CREATE TABLE registry.poll (
"availablecredit" decimal(12,2) default '0.00' "availablecredit" decimal(12,2) default '0.00'
); );
CREATE TABLE registry.payment_history ( CREATE TABLE payment_history (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"date" timestamp(3) without time zone NOT NULL, "date" timestamp(3) without time zone NOT NULL,
@ -193,7 +191,7 @@ CREATE TABLE registry.payment_history (
"amount" decimal(12,2) NOT NULL "amount" decimal(12,2) NOT NULL
); );
CREATE TABLE registry.statement ( CREATE TABLE statement (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"date" timestamp(3) without time zone NOT NULL, "date" timestamp(3) without time zone NOT NULL,
@ -205,7 +203,7 @@ CREATE TABLE registry.statement (
"amount" decimal(12,2) NOT NULL "amount" decimal(12,2) NOT NULL
); );
CREATE TABLE registry.invoices ( CREATE TABLE invoices (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"registrar_id" INT, "registrar_id" INT,
"invoice_number" varchar(25) DEFAULT NULL, "invoice_number" varchar(25) DEFAULT NULL,
@ -219,7 +217,7 @@ CREATE TABLE registry.invoices (
"updated_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP "updated_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE registry.contact ( CREATE TABLE contact (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"identifier" varchar(255) NOT NULL, "identifier" varchar(255) NOT NULL,
"voice" varchar(17) default NULL, "voice" varchar(17) default NULL,
@ -246,7 +244,7 @@ CREATE TABLE registry.contact (
unique ("identifier") unique ("identifier")
); );
CREATE TABLE registry.contact_postalinfo ( CREATE TABLE contact_postalinfo (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'int','loc' )) NOT NULL default 'int', "type" varchar CHECK ("type" IN ( 'int','loc' )) NOT NULL default 'int',
@ -268,7 +266,7 @@ CREATE TABLE registry.contact_postalinfo (
unique ("contact_id", "type") unique ("contact_id", "type")
); );
CREATE TABLE registry.contact_authinfo ( CREATE TABLE contact_authinfo (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw',
@ -276,14 +274,14 @@ CREATE TABLE registry.contact_authinfo (
unique ("contact_id") unique ("contact_id")
); );
CREATE TABLE registry.contact_status ( CREATE TABLE contact_status (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientTransferProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientTransferProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
unique ("contact_id", "status") unique ("contact_id", "status")
); );
CREATE TABLE registry.domain ( CREATE TABLE domain (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
@ -331,7 +329,7 @@ CREATE TABLE registry.domain (
unique ("name") unique ("name")
); );
CREATE TABLE registry.application ( CREATE TABLE application (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
@ -365,7 +363,7 @@ CREATE TABLE registry.application (
"tm_phase" text DEFAULT 'NONE'::text NOT NULL "tm_phase" text DEFAULT 'NONE'::text NOT NULL
); );
CREATE TABLE registry.domain_contact_map ( CREATE TABLE domain_contact_map (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
@ -373,7 +371,7 @@ CREATE TABLE registry.domain_contact_map (
unique ("domain_id", "contact_id", "type") unique ("domain_id", "contact_id", "type")
); );
CREATE TABLE registry.application_contact_map ( CREATE TABLE application_contact_map (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
@ -381,7 +379,7 @@ CREATE TABLE registry.application_contact_map (
unique ("domain_id", "contact_id", "type") unique ("domain_id", "contact_id", "type")
); );
CREATE TABLE registry.domain_authinfo ( CREATE TABLE domain_authinfo (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw',
@ -389,21 +387,21 @@ CREATE TABLE registry.domain_authinfo (
unique ("domain_id") unique ("domain_id")
); );
CREATE TABLE registry.domain_status ( CREATE TABLE domain_status (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientHold','clientRenewProhibited','clientTransferProhibited','clientUpdateProhibited','inactive','ok','pendingCreate','pendingDelete','pendingRenew','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverHold','serverRenewProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientHold','clientRenewProhibited','clientTransferProhibited','clientUpdateProhibited','inactive','ok','pendingCreate','pendingDelete','pendingRenew','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverHold','serverRenewProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
unique ("domain_id", "status") unique ("domain_id", "status")
); );
CREATE TABLE registry.application_status ( CREATE TABLE application_status (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'pendingValidation','validated','invalid','pendingAllocation','allocated','rejected','custom' )) NOT NULL default 'pendingValidation', "status" varchar CHECK ("status" IN ( 'pendingValidation','validated','invalid','pendingAllocation','allocated','rejected','custom' )) NOT NULL default 'pendingValidation',
unique ("domain_id", "status") unique ("domain_id", "status")
); );
CREATE TABLE registry.secdns ( CREATE TABLE secdns (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"maxsiglife" int CHECK ("maxsiglife" >= 0) default '604800', "maxsiglife" int CHECK ("maxsiglife" >= 0) default '604800',
@ -419,7 +417,7 @@ CREATE TABLE registry.secdns (
unique ("domain_id", "digest") unique ("domain_id", "digest")
); );
CREATE TABLE registry.host ( CREATE TABLE host (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(255) NOT NULL, "name" varchar(255) NOT NULL,
"domain_id" int CHECK ("domain_id" >= 0) default NULL, "domain_id" int CHECK ("domain_id" >= 0) default NULL,
@ -432,21 +430,21 @@ CREATE TABLE registry.host (
unique ("name") unique ("name")
); );
CREATE TABLE registry.domain_host_map ( CREATE TABLE domain_host_map (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
unique ("domain_id", "host_id") unique ("domain_id", "host_id")
); );
CREATE TABLE registry.application_host_map ( CREATE TABLE application_host_map (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
unique ("domain_id", "host_id") unique ("domain_id", "host_id")
); );
CREATE TABLE registry.host_addr ( CREATE TABLE host_addr (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
"addr" varchar(45) NOT NULL, "addr" varchar(45) NOT NULL,
@ -454,14 +452,14 @@ CREATE TABLE registry.host_addr (
unique ("host_id", "addr", "ip") unique ("host_id", "addr", "ip")
); );
CREATE TABLE registry.host_status ( CREATE TABLE host_status (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
unique ("host_id", "status") unique ("host_id", "status")
); );
CREATE TABLE registry.domain_auto_approve_transfer ( CREATE TABLE domain_auto_approve_transfer (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"registrant" int CHECK ("registrant" >= 0) default NULL, "registrant" int CHECK ("registrant" >= 0) default NULL,
@ -480,7 +478,7 @@ CREATE TABLE registry.domain_auto_approve_transfer (
"transfer_exdate" timestamp(3) without time zone default NULL "transfer_exdate" timestamp(3) without time zone default NULL
); );
CREATE TABLE registry.contact_auto_approve_transfer ( CREATE TABLE contact_auto_approve_transfer (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"identifier" varchar(255) NOT NULL, "identifier" varchar(255) NOT NULL,
"voice" varchar(17) default NULL, "voice" varchar(17) default NULL,
@ -506,7 +504,7 @@ CREATE TABLE registry.contact_auto_approve_transfer (
"disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1' "disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1'
); );
CREATE TABLE registry.statistics ( CREATE TABLE statistics (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"date" date NOT NULL, "date" date NOT NULL,
"total_domains" int CHECK ("total_domains" >= 0) NOT NULL DEFAULT '0', "total_domains" int CHECK ("total_domains" >= 0) NOT NULL DEFAULT '0',
@ -518,7 +516,7 @@ CREATE TABLE registry.statistics (
unique ("date") unique ("date")
); );
CREATE TABLE IF NOT EXISTS registry.users ( CREATE TABLE IF NOT EXISTS users (
"id" SERIAL PRIMARY KEY CHECK ("id" >= 0), "id" SERIAL PRIMARY KEY CHECK ("id" >= 0),
"email" VARCHAR(249) UNIQUE NOT NULL, "email" VARCHAR(249) UNIQUE NOT NULL,
"password" VARCHAR(255) NOT NULL, "password" VARCHAR(255) NOT NULL,
@ -536,8 +534,8 @@ CREATE TABLE IF NOT EXISTS registry.users (
"backup_codes" TEXT "backup_codes" TEXT
); );
CREATE TABLE IF NOT EXISTS registry.users_audit ( CREATE TABLE IF NOT EXISTS users_audit (
"user_id" SERIAL PRIMARY KEY CHECK ("user_id" >= 0), "user_id" INT NOT NULL,
"user_event" VARCHAR(255) NOT NULL, "user_event" VARCHAR(255) NOT NULL,
"user_resource" VARCHAR(255) DEFAULT NULL, "user_resource" VARCHAR(255) DEFAULT NULL,
"user_agent" VARCHAR(255) NOT NULL, "user_agent" VARCHAR(255) NOT NULL,
@ -546,10 +544,10 @@ CREATE TABLE IF NOT EXISTS registry.users_audit (
"event_time" TIMESTAMP(3) NOT NULL, "event_time" TIMESTAMP(3) NOT NULL,
"user_data" JSONB DEFAULT NULL "user_data" JSONB DEFAULT NULL
); );
CREATE INDEX idx_user_event ON registry.users_audit (user_event); CREATE INDEX idx_user_event ON users_audit (user_event);
CREATE INDEX idx_user_ip ON registry.users_audit (user_ip); CREATE INDEX idx_user_ip ON users_audit (user_ip);
CREATE TABLE IF NOT EXISTS registry.users_confirmations ( CREATE TABLE IF NOT EXISTS users_confirmations (
"id" SERIAL PRIMARY KEY CHECK ("id" >= 0), "id" SERIAL PRIMARY KEY CHECK ("id" >= 0),
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"email" VARCHAR(249) NOT NULL, "email" VARCHAR(249) NOT NULL,
@ -557,36 +555,36 @@ CREATE TABLE IF NOT EXISTS registry.users_confirmations (
"token" VARCHAR(255) NOT NULL, "token" VARCHAR(255) NOT NULL,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0) "expires" INTEGER NOT NULL CHECK ("expires" >= 0)
); );
CREATE INDEX IF NOT EXISTS "email_expires" ON registry.users_confirmations ("email", "expires"); CREATE INDEX IF NOT EXISTS "email_expires" ON users_confirmations ("email", "expires");
CREATE INDEX IF NOT EXISTS "user_id" ON registry.users_confirmations ("user_id"); CREATE INDEX IF NOT EXISTS "user_id" ON users_confirmations ("user_id");
CREATE TABLE IF NOT EXISTS registry.users_remembered ( CREATE TABLE IF NOT EXISTS users_remembered (
"id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0), "id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0),
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"selector" VARCHAR(24) UNIQUE NOT NULL, "selector" VARCHAR(24) UNIQUE NOT NULL,
"token" VARCHAR(255) NOT NULL, "token" VARCHAR(255) NOT NULL,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0) "expires" INTEGER NOT NULL CHECK ("expires" >= 0)
); );
CREATE INDEX IF NOT EXISTS "user_id" ON registry.users_remembered ("user_id"); CREATE INDEX IF NOT EXISTS "re_user_id" ON users_remembered ("user_id");
CREATE TABLE IF NOT EXISTS registry.users_resets ( CREATE TABLE IF NOT EXISTS users_resets (
"id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0), "id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0),
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"selector" VARCHAR(20) UNIQUE NOT NULL, "selector" VARCHAR(20) UNIQUE NOT NULL,
"token" VARCHAR(255) NOT NULL, "token" VARCHAR(255) NOT NULL,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0) "expires" INTEGER NOT NULL CHECK ("expires" >= 0)
); );
CREATE INDEX IF NOT EXISTS "user_expires" ON registry.users_resets ("user_id", "expires"); CREATE INDEX IF NOT EXISTS "user_expires" ON users_resets ("user_id", "expires");
CREATE TABLE IF NOT EXISTS registry.users_throttling ( CREATE TABLE IF NOT EXISTS users_throttling (
"bucket" VARCHAR(44) PRIMARY KEY, "bucket" VARCHAR(44) PRIMARY KEY,
"tokens" REAL NOT NULL CHECK ("tokens" >= 0), "tokens" REAL NOT NULL CHECK ("tokens" >= 0),
"replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0), "replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0),
"expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0) "expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0)
); );
CREATE INDEX IF NOT EXISTS "expires_at" ON registry.users_throttling ("expires_at"); CREATE INDEX IF NOT EXISTS "expires_at" ON users_throttling ("expires_at");
CREATE TABLE IF NOT EXISTS registry.users_webauthn ( CREATE TABLE IF NOT EXISTS users_webauthn (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"user_id" INTEGER NOT NULL, "user_id" INTEGER NOT NULL,
"credential_id" BYTEA NOT NULL, "credential_id" BYTEA NOT NULL,
@ -598,12 +596,12 @@ CREATE TABLE IF NOT EXISTS registry.users_webauthn (
"last_used_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP "last_used_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE IF NOT EXISTS registry.registrar_users ( CREATE TABLE IF NOT EXISTS registrar_users (
"registrar_id" int NOT NULL PRIMARY KEY, "registrar_id" int NOT NULL PRIMARY KEY,
"user_id" int NOT NULL "user_id" int NOT NULL
); );
CREATE TABLE registry.urs_actions ( CREATE TABLE urs_actions (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_name" VARCHAR(255) NOT NULL, "domain_name" VARCHAR(255) NOT NULL,
"urs_provider" VARCHAR(255) NOT NULL, "urs_provider" VARCHAR(255) NOT NULL,
@ -616,7 +614,7 @@ CREATE TYPE deposit_type_enum AS ENUM ('Full', 'Incremental', 'Differential');
CREATE TYPE status_enum AS ENUM ('Deposited', 'Retrieved', 'Failed'); CREATE TYPE status_enum AS ENUM ('Deposited', 'Retrieved', 'Failed');
CREATE TYPE verification_status_enum AS ENUM ('Verified', 'Failed', 'Pending'); CREATE TYPE verification_status_enum AS ENUM ('Verified', 'Failed', 'Pending');
CREATE TABLE registry.rde_escrow_deposits ( CREATE TABLE rde_escrow_deposits (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"deposit_id" VARCHAR(255) UNIQUE, -- Unique deposit identifier "deposit_id" VARCHAR(255) UNIQUE, -- Unique deposit identifier
"deposit_date" DATE NOT NULL, "deposit_date" DATE NOT NULL,
@ -636,7 +634,7 @@ CREATE TABLE registry.rde_escrow_deposits (
CREATE TYPE report_status_enum AS ENUM ('Pending', 'Submitted', 'Accepted', 'Rejected'); CREATE TYPE report_status_enum AS ENUM ('Pending', 'Submitted', 'Accepted', 'Rejected');
CREATE TABLE registry.icann_reports ( CREATE TABLE icann_reports (
"id" serial8 PRIMARY KEY, "id" serial8 PRIMARY KEY,
"report_date" DATE NOT NULL, "report_date" DATE NOT NULL,
"type" VARCHAR(255) NOT NULL, "type" VARCHAR(255) NOT NULL,
@ -646,7 +644,7 @@ CREATE TABLE registry.icann_reports (
"notes" TEXT "notes" TEXT
); );
CREATE TABLE registry.promotion_pricing ( CREATE TABLE promotion_pricing (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"tld_id" INT CHECK ("tld_id" >= 0), "tld_id" INT CHECK ("tld_id" >= 0),
"promo_name" varchar(255) NOT NULL, "promo_name" varchar(255) NOT NULL,
@ -672,14 +670,14 @@ CREATE TABLE registry.promotion_pricing (
CREATE INDEX idx_promotion_pricing_tld_id ON promotion_pricing (tld_id); CREATE INDEX idx_promotion_pricing_tld_id ON promotion_pricing (tld_id);
CREATE TABLE registry.premium_domain_categories ( CREATE TABLE premium_domain_categories (
"category_id" serial8 PRIMARY KEY, "category_id" serial8 PRIMARY KEY,
"category_name" VARCHAR(255) NOT NULL, "category_name" VARCHAR(255) NOT NULL,
"category_price" NUMERIC(10, 2) NOT NULL, "category_price" NUMERIC(10, 2) NOT NULL,
UNIQUE (category_name) UNIQUE (category_name)
); );
CREATE TABLE registry.premium_domain_pricing ( CREATE TABLE premium_domain_pricing (
"id" serial8 PRIMARY KEY, "id" serial8 PRIMARY KEY,
"domain_name" VARCHAR(255) NOT NULL, "domain_name" VARCHAR(255) NOT NULL,
"tld_id" INT CHECK ("tld_id" >= 0) NOT NULL, "tld_id" INT CHECK ("tld_id" >= 0) NOT NULL,
@ -690,13 +688,13 @@ CREATE TABLE registry.premium_domain_pricing (
CREATE TYPE ticket_status AS ENUM ('Open', 'In Progress', 'Resolved', 'Closed'); CREATE TYPE ticket_status AS ENUM ('Open', 'In Progress', 'Resolved', 'Closed');
CREATE TYPE ticket_priority AS ENUM ('Low', 'Medium', 'High', 'Critical'); CREATE TYPE ticket_priority AS ENUM ('Low', 'Medium', 'High', 'Critical');
CREATE TABLE registry.ticket_categories ( CREATE TABLE ticket_categories (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"name" VARCHAR(255) NOT NULL, "name" VARCHAR(255) NOT NULL,
"description" TEXT "description" TEXT
); );
CREATE TABLE registry.support_tickets ( CREATE TABLE support_tickets (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"user_id" INTEGER NOT NULL, "user_id" INTEGER NOT NULL,
"category_id" INTEGER NOT NULL, "category_id" INTEGER NOT NULL,
@ -713,7 +711,7 @@ CREATE TABLE registry.support_tickets (
"last_updated" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP "last_updated" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE registry.ticket_responses ( CREATE TABLE ticket_responses (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"ticket_id" INTEGER NOT NULL, "ticket_id" INTEGER NOT NULL,
"responder_id" INTEGER NOT NULL, "responder_id" INTEGER NOT NULL,
@ -721,7 +719,7 @@ CREATE TABLE registry.ticket_responses (
"date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP "date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
); );
CREATE TABLE registry.tmch_claims ( CREATE TABLE tmch_claims (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_label" VARCHAR(100) NOT NULL, "domain_label" VARCHAR(100) NOT NULL,
"claim_key" VARCHAR(200) NOT NULL, "claim_key" VARCHAR(200) NOT NULL,
@ -729,42 +727,42 @@ CREATE TABLE registry.tmch_claims (
CONSTRAINT tmch_claims_unique UNIQUE (claim_key, domain_label) CONSTRAINT tmch_claims_unique UNIQUE (claim_key, domain_label)
); );
CREATE TABLE registry.tmch_revocation ( CREATE TABLE tmch_revocation (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"smd_id" VARCHAR(100) NOT NULL, "smd_id" VARCHAR(100) NOT NULL,
"revocation_time" TIMESTAMP(3) NOT NULL, "revocation_time" TIMESTAMP(3) NOT NULL,
CONSTRAINT tmch_revocation_unique UNIQUE (smd_id) CONSTRAINT tmch_revocation_unique UNIQUE (smd_id)
); );
CREATE TABLE registry.tmch_crl ( CREATE TABLE tmch_crl (
"id" SERIAL PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"content" TEXT NOT NULL, "content" TEXT NOT NULL,
"url" VARCHAR(255) NOT NULL, "url" VARCHAR(255) NOT NULL,
"update_timestamp" TIMESTAMP(3) NOT NULL "update_timestamp" TIMESTAMP(3) NOT NULL
); );
INSERT INTO registry.domain_tld VALUES('1','.TEST','/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-)(\.(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-))*$/i','0',NULL); INSERT INTO domain_tld VALUES('1','.TEST','/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-)(\.(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-))*$/i','0',NULL);
INSERT INTO registry.domain_tld VALUES('2','.COM.TEST','/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-)(\.(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-))*$/i','0',NULL); INSERT INTO domain_tld VALUES('2','.COM.TEST','/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-)(\.(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-))*$/i','0',NULL);
INSERT INTO registry.domain_price VALUES (E'1',E'1',E'create',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'1',E'1',E'create',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_price VALUES (E'2',E'1',E'renew',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'2',E'1',E'renew',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_price VALUES (E'3',E'1',E'transfer',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'3',E'1',E'transfer',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_price VALUES (E'4',E'2',E'create',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'4',E'2',E'create',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_price VALUES (E'5',E'2',E'renew',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'5',E'2',E'renew',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_price VALUES (E'6',E'2',E'transfer',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00'); INSERT INTO domain_price VALUES (E'6',E'2',E'transfer',E'0.00',E'5.00',E'10.00',E'15.00',E'20.00',E'25.00',E'30.00',E'35.00',E'40.00',E'45.00',E'50.00');
INSERT INTO registry.domain_restore_price VALUES (E'1',E'1',E'50.00'); INSERT INTO domain_restore_price VALUES (E'1',E'1',E'50.00');
INSERT INTO registry.domain_restore_price VALUES (E'2',E'2',E'50.00'); INSERT INTO domain_restore_price VALUES (E'2',E'2',E'50.00');
INSERT INTO registry.registrar ("name", "clid", "pw", "prefix", "email", "whois_server", "rdap_server", "url", "abuse_email", "abuse_phone", "accountbalance", "creditlimit", "creditthreshold", "thresholdtype", "crdate", "lastupdate") VALUES (E'LeoNet LLC',E'leonet',E'$argon2id$v=19$m=131072,t=6,p=4$M0ViOHhzTWFtQW5YSGZ2MA$g2pKb+PEYtfs4QwLmf2iUtPM4+7evuqYQFp6yqGZmQg',E'LN',E'info@leonet.test',E'whois.leonet.test',E'rdap.leonet.test',E'https://www.leonet.test',E'abuse@leonet.test',E'+380.325050',E'100000.00',E'100000.00',E'500.00',E'fixed',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP); INSERT INTO registrar ("name", "clid", "pw", "prefix", "email", "whois_server", "rdap_server", "url", "abuse_email", "abuse_phone", "accountbalance", "creditlimit", "creditthreshold", "thresholdtype", "crdate", "lastupdate") VALUES (E'LeoNet LLC',E'leonet',E'$argon2id$v=19$m=131072,t=6,p=4$M0ViOHhzTWFtQW5YSGZ2MA$g2pKb+PEYtfs4QwLmf2iUtPM4+7evuqYQFp6yqGZmQg',E'LN',E'info@leonet.test',E'whois.leonet.test',E'rdap.leonet.test',E'https://www.leonet.test',E'abuse@leonet.test',E'+380.325050',E'100000.00',E'100000.00',E'500.00',E'fixed',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);
INSERT INTO registry.registrar ("name", "clid", "pw", "prefix", "email", "whois_server", "rdap_server", "url", "abuse_email", "abuse_phone", "accountbalance", "creditlimit", "creditthreshold", "thresholdtype", "crdate", "lastupdate") VALUES (E'Nord Registrar AB',E'nordregistrar',E'$argon2id$v=19$m=131072,t=6,p=4$MU9Eei5UMjA0M2cxYjd3bg$2yBHTWVVY4xQlMGhnhol9MRbVyVQg8qkcZ6cpdeID1U',E'NR',E'info@nordregistrar.test',E'whois.nordregistrar.test',E'rdap.nordregistrar.test',E'https://www.nordregistrar.test',E'abuse@nordregistrar.test',E'+46.80203',E'100000.00',E'100000.00',E'500.00',E'fixed',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP); INSERT INTO registrar ("name", "clid", "pw", "prefix", "email", "whois_server", "rdap_server", "url", "abuse_email", "abuse_phone", "accountbalance", "creditlimit", "creditthreshold", "thresholdtype", "crdate", "lastupdate") VALUES (E'Nord Registrar AB',E'nordregistrar',E'$argon2id$v=19$m=131072,t=6,p=4$MU9Eei5UMjA0M2cxYjd3bg$2yBHTWVVY4xQlMGhnhol9MRbVyVQg8qkcZ6cpdeID1U',E'NR',E'info@nordregistrar.test',E'whois.nordregistrar.test',E'rdap.nordregistrar.test',E'https://www.nordregistrar.test',E'abuse@nordregistrar.test',E'+46.80203',E'100000.00',E'100000.00',E'500.00',E'fixed',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);
INSERT INTO registry.registrar_whitelist ("registrar_id", "addr") VALUES INSERT INTO registrar_whitelist ("registrar_id", "addr") VALUES
('1', '1.2.3.4'); ('1', '1.2.3.4');
INSERT INTO registry.registrar_whitelist ("registrar_id", "addr") VALUES INSERT INTO registrar_whitelist ("registrar_id", "addr") VALUES
('2', '5.6.7.8'); ('2', '5.6.7.8');
INSERT INTO registry.registrar_contact (id, registrar_id, type, title, first_name, middle_name, last_name, org, street1, street2, street3, city, sp, pc, cc, voice, fax, email) VALUES INSERT INTO registrar_contact (id, registrar_id, type, title, first_name, middle_name, last_name, org, street1, street2, street3, city, sp, pc, cc, voice, fax, email) VALUES
('1', '1', 'owner', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'), ('1', '1', 'owner', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'),
('2', '1', 'billing', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'), ('2', '1', 'billing', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'),
('3', '1', 'abuse', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'), ('3', '1', 'abuse', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'),
@ -772,7 +770,7 @@ INSERT INTO registry.registrar_contact (id, registrar_id, type, title, first_nam
('5', '2', 'billing', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'), ('5', '2', 'billing', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'),
('6', '2', 'abuse', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org'); ('6', '2', 'abuse', NULL, 'Test', NULL, 'Name', '', '', NULL, NULL, 'Lviv', '', '', 'ua', '', NULL, 'test@namingo.org');
INSERT INTO registry.ticket_categories (name, description) VALUES INSERT INTO ticket_categories (name, description) VALUES
('Domain Transfer', 'Issues related to domain transfers between registrars'), ('Domain Transfer', 'Issues related to domain transfers between registrars'),
('Registration Errors', 'Errors or issues encountered during domain registration'), ('Registration Errors', 'Errors or issues encountered during domain registration'),
('Billing & Payments', 'Questions or issues related to invoicing, payments, or account balances'), ('Billing & Payments', 'Questions or issues related to invoicing, payments, or account balances'),
@ -786,7 +784,7 @@ INSERT INTO registry.ticket_categories (name, description) VALUES
('RDAP Updates', 'Issues or queries related to the Registration Data Access Protocol (RDAP) updates'), ('RDAP Updates', 'Issues or queries related to the Registration Data Access Protocol (RDAP) updates'),
('URS Cases', 'Reports of URS cases'); ('URS Cases', 'Reports of URS cases');
INSERT INTO registry.settings (name, value) VALUES INSERT INTO settings (name, value) VALUES
('dns-tcp-queries-received', '0'), ('dns-tcp-queries-received', '0'),
('dns-tcp-queries-responded', '0'), ('dns-tcp-queries-responded', '0'),
('dns-udp-queries-received', '0'), ('dns-udp-queries-received', '0'),
@ -806,76 +804,55 @@ INSERT INTO registry.settings (name, value) VALUES
('whois_server', 'whois.example.com'), ('whois_server', 'whois.example.com'),
('rdap_server', 'https://rdap.example.com'); ('rdap_server', 'https://rdap.example.com');
ALTER TABLE registry.domain_tld ADD FOREIGN KEY (launch_phase_id) REFERENCES registry.launch_phases(id); ALTER TABLE domain_tld ADD FOREIGN KEY (launch_phase_id) REFERENCES launch_phases(id);
ALTER TABLE registry.launch_phases ADD FOREIGN KEY (tld_id) REFERENCES registry.domain_tld(id); ALTER TABLE launch_phases ADD FOREIGN KEY (tld_id) REFERENCES domain_tld(id);
ALTER TABLE registry.error_log ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id); ALTER TABLE error_log ADD FOREIGN KEY (registrar_id) REFERENCES registrar(id);
ALTER TABLE registry.invoices ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id); ALTER TABLE invoices ADD FOREIGN KEY (registrar_id) REFERENCES registrar(id);
ALTER TABLE registry.invoices ADD FOREIGN KEY (billing_contact_id) REFERENCES registry.registrar_contact(id); ALTER TABLE invoices ADD FOREIGN KEY (billing_contact_id) REFERENCES registrar_contact(id);
ALTER TABLE registry.users_webauthn ADD FOREIGN KEY (user_id) REFERENCES users(id); ALTER TABLE users_webauthn ADD FOREIGN KEY (user_id) REFERENCES users(id);
ALTER TABLE registry.domain_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id"); ALTER TABLE domain_price ADD FOREIGN KEY ("tldid") REFERENCES domain_tld ("id");
ALTER TABLE registry.domain_restore_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id"); ALTER TABLE domain_restore_price ADD FOREIGN KEY ("tldid") REFERENCES domain_tld ("id");
ALTER TABLE registry.registrar_whitelist ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registrar_whitelist ADD FOREIGN KEY ("registrar_id") REFERENCES registrar ("id");
ALTER TABLE registry.registrar_users ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id) ON DELETE CASCADE; ALTER TABLE registrar_users ADD FOREIGN KEY (registrar_id) REFERENCES registrar(id) ON DELETE CASCADE;
ALTER TABLE registry.registrar_users ADD FOREIGN KEY (user_id) REFERENCES registry.users(id) ON DELETE CASCADE; ALTER TABLE registrar_users ADD FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
ALTER TABLE registry.registrar_contact ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registrar_contact ADD FOREIGN KEY ("registrar_id") REFERENCES registrar ("id");
ALTER TABLE registry.poll ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE poll ADD FOREIGN KEY ("registrar_id") REFERENCES registrar ("id");
ALTER TABLE registry.payment_history ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE payment_history ADD FOREIGN KEY ("registrar_id") REFERENCES registrar ("id");
ALTER TABLE registry.statement ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE statement ADD FOREIGN KEY ("registrar_id") REFERENCES registrar ("id");
ALTER TABLE registry.contact ADD FOREIGN KEY ("clid") REFERENCES registry.registrar ("id"); ALTER TABLE contact ADD FOREIGN KEY ("clid") REFERENCES registrar ("id");
ALTER TABLE registry.contact ADD FOREIGN KEY ("crid") REFERENCES registry.registrar ("id"); ALTER TABLE contact ADD FOREIGN KEY ("crid") REFERENCES registrar ("id");
ALTER TABLE registry.contact ADD FOREIGN KEY ("upid") REFERENCES registry.registrar ("id"); ALTER TABLE contact ADD FOREIGN KEY ("upid") REFERENCES registrar ("id");
ALTER TABLE registry.contact_postalinfo ADD FOREIGN KEY ("contact_id") REFERENCES registry.contact ("id"); ALTER TABLE contact_postalinfo ADD FOREIGN KEY ("contact_id") REFERENCES contact ("id");
ALTER TABLE registry.contact_authinfo ADD FOREIGN KEY ("contact_id") REFERENCES registry.contact ("id"); ALTER TABLE contact_authinfo ADD FOREIGN KEY ("contact_id") REFERENCES contact ("id");
ALTER TABLE registry.contact_status ADD FOREIGN KEY ("contact_id") REFERENCES registry.contact ("id"); ALTER TABLE contact_status ADD FOREIGN KEY ("contact_id") REFERENCES contact ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("clid") REFERENCES registry.registrar ("id"); ALTER TABLE domain ADD FOREIGN KEY ("clid") REFERENCES registrar ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("crid") REFERENCES registry.registrar ("id"); ALTER TABLE domain ADD FOREIGN KEY ("crid") REFERENCES registrar ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("upid") REFERENCES registry.registrar ("id"); ALTER TABLE domain ADD FOREIGN KEY ("upid") REFERENCES registrar ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("registrant") REFERENCES registry.contact ("id"); ALTER TABLE domain ADD FOREIGN KEY ("registrant") REFERENCES contact ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("reid") REFERENCES registry.registrar ("id"); ALTER TABLE domain ADD FOREIGN KEY ("reid") REFERENCES registrar ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("acid") REFERENCES registry.registrar ("id"); ALTER TABLE domain ADD FOREIGN KEY ("acid") REFERENCES registrar ("id");
ALTER TABLE registry.domain ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id"); ALTER TABLE domain ADD FOREIGN KEY ("tldid") REFERENCES domain_tld ("id");
ALTER TABLE registry.domain_contact_map ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE domain_contact_map ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.domain_contact_map ADD FOREIGN KEY ("contact_id") REFERENCES registry.contact ("id"); ALTER TABLE domain_contact_map ADD FOREIGN KEY ("contact_id") REFERENCES contact ("id");
ALTER TABLE registry.application_contact_map ADD FOREIGN KEY ("domain_id") REFERENCES registry.application ("id"); ALTER TABLE application_contact_map ADD FOREIGN KEY ("domain_id") REFERENCES application ("id");
ALTER TABLE registry.application_contact_map ADD FOREIGN KEY ("contact_id") REFERENCES registry.contact ("id"); ALTER TABLE application_contact_map ADD FOREIGN KEY ("contact_id") REFERENCES contact ("id");
ALTER TABLE registry.domain_authinfo ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE domain_authinfo ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.domain_status ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE domain_status ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.application_status ADD FOREIGN KEY ("domain_id") REFERENCES registry.application ("id"); ALTER TABLE application_status ADD FOREIGN KEY ("domain_id") REFERENCES application ("id");
ALTER TABLE registry.secdns ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE secdns ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.host ADD FOREIGN KEY ("clid") REFERENCES registry.registrar ("id"); ALTER TABLE host ADD FOREIGN KEY ("clid") REFERENCES registrar ("id");
ALTER TABLE registry.host ADD FOREIGN KEY ("crid") REFERENCES registry.registrar ("id"); ALTER TABLE host ADD FOREIGN KEY ("crid") REFERENCES registrar ("id");
ALTER TABLE registry.host ADD FOREIGN KEY ("upid") REFERENCES registry.registrar ("id"); ALTER TABLE host ADD FOREIGN KEY ("upid") REFERENCES registrar ("id");
ALTER TABLE registry.host ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE host ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.domain_host_map ADD FOREIGN KEY ("domain_id") REFERENCES registry.domain ("id"); ALTER TABLE domain_host_map ADD FOREIGN KEY ("domain_id") REFERENCES domain ("id");
ALTER TABLE registry.domain_host_map ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE domain_host_map ADD FOREIGN KEY ("host_id") REFERENCES host ("id");
ALTER TABLE registry.application_host_map ADD FOREIGN KEY ("domain_id") REFERENCES registry.application ("id"); ALTER TABLE application_host_map ADD FOREIGN KEY ("domain_id") REFERENCES application ("id");
ALTER TABLE registry.application_host_map ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE application_host_map ADD FOREIGN KEY ("host_id") REFERENCES host ("id");
ALTER TABLE registry.host_addr ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE host_addr ADD FOREIGN KEY ("host_id") REFERENCES host ("id");
ALTER TABLE registry.host_status ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE host_status ADD FOREIGN KEY ("host_id") REFERENCES host ("id");
ALTER TABLE registry.promotion_pricing ADD FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id"); ALTER TABLE promotion_pricing ADD FOREIGN KEY ("tld_id") REFERENCES domain_tld("id");
ALTER TABLE registry.premium_domain_pricing ADD FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id"); ALTER TABLE premium_domain_pricing ADD FOREIGN KEY ("tld_id") REFERENCES domain_tld("id");
ALTER TABLE registry.premium_domain_pricing ADD FOREIGN KEY ("category_id") REFERENCES registry.premium_domain_categories("category_id"); ALTER TABLE premium_domain_pricing ADD FOREIGN KEY ("category_id") REFERENCES premium_domain_categories("category_id");
ALTER TABLE registry.support_tickets ADD FOREIGN KEY ("user_id") REFERENCES registry.users(id); ALTER TABLE support_tickets ADD FOREIGN KEY ("user_id") REFERENCES users(id);
ALTER TABLE registry.support_tickets ADD FOREIGN KEY ("category_id") REFERENCES registry.ticket_categories(id); ALTER TABLE support_tickets ADD FOREIGN KEY ("category_id") REFERENCES ticket_categories(id);
ALTER TABLE registry.ticket_responses ADD FOREIGN KEY ("ticket_id") REFERENCES registry.support_tickets(id); ALTER TABLE ticket_responses ADD FOREIGN KEY ("ticket_id") REFERENCES support_tickets(id);
CREATE TABLE registryTransaction.transaction_identifier (
id BIGSERIAL PRIMARY KEY,
registrar_id INT NOT NULL,
clTRID VARCHAR(64),
clTRIDframe TEXT,
cldate TIMESTAMP(3) WITHOUT TIME ZONE,
clmicrosecond INT,
cmd VARCHAR(10) CHECK (cmd IN ('login','logout','check','info','poll','transfer','create','delete','renew','update')),
obj_type VARCHAR(10) CHECK (obj_type IN ('domain','host','contact')),
obj_id TEXT,
code SMALLINT,
msg VARCHAR(255),
svTRID VARCHAR(64),
svTRIDframe TEXT,
svdate TIMESTAMP(3) WITHOUT TIME ZONE,
svmicrosecond INT,
CONSTRAINT unique_clTRID UNIQUE (clTRID),
CONSTRAINT unique_svTRID UNIQUE (svTRID),
CONSTRAINT transaction_identifier_ibfk_1 FOREIGN KEY (registrar_id) REFERENCES registry.registrar (id) ON DELETE RESTRICT
);

View file

@ -0,0 +1,19 @@
CREATE TABLE transaction_identifier (
id BIGSERIAL PRIMARY KEY,
registrar_id INT NOT NULL,
clTRID VARCHAR(64),
clTRIDframe TEXT,
cldate TIMESTAMP(3) WITHOUT TIME ZONE,
clmicrosecond INT,
cmd VARCHAR(10) CHECK (cmd IN ('login','logout','check','info','poll','transfer','create','delete','renew','update')),
obj_type VARCHAR(10) CHECK (obj_type IN ('domain','host','contact')),
obj_id TEXT,
code SMALLINT,
msg VARCHAR(255),
svTRID VARCHAR(64),
svTRIDframe TEXT,
svdate TIMESTAMP(3) WITHOUT TIME ZONE,
svmicrosecond INT,
CONSTRAINT unique_clTRID UNIQUE (clTRID),
CONSTRAINT unique_svTRID UNIQUE (svTRID)
);

View file

@ -125,9 +125,9 @@ Now you need to update PostgreSQL Admin User Password:
sudo -u postgres psql sudo -u postgres psql
postgres=# postgres=#
postgres=# ALTER USER postgres PASSWORD 'demoPassword'; postgres=# ALTER USER postgres PASSWORD 'demoPassword';
postgres=# CREATE SCHEMA registry; postgres=# CREATE DATABASE registry;
postgres=# CREATE SCHEMA registryTransaction; postgres=# CREATE DATABASE registryTransaction;
postgres=# CREATE SCHEMA registryAudit; postgres=# CREATE DATABASE registryAudit;
postgres=# \q postgres=# \q
``` ```
@ -266,7 +266,7 @@ systemctl enable caddy
systemctl restart caddy systemctl restart caddy
``` ```
**And now is the right time to import the provided database file for your database type using Adminer.** **And now is the right time to import the provided database file(s) for your database type using Adminer.**
## 7. Control Panel Setup: ## 7. Control Panel Setup:

View file

@ -166,12 +166,13 @@ EOF
psql --version psql --version
echo "Configuring PostgreSQL..." echo "Configuring PostgreSQL..."
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$DB_PASSWORD';" sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$DB_PASSWORD';"
sudo -u postgres psql -c "CREATE SCHEMA registry;" sudo -u postgres psql -c "CREATE DATABASE registry;"
sudo -u postgres psql -c "CREATE SCHEMA registryTransaction;" sudo -u postgres psql -c "CREATE DATABASE registryTransaction;"
sudo -u postgres psql -c "CREATE SCHEMA registryAudit;" sudo -u postgres psql -c "CREATE DATABASE registryAudit;"
echo "Importing SQL file into PostgreSQL..." echo "Importing SQL files into PostgreSQL..."
psql -U postgres -d postgres -f /opt/registry/database/registry.postgres.sql sudo -u postgres psql -U postgres -d registry -f /opt/registry/database/registry.postgres.sql
sudo -u postgres psql -U postgres -d registrytransaction -f /opt/registry/database/registryTransaction.postgres.sql
echo "SQL import completed." echo "SQL import completed."
fi fi