chore: remote forwarding integration
This commit is contained in:
@@ -65,4 +65,50 @@ contextBridge.exposeInMainWorld('api', {
|
||||
|
||||
// 离线消息: 启动后让主进程把 pending 重新尝试一遍
|
||||
flushPending: () => ipcRenderer.invoke('message:flushPending'),
|
||||
|
||||
// 远程: 终端
|
||||
terminalOpen: (peerId: string, opts?: { rows?: number; cols?: number; readOnly?: boolean }) =>
|
||||
ipcRenderer.invoke('terminal:open', { peerId, ...(opts || {}) }),
|
||||
terminalInput: (sessionId: string, dataBase64: string) =>
|
||||
ipcRenderer.invoke('terminal:input', { sessionId, dataBase64 }),
|
||||
terminalResize: (sessionId: string, rows: number, cols: number) =>
|
||||
ipcRenderer.invoke('terminal:resize', { sessionId, rows, cols }),
|
||||
terminalClose: (sessionId: string, reason?: string) =>
|
||||
ipcRenderer.invoke('terminal:close', { sessionId, reason }),
|
||||
terminalListSessions: () => ipcRenderer.invoke('terminal:listSessions'),
|
||||
|
||||
// 远程: 端口转发
|
||||
forwardOpen: (peerId: string, args: { direction?: 'self-out' | 'self-in'; listenPort: number; targetHost: string; targetPort: number; ttlSec?: number }) =>
|
||||
ipcRenderer.invoke('forward:open', { peerId, ...args }),
|
||||
forwardClose: (sessionId: string) => ipcRenderer.invoke('forward:close', { sessionId }),
|
||||
forwardListSessions: () => ipcRenderer.invoke('forward:listSessions'),
|
||||
|
||||
// 远程: USB / 串口 (3 种模式: serial 字节流 / usb libusb 字节桥 / usbip 真透传)
|
||||
usbList: (peerId: string) => ipcRenderer.invoke('usb:list', { peerId }),
|
||||
usbListLocal: () => ipcRenderer.invoke('usb:listLocal'),
|
||||
usbAttach: (peerId: string, busId: string, opts: { direction?: 'self-out' | 'self-in'; config: any }) =>
|
||||
ipcRenderer.invoke('usb:attach', { peerId, busId, ...(opts || {}) }),
|
||||
// 串口: 发送字节
|
||||
usbSerialSend: (sessionId: string, dataBase64: string) =>
|
||||
ipcRenderer.invoke('usb:serialSend', { sessionId, dataBase64 }),
|
||||
// USB: 控制传输
|
||||
usbCtrlOut: (sessionId: string, setup: any, dataBase64?: string) =>
|
||||
ipcRenderer.invoke('usb:ctrlOut', { sessionId, setup, dataBase64 }),
|
||||
usbCtrlIn: (sessionId: string, setup: any, length: number) =>
|
||||
ipcRenderer.invoke('usb:ctrlIn', { sessionId, setup, length }),
|
||||
// USB: 批量传输
|
||||
usbBulkOut: (sessionId: string, endpoint: number, dataBase64: string) =>
|
||||
ipcRenderer.invoke('usb:bulkOut', { sessionId, endpoint, dataBase64 }),
|
||||
usbBulkIn: (sessionId: string, endpoint: number, length: number, timeoutMs?: number) =>
|
||||
ipcRenderer.invoke('usb:bulkIn', { sessionId, endpoint, length, timeoutMs }),
|
||||
usbDetach: (sessionId: string) => ipcRenderer.invoke('usb:detach', { sessionId }),
|
||||
usbListSessions: () => ipcRenderer.invoke('usb:listSessions'),
|
||||
|
||||
// 授权 / 审计
|
||||
remoteApprovalList: () => ipcRenderer.invoke('remote:approval:list'),
|
||||
remoteApprovalReply: (requestId: string, ok: boolean, remember?: boolean) =>
|
||||
ipcRenderer.invoke('remote:approval:reply', { requestId, ok, remember }),
|
||||
auditList: (args?: { limit?: number; since?: number; sessionId?: string }) =>
|
||||
ipcRenderer.invoke('audit:list', args || {}),
|
||||
auditPrune: (olderThanMs?: number) => ipcRenderer.invoke('audit:prune', olderThanMs),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user