@caoruhua/open-claude-remote 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/backend/src/index.d.ts.map +1 -1
- package/dist/backend/src/index.js +23 -5
- package/dist/backend/src/index.js.map +1 -1
- package/dist/backend/src/utils/ip-monitor.d.ts +53 -8
- package/dist/backend/src/utils/ip-monitor.d.ts.map +1 -1
- package/dist/backend/src/utils/ip-monitor.js +137 -25
- package/dist/backend/src/utils/ip-monitor.js.map +1 -1
- package/dist/backend/src/utils/network.d.ts +25 -0
- package/dist/backend/src/utils/network.d.ts.map +1 -1
- package/dist/backend/src/utils/network.js +59 -0
- package/dist/backend/src/utils/network.js.map +1 -1
- package/dist/shared/constants.d.ts +1 -1
- package/dist/shared/constants.js +1 -1
- package/frontend-dist/assets/{index-wh4MHpoB.js → index-CvWXztaS.js} +40 -40
- package/frontend-dist/index.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ Scan the QR code shown in your terminal with your phone. The auth token is auto-
|
|
|
48
48
|
### Terminal Sync
|
|
49
49
|
- Real-time terminal output streamed to your phone
|
|
50
50
|
- Full ANSI color rendering via xterm.js
|
|
51
|
-
-
|
|
51
|
+
- 50K-line scrollback buffer, auto-restored on reconnect
|
|
52
52
|
- **Multi-network support** — displays all available IPs (WiFi, VPN, Ethernet) on startup
|
|
53
53
|
- LAN IP change notification with new connection URL
|
|
54
54
|
- Smart auto-scroll with a "scroll to bottom" floating button — respects your scroll position when browsing history
|
|
@@ -218,7 +218,7 @@ Config file: `~/.claude-remote/settings.json` (legacy `config.json` is auto-migr
|
|
|
218
218
|
| `claudeCwd` | string \| null | null | Claude working directory; `null` = current dir |
|
|
219
219
|
| `sessionTtlMs` | number | 86400000 | Session TTL in ms (default: 24h) |
|
|
220
220
|
| `authRateLimit` | number | 20 | Auth rate limit (per minute per IP) |
|
|
221
|
-
| `maxBufferLines` | number |
|
|
221
|
+
| `maxBufferLines` | number | 50000 | Output buffer max lines |
|
|
222
222
|
| `instanceName` | string \| null | (working dir name) | Instance name; defaults to working directory name if not set |
|
|
223
223
|
| `shortcuts` | array | see below | Quick-input buttons |
|
|
224
224
|
| `commands` | array | see below | Custom command buttons |
|
|
@@ -410,7 +410,7 @@ When creating instances from the web UI, you can select a custom settings file t
|
|
|
410
410
|
|
|
411
411
|
"sessionTtlMs": 86400000,
|
|
412
412
|
"authRateLimit": 20,
|
|
413
|
-
"maxBufferLines":
|
|
413
|
+
"maxBufferLines": 50000,
|
|
414
414
|
"instanceName": null,
|
|
415
415
|
|
|
416
416
|
"shortcuts": [
|
|
@@ -565,7 +565,7 @@ claude-remote
|
|
|
565
565
|
### 终端同步
|
|
566
566
|
- 实时终端输出推送到手机
|
|
567
567
|
- 通过 xterm.js 完整渲染 ANSI 颜色
|
|
568
|
-
-
|
|
568
|
+
- 5万行滚动缓冲区,重连时自动恢复
|
|
569
569
|
- **多网络支持** — 启动时显示所有可用 IP(WiFi、VPN、以太网)
|
|
570
570
|
- 局域网 IP 变更通知,附带新连接地址
|
|
571
571
|
- 智能自动滚动,配有"滚动到底部"悬浮按钮 — 浏览历史时尊重你的滚动位置
|
|
@@ -735,7 +735,7 @@ claude-remote update
|
|
|
735
735
|
| `claudeCwd` | string \| null | null | Claude 工作目录;`null` = 当前目录 |
|
|
736
736
|
| `sessionTtlMs` | number | 86400000 | 会话 TTL(毫秒,默认 24 小时) |
|
|
737
737
|
| `authRateLimit` | number | 20 | 认证速率限制(每分钟每 IP) |
|
|
738
|
-
| `maxBufferLines` | number |
|
|
738
|
+
| `maxBufferLines` | number | 50000 | 输出缓冲区最大行数 |
|
|
739
739
|
| `instanceName` | string \| null | 工作目录名 | 实例名称;未设置时默认为工作目录名 |
|
|
740
740
|
| `shortcuts` | array | 见下文 | 快捷输入按钮 |
|
|
741
741
|
| `commands` | array | 见下文 | 自定义命令按钮 |
|
|
@@ -927,7 +927,7 @@ claude-remote update
|
|
|
927
927
|
|
|
928
928
|
"sessionTtlMs": 86400000,
|
|
929
929
|
"authRateLimit": 20,
|
|
930
|
-
"maxBufferLines":
|
|
930
|
+
"maxBufferLines": 50000,
|
|
931
931
|
"instanceName": null,
|
|
932
932
|
|
|
933
933
|
"shortcuts": [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../backend/src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuD,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AA+BrG,wBAAsB,WAAW,CAAC,YAAY,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../backend/src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuD,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AA+BrG,wBAAsB,WAAW,CAAC,YAAY,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwVhF"}
|
|
@@ -19,7 +19,7 @@ import { logger, setInstanceContext } from './logger/logger.js';
|
|
|
19
19
|
import { markGracefulShutdown } from './daemon/daemon-guard.js';
|
|
20
20
|
import { getOrCreateSharedToken } from './registry/shared-token.js';
|
|
21
21
|
import { IpMonitor } from './utils/ip-monitor.js';
|
|
22
|
-
import { detectAllLocalIps, getAllNetworkInterfaces, isInCidrRange } from './utils/network.js';
|
|
22
|
+
import { detectAllLocalIps, getAllNetworkInterfaces, isInCidrRange, detectPreferredInterface } from './utils/network.js';
|
|
23
23
|
import { printBanner } from './utils/banner.js';
|
|
24
24
|
/**
|
|
25
25
|
* 根据网络接口信息推断接口类型。
|
|
@@ -62,6 +62,12 @@ export async function startServer(cliOverrides = {}) {
|
|
|
62
62
|
localIpSet.add(ip);
|
|
63
63
|
}
|
|
64
64
|
logger.info({ allowedHosts: [...localIpSet] }, 'CORS allowlist initialized');
|
|
65
|
+
// Detect preferred network interface for IP monitoring
|
|
66
|
+
const preferredInterface = detectPreferredInterface();
|
|
67
|
+
if (preferredInterface && preferredInterface.address !== config.displayIp) {
|
|
68
|
+
logger.info({ detectedIp: preferredInterface.address, configIp: config.displayIp, interface: preferredInterface.name }, 'Updating display IP to preferred interface');
|
|
69
|
+
config.displayIp = preferredInterface.address;
|
|
70
|
+
}
|
|
65
71
|
app.use(cors({
|
|
66
72
|
origin: (origin, callback) => {
|
|
67
73
|
if (!origin) {
|
|
@@ -166,8 +172,16 @@ export async function startServer(cliOverrides = {}) {
|
|
|
166
172
|
}
|
|
167
173
|
}
|
|
168
174
|
// 15. IP monitor
|
|
169
|
-
|
|
170
|
-
|
|
175
|
+
// Use the detected preferred interface, or fall back to config.displayIp
|
|
176
|
+
const effectiveInterface = preferredInterface || {
|
|
177
|
+
name: 'unknown',
|
|
178
|
+
address: config.displayIp,
|
|
179
|
+
isVpn: false,
|
|
180
|
+
isPrivate: true,
|
|
181
|
+
};
|
|
182
|
+
const ipMonitor = new IpMonitor((event) => {
|
|
183
|
+
const { newIp, oldIp, interfaceName } = event;
|
|
184
|
+
logger.info({ oldIp, newIp, interface: interfaceName }, 'IP change detected');
|
|
171
185
|
config.displayIp = newIp;
|
|
172
186
|
instanceManager.updateDisplayIp(newIp);
|
|
173
187
|
// Refresh CORS allowlist on NIC change
|
|
@@ -178,7 +192,7 @@ export async function startServer(cliOverrides = {}) {
|
|
|
178
192
|
localIpSet.add(ip);
|
|
179
193
|
}
|
|
180
194
|
logger.info({ allowedHosts: [...localIpSet] }, 'CORS allowlist refreshed');
|
|
181
|
-
}, 30000, 2,
|
|
195
|
+
}, 30000, 2,
|
|
182
196
|
// Network interface change callback
|
|
183
197
|
(interfaces, preferredIp) => {
|
|
184
198
|
// Broadcast network change to all WebSocket clients
|
|
@@ -197,8 +211,12 @@ export async function startServer(cliOverrides = {}) {
|
|
|
197
211
|
};
|
|
198
212
|
instanceManager.broadcastAll(networkMsg);
|
|
199
213
|
logger.debug({ interfaceCount: interfaces.length }, 'Network change broadcasted');
|
|
214
|
+
},
|
|
215
|
+
// Interface switch callback
|
|
216
|
+
(event) => {
|
|
217
|
+
logger.info({ oldInterface: event.previousInterface.name, newInterface: event.newInterface.name }, 'Network interface switched');
|
|
200
218
|
});
|
|
201
|
-
ipMonitor.start(
|
|
219
|
+
ipMonitor.start(effectiveInterface);
|
|
202
220
|
// 16. Unified graceful shutdown
|
|
203
221
|
let shuttingDown = false;
|
|
204
222
|
const shutdown = (exitCode = 0) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../backend/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../backend/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
import { type NetworkInterface } from './network.js';
|
|
2
|
-
|
|
1
|
+
import { type NetworkInterface, type PreferredInterface } from './network.js';
|
|
2
|
+
/**
|
|
3
|
+
* IP 变化回调,包含网卡信息。
|
|
4
|
+
*/
|
|
5
|
+
export interface IpChangeEvent {
|
|
6
|
+
newIp: string;
|
|
7
|
+
oldIp: string;
|
|
8
|
+
interfaceName: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 网卡切换事件。
|
|
12
|
+
*/
|
|
13
|
+
export interface InterfaceSwitchEvent {
|
|
14
|
+
newInterface: PreferredInterface;
|
|
15
|
+
previousInterface: PreferredInterface;
|
|
16
|
+
}
|
|
17
|
+
export type IpChangeCallback = (event: IpChangeEvent) => void;
|
|
3
18
|
export type NetworkChangeCallback = (interfaces: NetworkInterface[], preferredIp: string) => void;
|
|
4
|
-
export type GetIpFunction = () => string | null;
|
|
5
19
|
/**
|
|
6
20
|
* IP 变化监控器。
|
|
7
21
|
*
|
|
@@ -10,43 +24,74 @@ export type GetIpFunction = () => string | null;
|
|
|
10
24
|
* - 连续 stabilityThreshold 次检测到相同新 IP 才触发回调
|
|
11
25
|
* - 避免短暂网络波动导致误报
|
|
12
26
|
*
|
|
13
|
-
*
|
|
27
|
+
* 绑定特定网卡监控:
|
|
28
|
+
* - 启动时记录当前首选网卡
|
|
29
|
+
* - 只监控该网卡的 IP 变化
|
|
30
|
+
* - 当前网卡断开时自动切换到备用网卡
|
|
31
|
+
* - 高优先级网卡恢复时(如 VPN)自动切回
|
|
14
32
|
*/
|
|
15
33
|
export declare class IpMonitor {
|
|
16
34
|
private readonly onChange;
|
|
17
35
|
private readonly intervalMs;
|
|
18
36
|
private readonly stabilityThreshold;
|
|
19
|
-
private readonly getIp;
|
|
20
37
|
private readonly onNetworkChange?;
|
|
38
|
+
private readonly onInterfaceSwitch?;
|
|
21
39
|
private intervalId;
|
|
22
40
|
private pendingIp;
|
|
23
41
|
private stabilityCount;
|
|
24
42
|
private _currentIp;
|
|
43
|
+
private _currentInterfaceName;
|
|
44
|
+
private _currentInterfaceIsVpn;
|
|
45
|
+
private _currentInterfaceIsPrivate;
|
|
25
46
|
private _currentInterfaces;
|
|
26
47
|
private pendingInterfaces;
|
|
27
48
|
private interfaceStabilityCount;
|
|
28
|
-
|
|
49
|
+
private disconnectedCount;
|
|
50
|
+
private readonly disconnectThreshold;
|
|
51
|
+
private _disconnectHandled;
|
|
52
|
+
constructor(onChange: IpChangeCallback, intervalMs?: number, stabilityThreshold?: number, onNetworkChange?: NetworkChangeCallback | undefined, onInterfaceSwitch?: ((event: InterfaceSwitchEvent) => void) | undefined);
|
|
29
53
|
/**
|
|
30
54
|
* 启动 IP 监控。
|
|
31
|
-
* @param
|
|
55
|
+
* @param initialInterface 初始网卡信息(名称和 IP)
|
|
32
56
|
*/
|
|
33
|
-
start(
|
|
57
|
+
start(initialInterface: PreferredInterface): void;
|
|
34
58
|
/**
|
|
35
59
|
* 停止 IP 监控。
|
|
36
60
|
*/
|
|
37
61
|
stop(): void;
|
|
38
62
|
/**
|
|
39
63
|
* 检测 IP 变化。
|
|
64
|
+
* 只监控当前绑定的网卡,当前网卡断开时尝试切换。
|
|
40
65
|
*/
|
|
41
66
|
private check;
|
|
67
|
+
/**
|
|
68
|
+
* 处理当前网卡断开的情况:切换到其他可用网卡。
|
|
69
|
+
* 不直接触发 onChange,让 check() 通过稳定性阈值处理 IP 变化通知。
|
|
70
|
+
*/
|
|
71
|
+
private handleInterfaceDisconnect;
|
|
72
|
+
/**
|
|
73
|
+
* 切换监控目标到新网卡。
|
|
74
|
+
* 不直接触发 onChange — 让 check() 通过稳定性阈值处理 IP 变化。
|
|
75
|
+
*/
|
|
76
|
+
private switchInterface;
|
|
42
77
|
/**
|
|
43
78
|
* 检测网络接口列表变化。
|
|
79
|
+
* 同时检查是否有更高优先级的网卡恢复(如 VPN 重连)。
|
|
44
80
|
*/
|
|
45
81
|
private checkInterfaces;
|
|
82
|
+
/**
|
|
83
|
+
* 检查是否有更高优先级的网卡可用(VPN 恢复场景)。
|
|
84
|
+
* 仅在优先级更高时切换,避免在同级别间反复切换。
|
|
85
|
+
*/
|
|
86
|
+
private checkPreferredInterface;
|
|
46
87
|
/**
|
|
47
88
|
* 获取当前 IP。
|
|
48
89
|
*/
|
|
49
90
|
get currentIp(): string;
|
|
91
|
+
/**
|
|
92
|
+
* 获取当前监控的网卡名称。
|
|
93
|
+
*/
|
|
94
|
+
get currentInterfaceName(): string;
|
|
50
95
|
/**
|
|
51
96
|
* 获取当前所有网络接口。
|
|
52
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip-monitor.d.ts","sourceRoot":"","sources":["../../../../backend/src/utils/ip-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ip-monitor.d.ts","sourceRoot":"","sources":["../../../../backend/src/utils/ip-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAGtB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AAYlG;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAS;IAgBlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAnBrC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,qBAAqB,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,0BAA0B,CAAkB;IACpD,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IACzC,OAAO,CAAC,kBAAkB,CAAS;gBAGhB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,SAAQ,EAClB,kBAAkB,SAAI,EACtB,eAAe,CAAC,EAAE,qBAAqB,YAAA,EACvC,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,aAAA;IAG5E;;;OAGG;IACH,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,IAAI;IAoCjD;;OAEG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;IACH,OAAO,CAAC,KAAK;IAmFb;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAyDvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAE1C;CACF"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAllNetworkInterfaces, getInterfaceIp, detectSecondaryInterface, detectPreferredInterface, } from './network.js';
|
|
2
2
|
import { logger } from '../logger/logger.js';
|
|
3
|
-
/**
|
|
4
|
-
* 默认的 IP 检测函数:优先使用 LAN IP,其次使用非回环 IP
|
|
5
|
-
*/
|
|
6
|
-
function defaultGetIp() {
|
|
7
|
-
return detectLanIp() ?? detectNonLoopbackIp();
|
|
8
|
-
}
|
|
9
3
|
/**
|
|
10
4
|
* 序列化接口列表,用于比对变化
|
|
11
5
|
*/
|
|
@@ -23,37 +17,52 @@ function serializeInterfaces(interfaces) {
|
|
|
23
17
|
* - 连续 stabilityThreshold 次检测到相同新 IP 才触发回调
|
|
24
18
|
* - 避免短暂网络波动导致误报
|
|
25
19
|
*
|
|
26
|
-
*
|
|
20
|
+
* 绑定特定网卡监控:
|
|
21
|
+
* - 启动时记录当前首选网卡
|
|
22
|
+
* - 只监控该网卡的 IP 变化
|
|
23
|
+
* - 当前网卡断开时自动切换到备用网卡
|
|
24
|
+
* - 高优先级网卡恢复时(如 VPN)自动切回
|
|
27
25
|
*/
|
|
28
26
|
export class IpMonitor {
|
|
29
27
|
onChange;
|
|
30
28
|
intervalMs;
|
|
31
29
|
stabilityThreshold;
|
|
32
|
-
getIp;
|
|
33
30
|
onNetworkChange;
|
|
31
|
+
onInterfaceSwitch;
|
|
34
32
|
intervalId = null;
|
|
35
33
|
pendingIp = null;
|
|
36
34
|
stabilityCount = 0;
|
|
37
35
|
_currentIp = '';
|
|
36
|
+
_currentInterfaceName = '';
|
|
37
|
+
_currentInterfaceIsVpn = false;
|
|
38
|
+
_currentInterfaceIsPrivate = false;
|
|
38
39
|
_currentInterfaces = [];
|
|
39
40
|
pendingInterfaces = null;
|
|
40
41
|
interfaceStabilityCount = 0;
|
|
41
|
-
|
|
42
|
+
disconnectedCount = 0;
|
|
43
|
+
disconnectThreshold = 3; // 连续 3 次检测不到认为断开
|
|
44
|
+
_disconnectHandled = false;
|
|
45
|
+
constructor(onChange, intervalMs = 30000, stabilityThreshold = 2, onNetworkChange, onInterfaceSwitch) {
|
|
42
46
|
this.onChange = onChange;
|
|
43
47
|
this.intervalMs = intervalMs;
|
|
44
48
|
this.stabilityThreshold = stabilityThreshold;
|
|
45
|
-
this.getIp = getIp;
|
|
46
49
|
this.onNetworkChange = onNetworkChange;
|
|
50
|
+
this.onInterfaceSwitch = onInterfaceSwitch;
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* 启动 IP 监控。
|
|
50
|
-
* @param
|
|
54
|
+
* @param initialInterface 初始网卡信息(名称和 IP)
|
|
51
55
|
*/
|
|
52
|
-
start(
|
|
56
|
+
start(initialInterface) {
|
|
53
57
|
this.stop();
|
|
54
|
-
this._currentIp =
|
|
58
|
+
this._currentIp = initialInterface.address;
|
|
59
|
+
this._currentInterfaceName = initialInterface.name;
|
|
60
|
+
this._currentInterfaceIsVpn = initialInterface.isVpn;
|
|
61
|
+
this._currentInterfaceIsPrivate = initialInterface.isPrivate;
|
|
55
62
|
this.pendingIp = null;
|
|
56
63
|
this.stabilityCount = 0;
|
|
64
|
+
this.disconnectedCount = 0;
|
|
65
|
+
this._disconnectHandled = false;
|
|
57
66
|
this._currentInterfaces = getAllNetworkInterfaces();
|
|
58
67
|
this.pendingInterfaces = null;
|
|
59
68
|
this.interfaceStabilityCount = 0;
|
|
@@ -65,7 +74,13 @@ export class IpMonitor {
|
|
|
65
74
|
if (this.intervalId.unref) {
|
|
66
75
|
this.intervalId.unref();
|
|
67
76
|
}
|
|
68
|
-
logger.info({
|
|
77
|
+
logger.info({
|
|
78
|
+
ip: initialInterface.address,
|
|
79
|
+
interface: initialInterface.name,
|
|
80
|
+
isVpn: initialInterface.isVpn,
|
|
81
|
+
isPrivate: initialInterface.isPrivate,
|
|
82
|
+
intervalMs: this.intervalMs,
|
|
83
|
+
}, 'IP monitor started');
|
|
69
84
|
}
|
|
70
85
|
/**
|
|
71
86
|
* 停止 IP 监控。
|
|
@@ -77,22 +92,46 @@ export class IpMonitor {
|
|
|
77
92
|
}
|
|
78
93
|
this.pendingIp = null;
|
|
79
94
|
this.stabilityCount = 0;
|
|
95
|
+
this.disconnectedCount = 0;
|
|
96
|
+
this._disconnectHandled = false;
|
|
80
97
|
this.pendingInterfaces = null;
|
|
81
98
|
this.interfaceStabilityCount = 0;
|
|
82
99
|
}
|
|
83
100
|
/**
|
|
84
101
|
* 检测 IP 变化。
|
|
102
|
+
* 只监控当前绑定的网卡,当前网卡断开时尝试切换。
|
|
85
103
|
*/
|
|
86
104
|
check() {
|
|
87
|
-
|
|
88
|
-
|
|
105
|
+
// 只检查当前绑定的网卡
|
|
106
|
+
const newIp = getInterfaceIp(this._currentInterfaceName);
|
|
89
107
|
if (!newIp) {
|
|
108
|
+
// 当前网卡可能已断开,增加断开计数
|
|
109
|
+
this.disconnectedCount++;
|
|
110
|
+
logger.debug({
|
|
111
|
+
interface: this._currentInterfaceName,
|
|
112
|
+
disconnectCount: this.disconnectedCount,
|
|
113
|
+
threshold: this.disconnectThreshold,
|
|
114
|
+
}, 'Current interface IP not detected, counting disconnect');
|
|
115
|
+
// 达到断开阈值且未处理过,尝试切换到其他网卡
|
|
116
|
+
if (this.disconnectedCount >= this.disconnectThreshold && !this._disconnectHandled) {
|
|
117
|
+
this._disconnectHandled = true;
|
|
118
|
+
this.handleInterfaceDisconnect();
|
|
119
|
+
}
|
|
90
120
|
return;
|
|
91
121
|
}
|
|
122
|
+
// 网卡恢复,重置断开计数
|
|
123
|
+
if (this.disconnectedCount > 0) {
|
|
124
|
+
logger.debug({ interface: this._currentInterfaceName, ip: newIp }, 'Interface recovered');
|
|
125
|
+
this.disconnectedCount = 0;
|
|
126
|
+
this._disconnectHandled = false;
|
|
127
|
+
}
|
|
92
128
|
// IP 未变化,重置待确认状态
|
|
93
129
|
if (newIp === this._currentIp) {
|
|
94
130
|
if (this.pendingIp !== null) {
|
|
95
|
-
logger.debug(
|
|
131
|
+
logger.debug({
|
|
132
|
+
ip: newIp,
|
|
133
|
+
interface: this._currentInterfaceName,
|
|
134
|
+
}, 'IP stabilized to original, resetting monitor state');
|
|
96
135
|
}
|
|
97
136
|
this.pendingIp = null;
|
|
98
137
|
this.stabilityCount = 0;
|
|
@@ -104,6 +143,7 @@ export class IpMonitor {
|
|
|
104
143
|
this.stabilityCount++;
|
|
105
144
|
logger.debug({
|
|
106
145
|
pendingIp: this.pendingIp,
|
|
146
|
+
interface: this._currentInterfaceName,
|
|
107
147
|
stabilityCount: this.stabilityCount,
|
|
108
148
|
threshold: this.stabilityThreshold,
|
|
109
149
|
}, 'IP change detected, counting stability');
|
|
@@ -114,6 +154,7 @@ export class IpMonitor {
|
|
|
114
154
|
this.stabilityCount = 1;
|
|
115
155
|
logger.debug({
|
|
116
156
|
newIp,
|
|
157
|
+
interface: this._currentInterfaceName,
|
|
117
158
|
}, 'New IP detected, waiting for stability');
|
|
118
159
|
}
|
|
119
160
|
// 达到稳定性阈值,触发回调
|
|
@@ -122,17 +163,57 @@ export class IpMonitor {
|
|
|
122
163
|
this._currentIp = newIp;
|
|
123
164
|
this.pendingIp = null;
|
|
124
165
|
this.stabilityCount = 0;
|
|
125
|
-
logger.info({ oldIp, newIp }, 'IP change confirmed, triggering callback');
|
|
126
|
-
this.onChange(
|
|
166
|
+
logger.info({ oldIp, newIp, interface: this._currentInterfaceName }, 'IP change confirmed, triggering callback');
|
|
167
|
+
this.onChange({
|
|
168
|
+
newIp,
|
|
169
|
+
oldIp,
|
|
170
|
+
interfaceName: this._currentInterfaceName,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 处理当前网卡断开的情况:切换到其他可用网卡。
|
|
176
|
+
* 不直接触发 onChange,让 check() 通过稳定性阈值处理 IP 变化通知。
|
|
177
|
+
*/
|
|
178
|
+
handleInterfaceDisconnect() {
|
|
179
|
+
logger.warn({ interface: this._currentInterfaceName, previousIp: this._currentIp }, 'Current interface disconnected, searching for alternative');
|
|
180
|
+
const alternative = detectSecondaryInterface(this._currentInterfaceName);
|
|
181
|
+
if (alternative) {
|
|
182
|
+
this.switchInterface(alternative);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
logger.warn({ interface: this._currentInterfaceName }, 'No alternative network interfaces available, waiting for recovery');
|
|
186
|
+
// _disconnectHandled = true 阻止重复触发,等 checkInterfaces 检测到新接口后重置
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* 切换监控目标到新网卡。
|
|
191
|
+
* 不直接触发 onChange — 让 check() 通过稳定性阈值处理 IP 变化。
|
|
192
|
+
*/
|
|
193
|
+
switchInterface(newInterface) {
|
|
194
|
+
const previousInterface = {
|
|
195
|
+
name: this._currentInterfaceName,
|
|
196
|
+
address: this._currentIp,
|
|
197
|
+
isVpn: this._currentInterfaceIsVpn,
|
|
198
|
+
isPrivate: this._currentInterfaceIsPrivate,
|
|
199
|
+
};
|
|
200
|
+
this._currentInterfaceName = newInterface.name;
|
|
201
|
+
this._currentInterfaceIsVpn = newInterface.isVpn;
|
|
202
|
+
this._currentInterfaceIsPrivate = newInterface.isPrivate;
|
|
203
|
+
this.disconnectedCount = 0;
|
|
204
|
+
this._disconnectHandled = false;
|
|
205
|
+
this.pendingIp = null;
|
|
206
|
+
this.stabilityCount = 0;
|
|
207
|
+
logger.info({ oldInterface: previousInterface.name, newInterface: newInterface.name, newIp: newInterface.address }, 'Switched monitoring to new interface');
|
|
208
|
+
if (this.onInterfaceSwitch) {
|
|
209
|
+
this.onInterfaceSwitch({ newInterface, previousInterface });
|
|
127
210
|
}
|
|
128
211
|
}
|
|
129
212
|
/**
|
|
130
213
|
* 检测网络接口列表变化。
|
|
214
|
+
* 同时检查是否有更高优先级的网卡恢复(如 VPN 重连)。
|
|
131
215
|
*/
|
|
132
216
|
checkInterfaces() {
|
|
133
|
-
// 如果没有网络变化回调,跳过此检查
|
|
134
|
-
if (!this.onNetworkChange)
|
|
135
|
-
return;
|
|
136
217
|
const newInterfaces = getAllNetworkInterfaces();
|
|
137
218
|
const currentSerialized = serializeInterfaces(this._currentInterfaces);
|
|
138
219
|
const newSerialized = serializeInterfaces(newInterfaces);
|
|
@@ -169,16 +250,47 @@ export class IpMonitor {
|
|
|
169
250
|
this.interfaceStabilityCount = 0;
|
|
170
251
|
logger.info({
|
|
171
252
|
interfaces: newInterfaces.map(i => `${i.name}:${i.address}`),
|
|
172
|
-
}, 'Network interface change confirmed
|
|
173
|
-
|
|
253
|
+
}, 'Network interface change confirmed');
|
|
254
|
+
// 检查是否有更高优先级的网卡恢复(如 VPN 重连)
|
|
255
|
+
this.checkPreferredInterface();
|
|
256
|
+
// 重置断开处理标记,新接口可能提供替代方案
|
|
257
|
+
if (this._disconnectHandled) {
|
|
258
|
+
this._disconnectHandled = false;
|
|
259
|
+
}
|
|
260
|
+
// 通知外部
|
|
261
|
+
if (this.onNetworkChange) {
|
|
262
|
+
this.onNetworkChange(newInterfaces, this._currentIp);
|
|
263
|
+
}
|
|
174
264
|
}
|
|
175
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* 检查是否有更高优先级的网卡可用(VPN 恢复场景)。
|
|
268
|
+
* 仅在优先级更高时切换,避免在同级别间反复切换。
|
|
269
|
+
*/
|
|
270
|
+
checkPreferredInterface() {
|
|
271
|
+
const preferred = detectPreferredInterface();
|
|
272
|
+
if (!preferred || preferred.name === this._currentInterfaceName)
|
|
273
|
+
return;
|
|
274
|
+
// 仅当新首选网卡优先级更高时才切换
|
|
275
|
+
const shouldSwitch = (preferred.isVpn && !this._currentInterfaceIsVpn) ||
|
|
276
|
+
(preferred.isPrivate && !this._currentInterfaceIsPrivate && !this._currentInterfaceIsVpn);
|
|
277
|
+
if (!shouldSwitch)
|
|
278
|
+
return;
|
|
279
|
+
logger.info({ currentInterface: this._currentInterfaceName, preferredInterface: preferred.name }, 'Higher-priority interface detected, switching');
|
|
280
|
+
this.switchInterface(preferred);
|
|
281
|
+
}
|
|
176
282
|
/**
|
|
177
283
|
* 获取当前 IP。
|
|
178
284
|
*/
|
|
179
285
|
get currentIp() {
|
|
180
286
|
return this._currentIp;
|
|
181
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* 获取当前监控的网卡名称。
|
|
290
|
+
*/
|
|
291
|
+
get currentInterfaceName() {
|
|
292
|
+
return this._currentInterfaceName;
|
|
293
|
+
}
|
|
182
294
|
/**
|
|
183
295
|
* 获取当前所有网络接口。
|
|
184
296
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip-monitor.js","sourceRoot":"","sources":["../../../../backend/src/utils/ip-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ip-monitor.js","sourceRoot":"","sources":["../../../../backend/src/utils/ip-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,4 +58,29 @@ export declare function detectAllLocalIps(): string[];
|
|
|
58
58
|
* Useful for environments with non-RFC1918 internal networks (e.g., corporate networks).
|
|
59
59
|
*/
|
|
60
60
|
export declare function detectNonLoopbackIp(): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Result of detecting the preferred network interface.
|
|
63
|
+
*/
|
|
64
|
+
export interface PreferredInterface {
|
|
65
|
+
name: string;
|
|
66
|
+
address: string;
|
|
67
|
+
isVpn: boolean;
|
|
68
|
+
isPrivate: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Detect the preferred network interface for monitoring.
|
|
72
|
+
* Priority: VPN > Private LAN > Public
|
|
73
|
+
* Returns null if no suitable interface found.
|
|
74
|
+
*/
|
|
75
|
+
export declare function detectPreferredInterface(): PreferredInterface | null;
|
|
76
|
+
/**
|
|
77
|
+
* Detect a secondary interface when the primary one is disconnected.
|
|
78
|
+
* Excludes the given interface name from consideration.
|
|
79
|
+
*/
|
|
80
|
+
export declare function detectSecondaryInterface(excludeInterfaceName: string): PreferredInterface | null;
|
|
81
|
+
/**
|
|
82
|
+
* Get the IP address of a specific network interface.
|
|
83
|
+
* Returns null if interface not found or has no IPv4 address.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getInterfaceIp(interfaceName: string): string | null;
|
|
61
86
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../backend/src/utils/network.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAsBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAS/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASpD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,OAAO,CAc3F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,EAAE,CAmC5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAWlD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAY3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAW5C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAYnD"}
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../backend/src/utils/network.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAsBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAS/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASpD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,OAAO,CAc3F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,EAAE,CAmC5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAWlD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAY3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAW5C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAYnD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,GAAG,IAAI,CAsBpE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAwBhG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAenE"}
|