From d49e9bc420db6cc40ff80e628bc8415afe92daf6 Mon Sep 17 00:00:00 2001 From: pompurin404 Date: Tue, 27 Aug 2024 10:05:47 +0800 Subject: [PATCH] support fixed proxy --- src/main/core/manager.ts | 3 ++- src/main/core/mihomoApi.ts | 3 +-- src/main/index.ts | 11 ++++++++++- src/main/utils/init.ts | 8 -------- src/renderer/src/components/proxies/proxy-item.tsx | 3 ++- src/shared/types.d.ts | 1 + 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/core/manager.ts b/src/main/core/manager.ts index 7bebdc6..3beedf7 100644 --- a/src/main/core/manager.ts +++ b/src/main/core/manager.ts @@ -9,7 +9,7 @@ import { import { generateProfile } from './factory' import { getAppConfig, patchAppConfig, patchControledMihomoConfig } from '../config' import { dialog, safeStorage } from 'electron' -import { pauseWebsockets } from './mihomoApi' +import { pauseWebsockets, startMihomoTraffic } from './mihomoApi' import { writeFile } from 'fs/promises' import { promisify } from 'util' import { mainWindow } from '..' @@ -59,6 +59,7 @@ export async function startCore(): Promise { } } if (data.toString().includes('RESTful API listening at')) { + await startMihomoTraffic() retry = 10 resolve() } diff --git a/src/main/core/mihomoApi.ts b/src/main/core/mihomoApi.ts index c5e925e..3a161fa 100644 --- a/src/main/core/mihomoApi.ts +++ b/src/main/core/mihomoApi.ts @@ -389,9 +389,8 @@ const mihomoConnections = async (): Promise => { export const pauseWebsockets = () => { const recoverList: (() => void)[] = [] - // Traffic 始终开启 + // Traffic 内核启动时始终开启 stopMihomoTraffic() - recoverList.push(startMihomoTraffic) if (mihomoMemoryWs) { stopMihomoMemory() recoverList.push(startMihomoMemory) diff --git a/src/main/index.ts b/src/main/index.ts index b2d499f..4ead4b4 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -4,7 +4,7 @@ import windowStateKeeper from 'electron-window-state' import { app, shell, BrowserWindow, Menu, dialog, Notification } from 'electron' import { pauseWebsockets, startMihomoMemory, stopMihomoMemory } from './core/mihomoApi' import { addProfileItem, getAppConfig } from './config' -import { stopCore } from './core/manager' +import { startCore, stopCore } from './core/manager' import { triggerSysProxy } from './sys/sysproxy' import icon from '../../resources/icon.png?asset' import { createTray } from './resolve/tray' @@ -13,6 +13,7 @@ import { join } from 'path' import { initShortcut } from './resolve/shortcut' import { execSync } from 'child_process' import { createElevateTask } from './sys/misc' +import { initProfileUpdater } from './core/profileUpdater' export let mainWindow: BrowserWindow | null = null @@ -79,6 +80,14 @@ app.whenReady().then(async () => { dialog.showErrorBox('应用初始化失败', `${e}`) app.quit() } + try { + await startCore() + setTimeout(async () => { + await initProfileUpdater() + }, 60000) + } catch (e) { + dialog.showErrorBox('内核启动失败', `${e}`) + } // Default open or close DevTools by F12 in development // and ignore CommandOrControl + R in production. diff --git a/src/main/utils/init.ts b/src/main/utils/init.ts index 5908373..6ea9493 100644 --- a/src/main/utils/init.ts +++ b/src/main/utils/init.ts @@ -27,9 +27,6 @@ import { startPacServer } from '../resolve/server' import { triggerSysProxy } from '../sys/sysproxy' import { getAppConfig } from '../config' import { app } from 'electron' -import { startCore } from '../core/manager' -import { initProfileUpdater } from '../core/profileUpdater' -import { startMihomoTraffic } from '../core/mihomoApi' async function initDirs(): Promise { if (!existsSync(dataDir())) { @@ -138,11 +135,6 @@ export async function init(): Promise { await startPacServer() const { sysProxy } = await getAppConfig() await triggerSysProxy(sysProxy.enable) - await startCore() - await startMihomoTraffic() - setTimeout(async () => { - await initProfileUpdater() - }, 60000) initDeeplink() } diff --git a/src/renderer/src/components/proxies/proxy-item.tsx b/src/renderer/src/components/proxies/proxy-item.tsx index dd0fdb1..bcc643f 100644 --- a/src/renderer/src/components/proxies/proxy-item.tsx +++ b/src/renderer/src/components/proxies/proxy-item.tsx @@ -52,13 +52,14 @@ const ProxyItem: React.FC = (props) => { PubSub.unsubscribe(token) } }, []) + const fixed = group.fixed && group.fixed === proxy.name return ( onSelect(group.name, proxy.name)} isPressable fullWidth - className={`${selected ? 'bg-primary/30' : 'bg-content2'}`} + className={`${fixed ? 'bg-secondary/30' : selected ? 'bg-primary/30' : 'bg-content2'}`} radius="sm" > diff --git a/src/shared/types.d.ts b/src/shared/types.d.ts index 6ecd403..b1af30d 100644 --- a/src/shared/types.d.ts +++ b/src/shared/types.d.ts @@ -147,6 +147,7 @@ interface IMihomoGroup { all: string[] extra: Record testUrl?: string + fixed?: string hidden: boolean history: IMihomoHistory[] icon: string