From 5d2d8c7123b7591e200474523d7b819e8cb211d6 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 17:00:01 +0800 Subject: [PATCH] fix: #551 --- src/webui/index.ts | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/webui/index.ts b/src/webui/index.ts index 68ac18b1..ab89ed7c 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -4,6 +4,7 @@ import { LogWrapper } from '@/common/log'; import { NapCatPathWrapper } from '@/common/path'; import { WebUiConfigWrapper } from './src/helper/config'; import { RequestUtil } from '@/common/request'; +import { isIP } from "node:net"; const app = express(); @@ -46,24 +47,29 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp }); app.use(config.prefix + '/api', ALLRouter); app.listen(config.port, config.host, async () => { + const normalizeHost = (host: string) => { + if (host === '0.0.0.0') return '127.0.0.1'; + if (isIP(host) === 6) return `[${host}]`; + return host; + }; + const createUrl = (host: string, path: string, token: string) => { + const url = new URL(`http://${normalizeHost(host)}`); + url.port = config.port.toString(); + url.pathname = `${config.prefix}${path}`; + url.searchParams.set('token', token); + return url.toString(); + }; log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); log(`[NapCat] [WebUi] Login Token is ${config.token}`); - log( - `[NapCat] [WebUi] WebUi User Panel Url: http://${config.host}:${config.port}${config.prefix}/webui?token=${config.token}` - ); - log( - `[NapCat] [WebUi] WebUi Local Panel Url: http://127.0.0.1:${config.port}${config.prefix}/webui?token=${config.token}` - ); - //获取上网Ip - //https://www.ip.cn/api/index?ip&type=0 - RequestUtil.HttpGetJson<{ IP: { IP: string } }>('https://ip.011102.xyz/', 'GET', {}, {}, true, true) - .then((data) => { - log( - `[NapCat] [WebUi] WebUi Publish Panel Url: http://${data.IP.IP}:${config.port}${config.prefix}/webui/?token=${config.token}` - ); - }) - .catch((err) => { - logger.logError.bind(logger)(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); - }); + log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, '/webui', config.token)}`); + log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', '/webui', config.token)}`); + try { + const publishUrl = 'https://ip.011102.xyz/'; + const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); + log("IP data", data); + log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, '/webui', config.token)}`); + } catch (err) { + logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); + } }); }