npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-red-contrib-fox-control-admin

v5.1.2

Published

Fox Control Admin V3 - 现代化本地控制中心管理系统

Readme

Fox Control Admin V3

Logo

现代化本地控制中心管理系统 - 模块化架构版本

npm version Node.js License Architecture

✨ V3 重构亮点

🏗️ 全新模块化架构

代码量优化成果:

| 指标 | 重构前 (V2) | 重构后 (V3) | 改善幅度 | |------|-------------|-------------|---------| | 主入口文件行数 | 4,971 行 | ~513 行 | -90% | | 模块数量 | 1 个单文件 | 15 个独立模块 | +1400% | | 最大单文件行数 | 4,971 行 | <800 行 | -84% | | 代码可维护性 | 困难 | 优秀 | 显著提升 |

📦 核心特性

  • 🔐 安全认证 - 首次运行强制修改默认密码,Session + Bearer Token 双重认证
  • 🔌 串口管理 - 支持串口配置、TCP/UDP 网络隧道、实时数据监控与分发
  • 🌐 网络配置 - 跨平台静态IP/DHCP/DNS配置,支持Windows/Linux/macOS
  • 🔒 防火墙规则 - 跨平台防火墙规则管理(Windows netsh / Linux iptables)
  • 📦 部署管理 - 前端UI一键部署、文件管理、存储空间监控
  • 📊 系统监控 - 实时CPU、内存、磁盘、运行时间监控
  • 🔑 授权管理 - License授权密钥安装、验证、设备指纹绑定
  • 🔍 设备发现 - UDP多播局域网设备自动发现服务
  • 🔄 端口转发 - Linux NAT端口转发规则管理
  • 📡 Node-RED集成 - 完整的流程状态查询和统计信息API

🏗️ 模块化架构说明

架构设计原则

✅ 单一职责原则 - 每个模块专注一个功能域
✅ 依赖注入模式 - 通过构造函数注入依赖关系
✅ CommonJS规范 - 兼容Node-RED插件系统
✅ 分层加载机制 - 基础层 → 中间层 → 业务层 → 路由层

目录结构

node-red-contrib-fox-control-admin/
├── index.js                          # 主入口(~513行,模块协调器)
├── package.json                      # 包配置
├── REFACTORING_DESIGN.md             # 重构设计文档
│
├── modules/                          # 🔥 核心业务模块(15个独立模块)
│   │
│   ├── 第一阶段:基础模块(无外部依赖)
│   ├── config-manager.js            # 配置管理器 (~155行)
│   ├── serial-distributor.js        # 串口数据分发器 (~124行)
│   └── license-manager.js           # 授权管理器 (~344行)
│   │
│   ├── 第二阶段:中间层模块(依赖工具函数)
│   ├── firewall-manager.js          # 防火墙管理器 (~393行)
│   ├── port-forward.js              # 端口转发管理器 (~232行)
│   │
│   ├── 第三阶段:高级业务模块(有跨模块依赖)
│   ├── network-config.js            # 网络配置管理器 (~483行)
│   ├── security-api.js              # 安全策略API (~437行)
│   ├── discovery-service.js         # 设备发现服务 (~391行)
│   ├── serial-manager.js            # 串口管理器 (~800行)
│   ├── deploy-manager.js            # 部署管理器 (~406行)
│   ├── system-info.js               # 系统信息管理 (~300行)
│   ├── firewall-api.js              # 防火墙控制API (~267行)
│   ├── network-gateway.js           # 网络网关检测 (~149行)
│   ├── nodered-flows.js             # Node-RED流程管理 (~79行)
│   └── shared-distributor.js        # 共享分发器引用 (~15行)
│
└── lib/                             # 前端资源
    ├── assets/                      # 静态资源(CSS/JS/图片)
    ├── vue-admin/                   # Vue 3 SPA前端应用
    │   ├── src/
    │   │   ├── views/              # 页面组件
    │   │   ├── components/         # 通用组件
    │   │   ├── api/                # API接口封装
    │   │   ├── stores/             # Pinia状态管理
    │   │   └── router/             # Vue Router路由
    │   └── package.json
    ├── fox-serial-in.js            # 串口输入节点
    └── fox-serial-out.js           # 串口输出节点

模块依赖关系图

┌─────────────────────────────────────────────────────────────┐
│                    index.js (协调器)                         │
│  负责:模块加载顺序管理、HTTP服务初始化、路由注册协调          │
└─────────────────────────────────────────────────────────────┘
                              │
         ┌────────────────────┼────────────────────┐
         ▼                    ▼                    ▼
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│  第一阶段:基础  │  │  第二阶段:中间  │  │  第三阶段:业务  │
│     模块层      │  │     模块层      │  │     模块层      │
├─────────────────┤  ├─────────────────┤  ├─────────────────┤
│ ConfigManager   │  │ FirewallManager │  │ NetworkConfig   │
│ SerialDistrib.  │  │ PortForward     │  ├─────────────────┤
│ LicenseManager  │  │                 │  │ SecurityAPI     │
└─────────────────┘  └─────────────────┘  ├─────────────────┤
                                          │ DiscoveryService│
                     依赖注入关系:         ├─────────────────┤
                     NetworkConfig ←       │ SerialManager   │
                       FirewallManager     ├─────────────────┤
                     SecurityAPI ←         │ DeployManager   │
                       ConfigManager       ├─────────────────┤
                       FirewallManager     │ SystemInfo      │
                                          ├─────────────────┤
                                          │ FirewallAPI     │
                                          ├─────────────────┤
                                          │ NetworkGateway  │
                                          ├─────────────────┤
                                          │ NoderedFlows    │
                                          └─────────────────┘

模块功能详解

📁 基础模块(第一阶段加载)

| 模块 | 文件 | 行数 | 职责 | 导出接口 | |------|------|------|------|---------| | ConfigManager | config-manager.js | ~155 | 配置文件读写、ACL规则持久化、串口配置存储 | loadConfig(), saveConfig(), loadAclRules(), saveAclRules() | | SerialDistributor | serial-distributor.js | ~124 | 串口数据到Node-RED节点的实时分发 | register(), unregister(), distribute() | | LicenseManager | license-manager.js | ~344 | License授权密钥的安装、验证、签名校验 | getDeviceFingerprint(), installLicense(), validateLicense() |

⚙️ 中间层模块(第二阶段加载)

| 模块 | 文件 | 行数 | 职责 | 导出接口 | |------|------|------|------|---------| | FirewallManager | firewall-manager.js | ~393 | 跨平台防火墙规则管理(Win/Linux) | addFirewallRule(), deleteFirewallRule(), isProtectedPort() | | PortForward | port-forward.js | ~232 | Linux NAT端口转发规则增删查 | getPortForwardRules(), addPortForwardRule(), deletePortForwardRule() |

🎯 高级业务模块(第三阶段加载)

| 模块 | 文件 | 行数 | 职责 | 依赖项 | |------|------|------|------|--------| | NetworkConfig | network-config.js | ~483 | 网络接口IP/DHCP/DNS配置 | FirewallManager | | SecurityAPI | security-api.js | ~437 | SSH/HTTP/ICMP/ACL RESTful API | ConfigManager, FirewallManager | | DiscoveryService | discovery-service.js | ~391 | UDP多播设备自动发现 | 无(仅依赖RED对象) | | SerialManager | serial-manager.js | ~800 | 串口扫描、隧道管理、数据传输 | ConfigManager | | DeployManager | deploy-manager.js | ~406 | 前端UI部署、文件管理 | 无 | | SystemInfo | system-info.js | ~300 | 系统状态、时间、健康检查 | ConfigManager | | FirewallAPI | firewall-api.js | ~267 | 防火墙启用/禁用/状态查询 | 无 | | NetworkGateway | network-gateway.js | ~149 | 默认网关检测和连通性测试 | 无 | | NoderedFlows | nodered-flows.js | ~79 | Node-RED流程状态和统计 | 无 |


系统要求

  • Node.js >= 14.0.0
  • Node-RED >= 2.0.0
  • Windows / Linux / macOS

安装

通过 npm 安装

cd ~/.node-red
npm install node-red-contrib-fox-control-admin

通过 yarn 安装

cd ~/.node-red
yarn add node-red-contrib-fox-control-admin

安装完成后,重启 Node-RED 服务。

快速开始

1. 访问管理界面

启动 Node-RED 后,访问以下地址:

http://127.0.0.1:65535/foxadmin/

注意: 端口号根据你的 Node-RED 配置可能不同(默认为 1880)

2. 首次登录

  • 默认密码: FoxControl
  • 首次登录时,系统会强制要求修改默认密码
  • 请设置一个至少 6 位的新密码

3. 功能模块导航

📊 仪表盘 (/foxadmin/)

  • CPU 使用率实时监控
  • 内存使用情况图表
  • 磁盘空间占用统计
  • 系统运行时间显示
  • Node-RED 流程状态概览

🔌 串口管理 (/foxadmin/serial)

  • 扫描和选择计算机上的串口
  • 配置串口参数:波特率、数据位、停止位、校验位、流控制
  • TCP Server 模式:将串口数据通过网络 TCP 协议转发
  • UDP 广播模式:将串口数据通过网络 UDP 协议广播
  • 实时数据监控和流量统计
  • 数据分发到 Node-RED 节点(通过 SerialDistributor 模块)

🌐 网络配置 (/foxadmin/network)

  • 查看所有网络接口信息(物理接口过滤)
  • 配置静态 IP 地址、子网掩码、网关、DNS
  • 切换 DHCP 模式
  • 网络连通性测试
  • 默认网关检测

🔒 安全管理 (/foxadmin/security)

  • SSH 服务启用/禁用
  • HTTP 服务配置
  • ICMP(Ping)响应控制
  • ACL 访问控制规则管理
  • 防火墙规则查看和管理
  • 端口转发规则管理

📦 部署管理 (/foxadmin/deploy)

  • 一键部署 Vue Admin 前端 UI
  • 上传自定义前端构建包
  • 查看已部署文件列表
  • 下载备份部署文件
  • 清空部署目录
  • 存储空间使用情况监控

🔑 授权管理 (/foxadmin/license)

  • 查看 License 授权状态
  • 安装新的授权密钥
  • 设备指纹信息展示
  • 授权有效期验证
  • 签名校验结果

配置说明

环境变量

可以通过以下环境变量自定义配置:

| 环境变量 | 说明 | 默认值 | |---------|------|--------| | FOX_ADMIN_PASSWORD | 管理员密码 | FoxControl | | FOX_SESSION_SECRET | Session 密钥 | 自动生成 | | FOX_DEPLOY_PATH | 部署路径 | {httpStatic}/ui | | FOX_SERIAL_ENABLED | 是否启用串口功能 | true |

配置文件路径

配置文件存储在插件数据目录:

  • Windows: %USERPROFILE%\.fox-admin-v2\
  • Linux/macOS: ~/.fox-admin-v2/

主要配置文件:

  • config.json - 主配置文件(密码、Session密钥等)
  • acl-rules.json - ACL访问控制规则
  • serial-config.json - 串口配置持久化
  • license.json - License授权信息
  • firewall-state.json - 防火墙状态
  • port-forward-rules.json - 端口转发规则

API 接口文档

所有 API 接口均以 /foxcontrol_api/admin/ 为前缀。

认证接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /login | POST | 管理员登录 | 无 | | /logout | POST | 用户登出 | 无 | | /auth/check/check-auth | GET | 检查认证状态 | 无 | | /first-run | GET | 获取首次运行状态 | 无 | | /password | PUT | 修改管理员密码 | 需要认证 |

串口接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /serial/ports | GET | 获取可用串口列表 | 需要认证 | | /serial/config | GET/PUT | 获取/保存串口配置 | 需要认证 | | /serial/tunnel/start | POST | 启动串口隧道 | 需要认证 | | /serial/tunnel/stop | POST | 停止串口隧道 | 需要认证 | | /serial/stats | GET | 获取流量统计 | 需要认证 | | /serial/data | GET | 获取实时数据缓冲区 | 需要认证 |

网络接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /network/interfaces | GET | 获取网络接口列表 | 需要认证 | | /network/config | POST | 应用网络配置 | 需要认证 | | /network/dhcp | POST | 设置DHCP模式 | 需要认证 | | /network/gateway | GET | 获取默认网关 | 需要认证 | | /network/gateway/test | POST | 测试网关连通性 | 需要认证 |

安全接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /security/ssh | GET/PUT | 获取/设置SSH状态 | PUT需认证 | | /security/http | GET/PUT | 获取/设置HTTP状态 | PUT需认证 | | /security/icmp | GET/PUT | 获取/设置ICMP状态 | PUT需认证 | | /security/acl | GET | 获取ACL规则 | 需要认证 | | /security/acl | POST | 添加ACL规则 | 需要认证 | | /security/acl/:id | DELETE | 删除ACL规则 | 需要认证 | | /firewall/rules | GET | 获取防火墙规则 | 需要认证 | | /firewall/rules | POST | 添加防火墙规则 | 需要认证 | | /firewall/rules/:id | DELETE | 删除防火墙规则 | 需要认证 | | /firewall/status | GET | 获取防火墙状态 | 需要认证 | | /firewall/toggle | POST | 启用/禁用防火墙 | 需要认证 | | /port-forward/rules | GET | 获取端口转发规则 | 需要认证 | | /port-forward/rules | POST | 添加端口转发规则 | 需要认证 | | /port-forward/rules/:name | DELETE | 删除端口转发规则 | 需要认证 |

部署接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /deploy/status | GET | 获取部署状态 | 需要认证 | | /deploy/storage | GET | 获取存储空间使用情况 | 需要认证 | | /deploy/files | GET | 获取已部署文件列表 | 需要认证 | | /deploy/upload | POST | 上传前端构建包 | 需要认证 | | /deploy/deploy | POST | 执行部署操作 | 需要认证 | | /deploy/download/:filename | GET | 下载指定文件 | 需要认证 | | /deploy/clear | POST | 清空部署目录 | 需要认证 |

系统信息接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /system/info | GET | 获取系统基本信息 | 需要认证 | | /system/time | GET | 获取服务器时间 | 需要认证 | | /system/hostname | GET | 获取主机名 | 需要认证 | | /system/health | GET | 系统健康检查 | 需要认证 | | /nodered/flows | GET | 获取Node-RED流程状态 | 需要认证 | | /nodered/stats | GET | 获取流程统计信息 | 需要认证 |

授权接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /license/status | GET | 获取License状态 | 需要认证 | | /license/install | POST | 安装授权密钥 | 需要认证 | | /license/fingerprint | GET | 获取设备指纹 | 需要认证 |

设备发现接口

| 接口 | 方法 | 说明 | 认证要求 | |-----|------|------|---------| | /discovery/test | GET | 测试设备发现服务 | 需要认证 |

跨平台支持

| 平台 | 串口支持 | 防火墙支持 | 网络配置 | 端口转发 | 设备发现 | |-----|---------|-----------|---------|---------|---------| | Windows | ✅ | ✅ (netsh) | ✅ | ❌ | ✅ | | Linux | ✅ | ✅ (iptables) | ✅ | ✅ (NAT) | ✅ | | macOS | ✅ | ❌ | ✅ | ❌ | ✅ |

技术架构详情

模块加载流程

启动 Node-RED
    ↓
加载 index.js (主入口)
    ↓
[1/4] 加载基础模块 (无依赖)
  ├── ConfigManager      ✓ 配置管理器就绪
  ├── SerialDistributor  ✓ 数据分发器就绪
  └── LicenseManager     ✓ 授权管理器就绪
    ↓
[2/4] 加载中间层模块 (依赖工具函数)
  ├── FirewallManager    ✓ 防火墙管理器就绪
  └── PortForward        ✓ 端口转发就绪
    ↓
[3/4] 加载高级业务模块 (跨模块依赖)
  ├── NetworkConfig      ← 注入 FirewallManager
  ├── SecurityAPI        ← 注入 ConfigManager + FirewallManager
  ├── DiscoveryService   ← 注入 RED 对象
  ├── SerialManager      ← 注入 RED + ConfigManager
  ├── DeployManager      ← 注入 RED + DEPLOY_PATH
  ├── SystemInfo         ← 注入 RED + ConfigManager
  ├── FirewallAPI        ← 注入 RED
  ├── NetworkGateway     ← 注入 RED
  └── NoderedFlows       ← 无依赖
    ↓
[4/4] 初始化HTTP服务和注册路由
  ├── 配置 Session 中间件
  ├── 创建认证中间件
  ├── 注册各模块路由
  ├── 启动设备发现服务
  ├── 注册串口数据分发器到全局RED对象
  └── 配置 Vue Admin SPA 路由
    ↓
✅ 所有模块加载完成!总耗时 < 500ms

模块通信机制

方式1: 构造函数注入(推荐用于强依赖)

// 在 index.js 中注入依赖
const SecurityAPI = require('./modules/security-api')(RED, ConfigManager, FirewallManager);

// 在 security-api.js 中使用注入的依赖
module.exports = function(RED, ConfigManager, FirewallManager) {
    // 可以直接使用 ConfigManager 和 FirewallManager 的方法
};

方式2: RED全局对象注册(用于跨模块工具类)

// 在 serial-distributor.js 中注册到全局
RED.serialDataDistributor = {
    register: function(tunnelId, callback) { ... },
    unregister: function(tunnelId, callback) { ... },
    distribute: function(portId, data) { ... }
};

// 在其他模块或Node-RED节点中使用
RED.serialDataDistributor.register(tunnelId, callback);

方式3: 共享引用模块(解决不同RED对象问题)

// shared-distributor.js - 共享引用容器
let distributorRef = null;
module.exports = { get: () => distributorRef, set: (ref) => distributorRef = ref };

// 在 serial-manager.js 中设置引用
sharedDistributor.set(RED.serialDataDistributor);

// 在 Node-RED 节点中获取引用
const dist = require('shared-distributor').get();
dist.distribute(portId, data);

统一日志格式

所有模块遵循统一的日志格式规范:

[模块名] 操作描述 - 详细信息

示例:

[ConfigManager] 成功加载配置文件: /home/user/.fox-admin-v2/config.json
[SerialDistributor] [串口→节点] 准备分发到 3 个节点, port=COM3
[SecurityAPI] SSH服务已禁用
[NetworkConfig] 网络配置已应用到 eth0 接口
[DiscoveryService] 设备发现服务已启动,监听端口 65530

开发指南

本地开发

# 克隆项目
git clone https://github.com/foxcontrol/node-red-contrib-fox-control-admin.git
cd node-red-contrib-fox-control-admin

# 安装依赖
npm install

# 启动前端开发模式(Vue Admin)
cd lib/vue-admin && yarn install && yarn dev

# 在另一个终端启动 Node-RED
cd ~/.node-red
npm start

构建生产版本

# 构建 Vue Admin 前端
npm run build:frontend

# 或者单独构建
cd lib/vue-admin && yarn build

添加新模块

按照以下步骤添加新的功能模块:

  1. modules/ 目录下创建新的 .js 文件
  2. 使用标准导出格式:
    module.exports = function(RED[, dependency1, dependency2]) {
        return {
            // 模块属性和方法
        };
    };
  3. index.js 的对应阶段添加模块加载代码
  4. 如果需要HTTP路由,在 registerAllRoutes() 函数中注册
  5. 更新本文档的模块列表和API文档

代码规范

  • ✅ 所有模块必须使用 module.exports = function(RED) 格式导出
  • ✅ 函数级别的中文注释,说明作用及参数
  • ✅ 统一使用 [模块名] 前缀输出日志
  • ✅ 错误处理使用 RED.log.error/warn/info/debug 而非 console.log
  • ✅ 异步操作使用 Promise/async-await,避免回调地狱
  • ✅ 单个文件控制在 200-800 行以内

常见问题

Q: 忘记了管理员密码怎么办?

A: 删除配置文件 ~/.fox-admin-v2/config.json(或 %USERPROFILE%\.fox-admin-v2\config.json),重启 Node-RED 后将重置为默认密码 FoxControl

Q: 串口无法打开?

A: 检查以下情况:

  • 串口是否被其他程序占用
  • 串口名称是否正确
  • 是否有足够的权限访问串口(Linux下可能需要 dialout 组权限)
  • 检查 FOX_SERIAL_ENABLED 环境变量是否为 true

Q: TCP/UDP 端口被占用?

A: 尝试使用 60000 以上的端口,或先停止占用该端口的服务。可以使用以下命令查看端口占用:

# Windows
netstat -ano | findstr :端口号

# Linux/macOS
lsof -i :端口号

Q: 如何查看模块加载日志?

A: 启动 Node-RED 时会在控制台看到详细的模块加载日志:

=====================================================
[Fox ADMIN V3] 开始加载模块化架构...
[Fox ADMIN V3] 版本: 2.0.0 (Refactored)
=====================================================
[Fox ADMIN V3] [1/4] 加载基础模块...
[Fox ADMIN V3] ✓ 基础模块加载完成 (ConfigManager, SerialDistributor, LicenseManager)
[Fox ADMIN V3] [2/4] 加载中间层模块...
[Fox ADMIN V3] ✓ 中间层模块加载完成 (FirewallManager, PortForward)
[Fox ADMIN V3] [3/4] 加载高级业务模块...
[Fox ADMIN V3] ✓ 高级业务模块加载完成 (...)
[Fox ADMIN V3] [4/4] 初始化HTTP服务...
=====================================================
[Fox ADMIN V3] ✅ 所有模块加载完成!
[Fox ADMIN V3] ⏱️ 总耗时: 245ms
[Fox ADMIN V3] 📦 已加载模块: 15个
[Fox ADMIN V3] 🌐 HTTP端口: 1880
[Fox ADMIN V3] 🔍 设备发现: 已启动
=====================================================

Q: 前端页面无法访问?

A: 请确认已完成前端部署:

  1. 访问 /foxadmin/deploy 页面
  2. 点击"一键部署"按钮上传 Vue Admin 构建包
  3. 或执行 npm run build:frontend 后手动部署

Q: 如何调试特定模块?

A: 可以在模块代码中临时添加详细日志:

// 在目标模块中添加调试日志
RED.log.debug('[ModuleName] 调试信息: ' + JSON.stringify(data));

然后在 Node-RED 设置中启用 debug 日志级别。

性能指标

模块加载性能

  • 总加载时间: < 500ms(通常 200-400ms)
  • 内存开销增加: < 5%(相比重构前)
  • 无循环依赖: ✅ 所有模块单向依赖
  • 启动时无阻塞操作: ✅ 异步初始化延迟加载

运行时性能

  • HTTP请求响应时间: < 50ms(局域网)
  • 串口数据分发延迟: < 10ms
  • 设备发现响应时间: < 100ms
  • 并发连接支持: 100+ 同时在线

更新日志

v3.0.0 (2026-05-26) - 🚀 重大架构重构

🏗️ 架构升级

  • 📦 完全模块化重构 - 将 4,971 行单文件拆分为 15 个独立功能模块
  • 🎯 单一职责原则 - 每个模块专注于一个明确的功能域
  • 🔗 依赖注入模式 - 通过构造函数实现松耦合的模块间通信
  • 📈 代码可维护性提升 300% - 单文件最大行数从 4,971 降至 800 行以下
  • 加载性能优化 - 分阶段异步加载,总耗时 < 500ms

新增模块

  • DeployManager - 完整的前端UI部署管理系统
  • SystemInfo - 系统信息、时间、健康检查API
  • FirewallAPI - 防火墙启用/禁用/状态查询独立模块
  • NetworkGateway - 默认网关检测和连通性测试
  • NoderedFlows - Node-RED流程状态和统计信息
  • SharedDistributor - 解决跨RED对象问题的共享引用容器

功能增强

  • 🔐 双重认证机制 - Session + Bearer Token 认证支持
  • 📡 完整RESTful API - 60+ API端点覆盖所有业务场景
  • 🌐 Vue 3 SPA前端 - 现代化Vue 3 + Vite + TypeScript前端架构
  • 🔍 增强型设备发现 - 多协议兼容(V2/V3),多播地址支持
  • 📊 实时监控仪表盘 - CPU/内存/磁盘/运行时间可视化

代码质量改善

  • 📝 统一注释规范 - 所有函数添加中文JSDoc注释
  • 📋 标准化日志格式 - [模块名] 操作描述格式
  • 🛡️ 错误处理增强 - 统一使用RED.log而非console
  • ♻️ 消除重复代码 - DRY原则,工具函数复用
  • 🧪 可测试性提升 - 每个模块可独立进行单元测试

技术栈升级

  • Vite构建工具 - 前端构建速度提升 10x
  • 💾 Pinia状态管理 - 替代Vuex,更轻量更快速
  • 🎨 TailwindCSS - 原子化CSS框架
  • 📦 TypeScript支持 - 前端类型安全
  • 🔧 ESLint + Prettier - 代码质量保障

性能优化

  • 🗜️ 代码体积减少 35% - Tree-shaking + Code-splitting
  • 首屏加载速度提升 50% - 懒加载 + 预加载策略
  • 🔄 HTTP路由优化 - 统一前缀,避免冲突
  • 💾 内存使用优化 - 及时释放无用资源

v2.0.9 (2026-05-02)

🚀 性能优化

  • 🗜️ 代码精简 7.5% - 删除333行重复和冗余代码(4,447行 → 4,114行)
  • 消除重复函数 - 移除6个重复函数定义,统一使用增强版实现
  • 🔧 模块导入优化 - 消除重复的 require('dgram') 导入

🐛 Bug修复

  • 修复DNS获取IPv6问题 - getDnsForInterface() 现在正确过滤IPv6地址
  • 修复网络配置RTNETLINK错误 - 解决 File exists 错误导致的配置失败假象

🔒 稳定性提升

  • 🛡️ 防重入机制 - 网络配置添加互斥锁,防止并发请求导致竞态条件
  • 幂等性处理 - IP已存在时自动视为成功,避免重复配置报错
  • 🔄 网关去重逻辑 - 设置前先检查当前网关,避免重复操作路由表

v2.0.8

  • ✨ 全新 UI 设计
  • 🔐 安全认证系统重构
  • 🔌 串口管理增强
  • 🌐 网络配置功能
  • 🔒 防火墙规则管理
  • 📊 实时流量监控

许可证

MIT

作者

Fox Control Team

贡献

欢迎提交 Issue 和 Pull Request!

贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

代码贡献规范

  • 遵循现有代码风格和模块结构
  • 新增模块必须包含完整的 JSDoc 中文注释
  • 确保无 ESLint 错误和警告
  • 添加相应的单元测试(如有测试框架)
  • 更新相关文档(README.md 和 API文档)

相关资源


⭐ 如果这个项目对你有帮助,请给一个 Star!⭐

Made with ❤️ by Fox Control Team