fix(sub): randomize fresh panel subscription paths (#6375)

* fix(sub): randomize fresh panel subscription paths

Seed distinct cryptographically random paths for base64, JSON, and Clash subscriptions when a panel database is first created. Persist them so restarts keep published URLs stable while upgrades preserve existing settings.

Generated-by: OpenCode:gpt-5.6-sol

* fix(sub): regenerate paths on settings reset

Keep subscription paths unpredictable after a factory reset, close the test database on failure, and update the builder, OpenAPI, and localized docs to describe panel-specific paths instead of obsolete fixed defaults.

Generated-by: OpenCode:gpt-5.6-sol
This commit is contained in:
ilyusha
2026-09-03 17:34:37 +03:00
committed by GitHub
parent ded2aa150c
commit f9898e0b24
20 changed files with 285 additions and 158 deletions
@@ -69,8 +69,8 @@ export function SubscriptionBuilder() {
const [scheme, setScheme] = useState<'http' | 'https'>('https');
const [host, setHost] = useState('sub.example.com');
const [port, setPort] = useState('2096');
const [subPath, setSubPath] = useState('/sub/');
const [jsonPath, setJsonPath] = useState('/json/');
const [subPath, setSubPath] = useState('/your-sub-path/');
const [jsonPath, setJsonPath] = useState('/your-json-path/');
const [subId, setSubId] = useState('user-1');
const [behindProxy, setBehindProxy] = useState(false);
const [clients, setClients] = useState<ClientRow[]>(DEFAULT_CLIENTS);
@@ -95,8 +95,8 @@ export function SubscriptionBuilder() {
setScheme('https');
setHost('sub.example.com');
setPort('2096');
setSubPath('/sub/');
setJsonPath('/json/');
setSubPath('/your-sub-path/');
setJsonPath('/your-json-path/');
setSubId('user-1');
setBehindProxy(false);
setClients(DEFAULT_CLIENTS);