diff --git a/src/containers/Settings/index.tsx b/src/containers/Settings/index.tsx index 2c835a5..e5ee95b 100644 --- a/src/containers/Settings/index.tsx +++ b/src/containers/Settings/index.tsx @@ -21,7 +21,8 @@ export default function Settings () { const { t } = useTranslation('Settings') const [info, set] = useObject({ socks5ProxyPort: 7891, - httpProxyPort: 7890 + httpProxyPort: 7890, + mixedProxyPort: 0 }) useEffect(() => { @@ -32,6 +33,7 @@ export default function Settings () { useEffect(() => { set('socks5ProxyPort', general.socksPort) set('httpProxyPort', general.port) + set('mixedProxyPort', general.mixedPort ?? 0) }, [general]) async function handleProxyModeChange (mode: string) { @@ -63,6 +65,11 @@ export default function Settings () { await fetchGeneral() } + async function handleMixedPortSave () { + await updateConfig({ 'mixed-port': info.mixedProxyPort }) + await fetchGeneral() + } + async function handleAllowLanChange (state: boolean) { await updateConfig({ 'allow-lan': state }) await fetchGeneral() @@ -182,6 +189,21 @@ export default function Settings () { /> + + + {t('labels.mixedProxyPort')} + + + set('mixedProxyPort', +mixedProxyPort)} + onBlur={handleMixedPortSave} + /> + + + + {t('labels.externalController')} diff --git a/src/i18n/en_US.ts b/src/i18n/en_US.ts index e4953e7..cff597d 100644 --- a/src/i18n/en_US.ts +++ b/src/i18n/en_US.ts @@ -18,6 +18,7 @@ export default { proxyMode: 'Mode', socks5ProxyPort: 'Socks5 proxy port', httpProxyPort: 'HTTP proxy port', + mixedProxyPort: 'Mixed proxy port', externalController: 'External controller' }, values: { diff --git a/src/i18n/zh_CN.ts b/src/i18n/zh_CN.ts index 45b4ebb..102a880 100644 --- a/src/i18n/zh_CN.ts +++ b/src/i18n/zh_CN.ts @@ -18,6 +18,7 @@ export default { proxyMode: '代理模式', socks5ProxyPort: 'Socks5 代理端口', httpProxyPort: 'HTTP 代理端口', + mixedProxyPort: '混合代理端口', externalController: '外部控制设置' }, values: { diff --git a/src/lib/request.ts b/src/lib/request.ts index 193e757..0ecdb85 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -9,6 +9,7 @@ export interface Config { port: number 'socks-port': number 'redir-port': number + 'mixed-port': number 'allow-lan': boolean mode: string 'log-level': string @@ -160,7 +161,7 @@ export async function getProxyProviders () { return (status >= 200 && status < 300) || status === 404 } }) - // compatible old version + // compatible old version .then(resp => { if (resp.status === 404) { resp.data = { providers: {} } diff --git a/src/models/Config.ts b/src/models/Config.ts index 008b26d..ece980c 100644 --- a/src/models/Config.ts +++ b/src/models/Config.ts @@ -79,6 +79,11 @@ export interface Data { */ socksPort?: number + /** + * mixed porxy port + */ + mixedPort?: number + /** * redir proxy port */ diff --git a/src/stores/recoil.ts b/src/stores/recoil.ts index 3c17847..237f007 100644 --- a/src/stores/recoil.ts +++ b/src/stores/recoil.ts @@ -163,6 +163,7 @@ export function useGeneral () { set({ port: data.port, socksPort: data['socks-port'], + mixedPort: data['mixed-port'] ?? 0, redirPort: data['redir-port'], mode: data.mode.toLowerCase() as Models.Data['general']['mode'], logLevel: data['log-level'],