Files
-Fonu/migrations/006_proxy_multi_host.sql
T

51 lines
1.8 KiB
SQL
Raw Normal View History

2026-09-23 09:40:59 +08:00
CREATE TEMP TABLE proxy_domain_backup AS
SELECT id, domain FROM proxy_rules;
CREATE TABLE proxy_rules_new (
id INTEGER PRIMARY KEY AUTOINCREMENT,
upstream TEXT NOT NULL,
listen_port INTEGER NOT NULL DEFAULT 80 CHECK (listen_port > 0 AND listen_port <= 65535),
listen_ipv4 INTEGER NOT NULL DEFAULT 1 CHECK (listen_ipv4 IN (0, 1)),
listen_ipv6 INTEGER NOT NULL DEFAULT 0 CHECK (listen_ipv6 IN (0, 1)),
https_enabled INTEGER NOT NULL DEFAULT 1 CHECK (https_enabled IN (0, 1)),
http_redirect INTEGER NOT NULL DEFAULT 1 CHECK (http_redirect IN (0, 1)),
enabled INTEGER NOT NULL DEFAULT 1 CHECK (enabled IN (0, 1)),
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
INSERT INTO proxy_rules_new (id, upstream, listen_port, listen_ipv4, listen_ipv6, https_enabled, http_redirect, enabled, created_at, updated_at)
SELECT
id,
upstream,
CASE WHEN https_enabled = 1 THEN 443 ELSE 80 END,
1,
0,
https_enabled,
http_redirect,
enabled,
created_at,
updated_at
FROM proxy_rules;
DROP TABLE proxy_rules;
ALTER TABLE proxy_rules_new RENAME TO proxy_rules;
CREATE TABLE IF NOT EXISTS proxy_hosts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
rule_id INTEGER NOT NULL REFERENCES proxy_rules(id) ON DELETE CASCADE,
hostname TEXT NOT NULL COLLATE NOCASE,
listen_port INTEGER CHECK (listen_port IS NULL OR (listen_port > 0 AND listen_port <= 65535)),
created_at TEXT NOT NULL DEFAULT (datetime('now')),
UNIQUE(hostname)
);
CREATE INDEX IF NOT EXISTS idx_proxy_hosts_rule_id ON proxy_hosts(rule_id);
INSERT INTO proxy_hosts (rule_id, hostname, listen_port)
SELECT id, domain, NULL
FROM proxy_domain_backup
WHERE domain IS NOT NULL AND TRIM(domain) != '';
DROP TABLE proxy_domain_backup;