From 788757b7855559d2d9093f60d76f519226f531f1 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Tue, 10 Mar 2026 00:09:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(remote):=20=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BC=A0=E8=BE=93=E4=B8=93=E7=94=A8=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 fileTransferPort 字段到 RemoteDevice 类型 - 新增 frp 穿透配置: 3003 -> 8083 - 文件传输功能改用专用端口,避免与远程桌面端口共用 - 配置对话框新增文件传输端口设置 --- api/modules/remote/service.ts | 6 ++++++ remote/frp/frpc.toml | 7 +++++++ shared/modules/remote/types.ts | 1 + src/modules/remote/RemotePage.tsx | 4 +++- src/modules/remote/components/ConfigDialog.tsx | 13 +++++++++++++ src/modules/remote/types.ts | 1 + 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/api/modules/remote/service.ts b/api/modules/remote/service.ts index b507c60..3ede7da 100644 --- a/api/modules/remote/service.ts +++ b/api/modules/remote/service.ts @@ -73,6 +73,8 @@ export class RemoteService { serverHost: deviceConfig.serverHost || '', desktopPort: deviceConfig.desktopPort || 3000, gitPort: deviceConfig.gitPort || 3001, + openCodePort: deviceConfig.openCodePort || 3002, + fileTransferPort: deviceConfig.fileTransferPort || 3003, password: deviceConfig.password || '', } } catch { @@ -82,6 +84,8 @@ export class RemoteService { serverHost: '', desktopPort: 3000, gitPort: 3001, + openCodePort: 3002, + fileTransferPort: 3003, password: '', } } @@ -116,6 +120,8 @@ export class RemoteService { serverHost: device.serverHost, desktopPort: device.desktopPort, gitPort: device.gitPort, + openCodePort: device.openCodePort, + fileTransferPort: device.fileTransferPort, password: device.password || '', } await fs.writeFile(deviceConfigPath, JSON.stringify(deviceConfig, null, 2), 'utf-8') diff --git a/remote/frp/frpc.toml b/remote/frp/frpc.toml index b3d31c8..265e5a9 100644 --- a/remote/frp/frpc.toml +++ b/remote/frp/frpc.toml @@ -27,4 +27,11 @@ localIP = "127.0.0.1" localPort = 3002 remotePort = 8082 +[[proxies]] +name = "filetransfer-remote" +type = "tcp" +localIP = "127.0.0.1" +localPort = 3003 +remotePort = 8083 + diff --git a/shared/modules/remote/types.ts b/shared/modules/remote/types.ts index 957cb62..2bac546 100644 --- a/shared/modules/remote/types.ts +++ b/shared/modules/remote/types.ts @@ -5,6 +5,7 @@ export interface RemoteDevice { desktopPort: number gitPort: number openCodePort: number + fileTransferPort: number password?: string } diff --git a/src/modules/remote/RemotePage.tsx b/src/modules/remote/RemotePage.tsx index 1f169ff..bcc7df0 100644 --- a/src/modules/remote/RemotePage.tsx +++ b/src/modules/remote/RemotePage.tsx @@ -40,6 +40,7 @@ const createEmptyDevice = (): RemoteDevice => ({ desktopPort: 3000, gitPort: 3001, openCodePort: 3002, + fileTransferPort: 3003, }) export const RemotePage: React.FC = () => { @@ -88,6 +89,7 @@ export const RemotePage: React.FC = () => { openCodePort: device.openCodePort || 3002, desktopPort: device.desktopPort || 3000, gitPort: device.gitPort || 3001, + fileTransferPort: device.fileTransferPort || 3003, })) setConfig(configWithDevices) if (configWithDevices.devices.length > 0 && !selectedDeviceId) { @@ -198,7 +200,7 @@ export const RemotePage: React.FC = () => { setShowConfig(true) return } - let url = `file-transfer-panel?host=${encodeURIComponent(selectedConfig.serverHost)}&port=${selectedConfig.desktopPort}&device=${encodeURIComponent(selectedConfig.deviceName || '')}` + let url = `file-transfer-panel?host=${encodeURIComponent(selectedConfig.serverHost)}&port=${selectedConfig.fileTransferPort}&device=${encodeURIComponent(selectedConfig.deviceName || '')}` if (selectedConfig.password) { url += `&password=${encodeURIComponent(selectedConfig.password)}` } diff --git a/src/modules/remote/components/ConfigDialog.tsx b/src/modules/remote/components/ConfigDialog.tsx index 3d80e14..8246e2a 100644 --- a/src/modules/remote/components/ConfigDialog.tsx +++ b/src/modules/remote/components/ConfigDialog.tsx @@ -168,6 +168,19 @@ export const ConfigDialog: React.FC = ({ /> +
+ + handleChange('fileTransferPort', parseInt(e.target.value) || 3003)} + placeholder="默认: 3003" + className="w-full px-3 py-2 bg-gray-50 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-lg text-gray-900 dark:text-gray-100 placeholder-gray-400 dark:placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-900 dark:focus:ring-gray-100 focus:border-transparent transition-colors" + /> +
+