fc3a66dc83
Go 控制面(SQLite + REST API)嵌入 Mihomo 数据面,Vue 3 多语言 Web 管理台。 含订阅/节点/规则/出站/监控/日志、OpenAPI、API Key、Gitea Actions CI(runs-on: ubuntu-latest) 与开源文档;镜像发布至 git.rc707blog.top Container Registry。 Co-authored-by: Cursor <cursoragent@cursor.com>
113 lines
3.6 KiB
SQL
113 lines
3.6 KiB
SQL
-- +goose Up
|
|
CREATE TABLE IF NOT EXISTS subscriptions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
url TEXT NOT NULL,
|
|
type TEXT NOT NULL DEFAULT 'clash',
|
|
interval_sec INTEGER NOT NULL DEFAULT 3600,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
last_fetch_at TEXT,
|
|
last_error TEXT,
|
|
node_count INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS proxy_nodes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
subscription_id INTEGER,
|
|
name TEXT NOT NULL,
|
|
runtime_name TEXT NOT NULL UNIQUE,
|
|
type TEXT NOT NULL,
|
|
raw_config TEXT NOT NULL DEFAULT '{}',
|
|
source TEXT NOT NULL DEFAULT 'subscription',
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
latency_ms INTEGER NOT NULL DEFAULT -1,
|
|
alive INTEGER NOT NULL DEFAULT 0,
|
|
checked_at TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (subscription_id) REFERENCES subscriptions(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS rules (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
priority INTEGER NOT NULL DEFAULT 100,
|
|
rule_type TEXT NOT NULL,
|
|
payload TEXT NOT NULL DEFAULT '',
|
|
target TEXT NOT NULL,
|
|
source TEXT NOT NULL DEFAULT 'manual',
|
|
subscription_id INTEGER,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (subscription_id) REFERENCES subscriptions(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS proxy_groups (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
runtime_name TEXT NOT NULL UNIQUE,
|
|
type TEXT NOT NULL DEFAULT 'select',
|
|
proxies TEXT NOT NULL DEFAULT '[]',
|
|
source TEXT NOT NULL DEFAULT 'subscription',
|
|
subscription_id INTEGER,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (subscription_id) REFERENCES subscriptions(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS audit_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
action TEXT NOT NULL,
|
|
resource TEXT NOT NULL,
|
|
detail TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS request_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
level TEXT NOT NULL DEFAULT 'info',
|
|
source TEXT NOT NULL DEFAULT 'prism',
|
|
message TEXT NOT NULL,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS traffic_snapshots (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
upload_rate INTEGER NOT NULL DEFAULT 0,
|
|
download_rate INTEGER NOT NULL DEFAULT 0,
|
|
connections INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
INSERT OR IGNORE INTO settings (key, value) VALUES
|
|
('http_port', '7890'),
|
|
('socks_port', '7891'),
|
|
('api_port', '8080'),
|
|
('mihomo_api_port', '9090'),
|
|
('api_secret', ''),
|
|
('admin_password', 'admin'),
|
|
('auth_enabled', 'true'),
|
|
('log_level', 'info'),
|
|
('health_interval_sec', '300'),
|
|
('sub_sync_enabled', 'true'),
|
|
('default_policy', 'DIRECT'),
|
|
('geo_auto_download', 'true');
|
|
|
|
-- +goose Down
|
|
DROP TABLE IF EXISTS traffic_snapshots;
|
|
DROP TABLE IF EXISTS request_logs;
|
|
DROP TABLE IF EXISTS audit_logs;
|
|
DROP TABLE IF EXISTS settings;
|
|
DROP TABLE IF EXISTS proxy_groups;
|
|
DROP TABLE IF EXISTS rules;
|
|
DROP TABLE IF EXISTS proxy_nodes;
|
|
DROP TABLE IF EXISTS subscriptions;
|