fix(links): use configured domain for panel copy/QR links on loopback

The panel's copy/QR share links are built client-side and fell back to window.location.hostname, so reaching the panel over an SSH tunnel (127.0.0.1/localhost) leaked localhost into the links - unlike the backend subscription path, which falls back to the configured Sub/Web Domain (issue #4829).

Expose webDomain/subDomain via /defaultSettings and add preferPublicHost: when the browser host is loopback, prefer the configured Sub Domain (then Web Domain) for share/QR links. An explicit node override or per-inbound listen still wins; a routable browser host is kept as-is.

Closes #4829
This commit is contained in:
MHSanaei
2026-06-02 22:52:44 +02:00
parent fcc6787a64
commit 6ee462ac8e
8 changed files with 66 additions and 8 deletions
+2
View File
@@ -15,6 +15,8 @@ export const DefaultsPayloadSchema = z.object({
remarkModel: z.string().optional(),
datepicker: z.enum(['gregorian', 'jalalian']).optional(),
ipLimitEnable: z.boolean().optional(),
webDomain: z.string().optional(),
subDomain: z.string().optional(),
}).loose();
export type DefaultsPayload = z.infer<typeof DefaultsPayloadSchema>;