@caoruhua/open-claude-remote 1.0.4 → 1.0.6

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 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
- - 10K-line scrollback buffer, auto-restored on reconnect
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
@@ -82,8 +82,12 @@ Example: When connected to both WiFi (192.168.x.x) and company VPN (30.x.x.x), b
82
82
  - **Long-press to hide** — press and hold the button to hide it (refresh to restore, or use Settings > Display)
83
83
  - **One-tap preview** — select a file to navigate to the Markdown viewer (browser back button returns to terminal)
84
84
  - **GFM rendering** — supports GitHub Flavored Markdown (tables, task lists, strikethrough)
85
+ - **HTML rendering** — supports inline HTML tags (`<span style="color: red">`, `<sub>`, `<sup>`, `<mark>`, etc.)
86
+ - **Image enhancements** — lazy loading, click to preview (pinch zoom, double-tap to scale, swipe to close)
87
+ - **Mobile-optimized** — 16px font size, 1.75 line height, 44px touch targets, horizontal scroll for code blocks
85
88
  - **Code highlighting** — syntax highlighting for code blocks using highlight.js
86
89
  - **Table of contents** — mobile: bottom drawer; desktop: right sidebar
90
+ - **Reduced motion support** — respects `prefers-reduced-motion` accessibility setting
87
91
  - **Security** — only files within allowed workspace directories can be viewed
88
92
 
89
93
  ### Multi-Instance
@@ -218,7 +222,7 @@ Config file: `~/.claude-remote/settings.json` (legacy `config.json` is auto-migr
218
222
  | `claudeCwd` | string \| null | null | Claude working directory; `null` = current dir |
219
223
  | `sessionTtlMs` | number | 86400000 | Session TTL in ms (default: 24h) |
220
224
  | `authRateLimit` | number | 20 | Auth rate limit (per minute per IP) |
221
- | `maxBufferLines` | number | 10000 | Output buffer max lines |
225
+ | `maxBufferLines` | number | 50000 | Output buffer max lines |
222
226
  | `instanceName` | string \| null | (working dir name) | Instance name; defaults to working directory name if not set |
223
227
  | `shortcuts` | array | see below | Quick-input buttons |
224
228
  | `commands` | array | see below | Custom command buttons |
@@ -410,7 +414,7 @@ When creating instances from the web UI, you can select a custom settings file t
410
414
 
411
415
  "sessionTtlMs": 86400000,
412
416
  "authRateLimit": 20,
413
- "maxBufferLines": 10000,
417
+ "maxBufferLines": 50000,
414
418
  "instanceName": null,
415
419
 
416
420
  "shortcuts": [
@@ -565,7 +569,7 @@ claude-remote
565
569
  ### 终端同步
566
570
  - 实时终端输出推送到手机
567
571
  - 通过 xterm.js 完整渲染 ANSI 颜色
568
- - 1万行滚动缓冲区,重连时自动恢复
572
+ - 5万行滚动缓冲区,重连时自动恢复
569
573
  - **多网络支持** — 启动时显示所有可用 IP(WiFi、VPN、以太网)
570
574
  - 局域网 IP 变更通知,附带新连接地址
571
575
  - 智能自动滚动,配有"滚动到底部"悬浮按钮 — 浏览历史时尊重你的滚动位置
@@ -599,8 +603,12 @@ claude-remote
599
603
  - **长按隐藏** — 长按按钮可隐藏(刷新页面恢复,或通过设置>显示重新开启)
600
604
  - **一键预览** — 选择文件后导航到 Markdown 查看器(浏览器返回按钮回到终端)
601
605
  - **GFM 渲染** — 支持 GitHub 风格 Markdown(表格、任务列表、删除线)
606
+ - **HTML 渲染** — 支持内联 HTML 标签(`<span style="color: red">`、`<sub>`、`<sup>`、`<mark>` 等)
607
+ - **图片增强** — 懒加载、点击预览(捏合缩放、双击放大、滑动关闭)
608
+ - **移动端优化** — 16px 字体、1.75 行高、44px 触摸目标、代码块横向滚动
602
609
  - **代码高亮** — 使用 highlight.js 为代码块提供语法高亮
603
610
  - **目录导航** — 移动端:底部抽屉;桌面端:右侧边栏
611
+ - **减少动画支持** — 尊重 `prefers-reduced-motion` 无障碍设置
604
612
  - **安全限制** — 仅允许查看工作目录白名单内的文件
605
613
 
606
614
  ### 多实例支持
@@ -735,7 +743,7 @@ claude-remote update
735
743
  | `claudeCwd` | string \| null | null | Claude 工作目录;`null` = 当前目录 |
736
744
  | `sessionTtlMs` | number | 86400000 | 会话 TTL(毫秒,默认 24 小时) |
737
745
  | `authRateLimit` | number | 20 | 认证速率限制(每分钟每 IP) |
738
- | `maxBufferLines` | number | 10000 | 输出缓冲区最大行数 |
746
+ | `maxBufferLines` | number | 50000 | 输出缓冲区最大行数 |
739
747
  | `instanceName` | string \| null | 工作目录名 | 实例名称;未设置时默认为工作目录名 |
740
748
  | `shortcuts` | array | 见下文 | 快捷输入按钮 |
741
749
  | `commands` | array | 见下文 | 自定义命令按钮 |
@@ -927,7 +935,7 @@ claude-remote update
927
935
 
928
936
  "sessionTtlMs": 86400000,
929
937
  "authRateLimit": 20,
930
- "maxBufferLines": 10000,
938
+ "maxBufferLines": 50000,
931
939
  "instanceName": null,
932
940
 
933
941
  "shortcuts": [
@@ -1 +1 @@
1
- {"version":3,"file":"file-routes.d.ts","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA+CvE,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAoMR"}
1
+ {"version":3,"file":"file-routes.d.ts","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkFvE,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAuTR"}
@@ -1,5 +1,6 @@
1
1
  import { Router } from 'express';
2
2
  import { readFile, stat, readdir } from 'node:fs/promises';
3
+ import { createReadStream } from 'node:fs';
3
4
  import { extname, join, relative, resolve, normalize } from 'node:path';
4
5
  import { loadUserConfig } from '../config.js';
5
6
  import { logger } from '../logger/logger.js';
@@ -7,6 +8,19 @@ import { logger } from '../logger/logger.js';
7
8
  const MAX_FILE_SIZE = 5 * 1024 * 1024;
8
9
  /** 允许的文件扩展名 */
9
10
  const ALLOWED_EXTENSIONS = ['.md', '.markdown'];
11
+ /** 允许的图片扩展名 */
12
+ const ALLOWED_IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.ico', '.bmp'];
13
+ /** 图片 MIME 类型映射 */
14
+ const IMAGE_MIME_TYPES = {
15
+ '.png': 'image/png',
16
+ '.jpg': 'image/jpeg',
17
+ '.jpeg': 'image/jpeg',
18
+ '.gif': 'image/gif',
19
+ '.webp': 'image/webp',
20
+ '.svg': 'image/svg+xml',
21
+ '.ico': 'image/x-icon',
22
+ '.bmp': 'image/bmp',
23
+ };
10
24
  /** 最大扫描文件数限制 */
11
25
  const MAX_FILES = 1000;
12
26
  /** 跳过的目录 */
@@ -24,6 +38,24 @@ function isPathAllowed(path, allowedCwds) {
24
38
  return normalizedPath.startsWith(normalizedCwd + '/') || normalizedPath === normalizedCwd;
25
39
  });
26
40
  }
41
+ /**
42
+ * 完全解码 URI 字符串(处理多层编码)
43
+ * 前端可能传来多层编码的路径(如 %25E4%25BA%25BF → %E4%BA%BF → 亿)
44
+ */
45
+ function fullyDecodeURI(str) {
46
+ let result = str;
47
+ try {
48
+ let decoded = decodeURIComponent(str);
49
+ while (decoded !== result) {
50
+ result = decoded;
51
+ decoded = decodeURIComponent(decoded);
52
+ }
53
+ }
54
+ catch {
55
+ // 解码失败时返回当前结果
56
+ }
57
+ return result;
58
+ }
27
59
  /**
28
60
  * 规范化路径:将相对路径转换为绝对路径
29
61
  * @param rawPath - 原始路径(绝对路径或相对路径)
@@ -32,8 +64,10 @@ function isPathAllowed(path, allowedCwds) {
32
64
  */
33
65
  function normalizePath(rawPath, baseDir) {
34
66
  try {
67
+ // 完全解码路径(处理多层 URL 编码)
68
+ const decodedPath = fullyDecodeURI(rawPath);
35
69
  // 处理相对路径
36
- const absolutePath = rawPath.startsWith('/') ? rawPath : resolve(baseDir, rawPath);
70
+ const absolutePath = decodedPath.startsWith('/') ? decodedPath : resolve(baseDir, decodedPath);
37
71
  // 规范化路径,移除 ./ 和 ../
38
72
  return normalize(absolutePath);
39
73
  }
@@ -283,6 +317,108 @@ export function createFileRoutes(authModule, instanceManager) {
283
317
  res.status(500).json({ error: 'Internal server error' });
284
318
  }
285
319
  });
320
+ /**
321
+ * GET /api/file/asset - 获取图片等静态资源文件
322
+ * Query params:
323
+ * - instanceId: 可选,指定实例 ID,用于解析相对路径
324
+ * - path: 文件路径(绝对路径或相对于 cwd 的相对路径)
325
+ */
326
+ router.get('/file/asset', authModule.requireAuth, async (req, res) => {
327
+ try {
328
+ const rawPath = req.query.path;
329
+ const instanceId = req.query.instanceId;
330
+ if (!rawPath) {
331
+ res.status(400).json({ error: 'Missing path parameter' });
332
+ return;
333
+ }
334
+ // 获取允许的目录白名单
335
+ const allowedCwds = getAllowedCwds(instanceManager);
336
+ // 如果白名单为空,拒绝所有请求
337
+ if (allowedCwds.length === 0) {
338
+ logger.warn({ path: rawPath }, 'Asset request rejected: no allowed directories');
339
+ res.status(403).json({
340
+ error: 'No allowed directories configured. Start an instance first.',
341
+ });
342
+ return;
343
+ }
344
+ // 确定基准目录:优先级 instanceId > 默认第一个允许目录
345
+ let baseDir;
346
+ if (instanceId) {
347
+ const instance = instanceManager.getInstance(instanceId);
348
+ if (!instance) {
349
+ logger.warn({ instanceId }, 'Asset request rejected: instance not found');
350
+ res.status(404).json({ error: 'Instance not found' });
351
+ return;
352
+ }
353
+ baseDir = instance.cwd;
354
+ }
355
+ else {
356
+ baseDir = allowedCwds[0];
357
+ }
358
+ const absolutePath = normalizePath(rawPath, baseDir);
359
+ if (!absolutePath) {
360
+ res.status(400).json({ error: 'Invalid path format' });
361
+ return;
362
+ }
363
+ // 安全检查:路径必须在白名单范围内
364
+ if (!isPathAllowed(absolutePath, allowedCwds)) {
365
+ logger.warn({ path: absolutePath, allowedCwds }, 'Asset request rejected: path not allowed');
366
+ res.status(403).json({
367
+ error: 'Access denied. File is outside allowed directories.',
368
+ });
369
+ return;
370
+ }
371
+ // 扩展名检查(仅允许图片格式)
372
+ const ext = extname(absolutePath).toLowerCase();
373
+ if (!ALLOWED_IMAGE_EXTENSIONS.includes(ext)) {
374
+ res.status(400).json({
375
+ error: `Only image files (${ALLOWED_IMAGE_EXTENSIONS.join(', ')}) are allowed`,
376
+ });
377
+ return;
378
+ }
379
+ // 检查文件是否存在并获取大小
380
+ let fileStat;
381
+ try {
382
+ fileStat = await stat(absolutePath);
383
+ }
384
+ catch {
385
+ logger.debug({ path: absolutePath }, 'Asset file not found');
386
+ res.status(404).json({ error: 'File not found' });
387
+ return;
388
+ }
389
+ // 检查是否为文件
390
+ if (!fileStat.isFile()) {
391
+ res.status(400).json({ error: 'Path is not a file' });
392
+ return;
393
+ }
394
+ // 文件大小检查
395
+ if (fileStat.size > MAX_FILE_SIZE) {
396
+ res.status(413).json({
397
+ error: `File too large. Maximum size is ${MAX_FILE_SIZE / 1024 / 1024}MB`,
398
+ });
399
+ return;
400
+ }
401
+ // 设置 Content-Type
402
+ const contentType = IMAGE_MIME_TYPES[ext] || 'application/octet-stream';
403
+ res.setHeader('Content-Type', contentType);
404
+ res.setHeader('Content-Length', fileStat.size);
405
+ res.setHeader('Cache-Control', 'public, max-age=31536000');
406
+ // 流式返回文件内容
407
+ const fileStream = createReadStream(absolutePath);
408
+ fileStream.pipe(res);
409
+ fileStream.on('error', (err) => {
410
+ logger.error({ path: absolutePath, err: String(err) }, 'Failed to stream asset file');
411
+ if (!res.headersSent) {
412
+ res.status(500).json({ error: 'Failed to read file' });
413
+ }
414
+ });
415
+ logger.debug({ path: absolutePath, size: fileStat.size, contentType }, 'Asset file served');
416
+ }
417
+ catch (err) {
418
+ logger.error({ err }, 'Failed to serve asset');
419
+ res.status(500).json({ error: 'Internal server error' });
420
+ }
421
+ });
286
422
  return router;
287
423
  }
288
424
  //# sourceMappingURL=file-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-routes.js","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-routes.js","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"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"}
File without changes
@@ -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,CA+ThF"}
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,CAoWhF"}
@@ -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
- const ipMonitor = new IpMonitor((newIp, oldIp) => {
170
- logger.info({ oldIp, newIp }, 'IP change detected');
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,9 +192,20 @@ export async function startServer(cliOverrides = {}) {
178
192
  localIpSet.add(ip);
179
193
  }
180
194
  logger.info({ allowedHosts: [...localIpSet] }, 'CORS allowlist refreshed');
181
- }, 30000, 2, undefined,
195
+ }, 30000, 2,
182
196
  // Network interface change callback
183
197
  (interfaces, preferredIp) => {
198
+ // Refresh CORS allowlist immediately on interface change
199
+ // This is critical: when VPN connects after server start, the VPN IP
200
+ // must be added to the CORS allowlist, otherwise API requests from the
201
+ // VPN IP origin are rejected with 500 "Not allowed by CORS".
202
+ localIpSet.clear();
203
+ localIpSet.add('localhost');
204
+ localIpSet.add('127.0.0.1');
205
+ for (const ip of detectAllLocalIps()) {
206
+ localIpSet.add(ip);
207
+ }
208
+ logger.info({ allowedHosts: [...localIpSet] }, 'CORS allowlist refreshed (interface change)');
184
209
  // Broadcast network change to all WebSocket clients
185
210
  const networkMsg = {
186
211
  type: 'network_changed',
@@ -197,8 +222,12 @@ export async function startServer(cliOverrides = {}) {
197
222
  };
198
223
  instanceManager.broadcastAll(networkMsg);
199
224
  logger.debug({ interfaceCount: interfaces.length }, 'Network change broadcasted');
225
+ },
226
+ // Interface switch callback
227
+ (event) => {
228
+ logger.info({ oldInterface: event.previousInterface.name, newInterface: event.newInterface.name }, 'Network interface switched');
200
229
  });
201
- ipMonitor.start(config.displayIp);
230
+ ipMonitor.start(effectiveInterface);
202
231
  // 16. Unified graceful shutdown
203
232
  let shuttingDown = false;
204
233
  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
- export type IpChangeCallback = (newIp: string, oldIp: string) => void;
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
- constructor(onChange: IpChangeCallback, intervalMs?: number, stabilityThreshold?: number, getIp?: GetIpFunction, onNetworkChange?: NetworkChangeCallback | undefined);
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 initialIp 初始 IP 地址
55
+ * @param initialInterface 初始网卡信息(名称和 IP
32
56
  */
33
- start(initialIp: string): void;
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,EAA6D,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AAClG,MAAM,MAAM,aAAa,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AAmBhD;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAUlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAbnC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,uBAAuB,CAAK;gBAGjB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,SAAQ,EAClB,kBAAkB,SAAI,EACtB,KAAK,GAAE,aAA4B,EACnC,eAAe,CAAC,EAAE,qBAAqB,YAAA;IAG1D;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAsB9B;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,OAAO,CAAC,KAAK;IAgDb;;OAEG;IACH,OAAO,CAAC,eAAe;IAiDvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAE1C;CACF"}
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"}