Skip to content

xvzhnang/netsec-toolsbox

Repository files navigation

Ne0XSec's Toolbox

一个基于 Tauri + Vue 3 构建的网络安全工具箱桌面应用,用于管理和快速启动各种安全工具。

✨ 功能特性

🎯 核心功能

  • 分类管理:支持多级分类和子分类,灵活组织工具
  • 工具管理:支持多种工具类型(GUI、CLI、JAR、Python、HTML、LNK、网页、其他)
  • 智能搜索:模糊搜索功能,支持多关键词匹配
  • 图标系统:支持三种图标来源
    • URL 远程图片(自动抓取 favicon)
    • 本地图片(自动裁剪压缩为 160x160)
    • 应用自身图标(自动从 EXE/LNK 文件提取)
  • 视图切换:支持网格视图和列表视图,用户可自由切换
  • 数据持久化:使用 JSON 配置文件存储,便于备份和迁移
  • 自动图标提取:输入路径后自动提取图标,支持 Windows EXE/LNK 文件
  • Wiki 文档系统:完整的 Markdown 文档管理,支持 GitHub 风格渲染、代码高亮(highlight.js)、数学公式(KaTeX,支持行内和块级公式)、流程图(Mermaid)、主题自定义(PinkFairy 暗色主题)、搜索和目录导航

🛠️ 工具类型支持

GUI 工具

  • 直接启动图形界面应用程序
  • 支持自定义工作目录
  • 支持命令行参数

CLI 工具

  • 在可执行文件所在目录打开终端并执行
  • 支持命令行参数
  • 自动检测 PATH 环境变量中的可执行文件

JAR 工具(Java 应用)

  • 支持自定义 Java 路径(可选,默认使用 PATH)
  • 支持 JVM 参数配置(如 -Xmx512m-Dxxx=yyy
  • 支持程序参数配置
  • 在 JAR 文件所在目录打开终端执行

Python 脚本

  • 在脚本所在目录打开终端执行
  • 自动使用 pythonpython3 命令(Windows 使用 python,Unix 使用 python3

HTML 工具(本地网页)

  • 支持本地 HTML 文件
  • 自动提取 HTML 文件中的 favicon
  • 在浏览器中打开本地 HTML 文件

LNK 工具(Windows 快捷方式)

  • 支持 Windows 快捷方式文件
  • 自动提取快捷方式的目标图标
  • 正确解析快捷方式路径(支持中文路径)

网页工具(在线工具)

  • 配置 URL 地址
  • 自动抓取网页 favicon
  • 点击后在浏览器新标签页打开

🎨 界面特性

  • 现代化 UI:深色主题,渐变背景,毛玻璃效果
  • 精美动画:流畅的过渡动画和悬停效果
    • 卡片悬停时的浮动动画
    • 工具卡片光泽扫过效果
    • 按钮波纹点击效果
    • 输入框焦点发光效果
    • 淡入/滑入动画
  • 应用图标风格:工具卡片采用类似应用图标的展示方式
  • 响应式布局:支持窗口大小调整,默认最大化启动
  • 视图切换:支持网格视图和列表视图切换
    • 网格视图:卡片式布局,显示完整信息
    • 列表视图:紧凑列表布局,仅显示图标、名称、描述和操作按钮
  • 虚拟滚动:大量工具时自动启用虚拟滚动优化性能(超过 50 个工具)
  • 独立滚动区域:分类、子分类、工具卡片、设置等区域独立滚动
  • 图标缓存:自动缓存提取的图标,提高加载速度
  • 美化滚动条:自定义滚动条样式,渐变效果,提升视觉体验
  • 统一设计系统:使用 CSS 变量统一管理颜色、阴影、渐变等样式
  • 优化文本选择:自定义文本选择颜色,提升可读性

🔍 搜索功能

  • 全局搜索:首页和分类页都支持搜索
  • 模糊匹配:支持多关键词搜索(空格分隔)
  • 搜索结果覆盖:半透明遮罩显示搜索结果
  • 搜索范围:支持搜索分类、子分类和工具

🖼️ 图标功能

  • 自动提取:输入路径后自动提取图标(EXE/LNK/HTML/URL)
  • 智能检测:自动检测文件类型并选择合适的提取方式
  • 路径变更检测:路径改变时自动清除旧图标并重新提取
  • 图标缓存:提取的图标自动缓存到 .config/icons/ 目录
  • 统一尺寸:所有图标统一调整为 160x160 像素显示

🤖 AI 助手功能

  • AI Gateway 服务:统一的 AI 服务管理架构
  • 多模型支持:支持多种 AI 模型(GPT、DeepSeek、Ollama 等)
  • 流式响应:支持实时流式输出,提升交互体验
  • 服务监控:自动健康检查和服务恢复
  • 连接池管理:多 Worker 实例负载均衡
  • 性能统计:请求统计、响应时间、Token 使用量等指标
  • 聊天历史:自动保存聊天记录,支持会话管理

📦 技术栈

  • 前端框架:Vue 3 + TypeScript
  • 构建工具:Vite
  • 桌面框架:Tauri 2.9.5
  • 后端语言:Rust 1.77.2+
  • 路由:Vue Router 4
  • 数据存储:JSON 配置文件
  • 图标处理:PowerShell/.NET(Windows)、image crate(Rust)
  • Markdown 渲染:Wiki 使用本地 markdown-it bundle(public/markdown-it/);AI 聊天消息使用 markdown-it(npm)
  • 代码高亮:highlight.js(Wiki 本地资源 + 聊天组件 npm 引入)
  • 数学公式:KaTeX(本地加载,位于 public/katex/,自定义渲染逻辑)
  • 流程图:Mermaid(npm 包,打包到 bundle)
  • 主题样式:PinkFairy 暗色主题(自定义 CSS,基于 Typora See Yue Dark)
  • 字体:JetBrains Mono(本地加载,位于 public/fonts/
  • 服务管理:统一的服务管理架构(ServiceManager),支持健康检查、熔断器、指标收集

🚀 快速开始

环境要求

  • Node.js 18+
  • Rust 1.77.2+
  • npm 或 yarn
  • Windows 10+(当前主要支持 Windows,其他平台部分功能可能受限)

安装依赖

# 安装前端依赖
npm install

# 安装 Rust 依赖(首次运行会自动安装)
cd src-tauri
cargo build

准备本地资源(离线环境必需)

为确保应用在离线环境下正常运行,需要准备以下本地资源:

1. KaTeX(数学公式渲染)

# 方式 1:从 npm 包提取(推荐)
npm install katex@0.16.9
# Windows PowerShell:
Copy-Item node_modules/katex/dist public/katex/dist -Recurse
Copy-Item node_modules/katex/katex.min.js public/katex/
Copy-Item node_modules/katex/katex.min.css public/katex/

# 方式 2:从 GitHub 下载
# 访问 https://github.com/KaTeX/KaTeX/releases/tag/v0.16.9
# 下载并解压到 public/katex/ 目录

详细说明请参考 public/katex/README.md

重要说明

  • KaTeX 使用自定义渲染逻辑,不依赖 markdown-it-katex 插件
  • 支持行内公式($...$)和块级公式($$...$$
  • 自动清理零宽空格和 Unicode 数学符号,转换为 LaTeX 语法
  • 公式渲染采用防抖机制,避免重复渲染和性能问题

2. 其他资源

  • highlight.js:已包含在 public/highlight.js-11.11.1/ 目录
  • Typora See Yue 主题:已包含在 public/typora-see-yue-theme_v1.4/ 目录
  • JetBrains Mono 字体:已包含在 public/fonts/ 目录
  • Mermaid:通过 npm 包安装,构建时会自动打包到 bundle

开发模式

npm run tauri dev

这将启动开发服务器,前端运行在 http://localhost:5173,Tauri 应用会自动启动。

构建生产版本

# 构建前端和 Tauri 应用
npm run tauri build

构建产物位于 src-tauri/target/release/ 目录。

📁 项目结构

netsec-toolbox/
├── src/                    # 前端源代码
│   ├── components/         # Vue 组件
│   │   ├── AiAssistantPanel.vue    # AI 助手面板(预览)
│   │   ├── ConfirmDialog.vue       # 确认对话框
│   │   ├── ContextMenu.vue         # 右键菜单
│   │   ├── ErrorBoundary.vue       # 错误边界
│   │   ├── ModalDialog.vue         # 模态对话框
│   │   ├── VirtualList.vue         # 虚拟滚动列表
│   │   ├── WikiFileTree.vue        # Wiki 文件树组件
│   │   └── WikiModal.vue           # Wiki 模态框组件
│   ├── stores/             # 状态管理
│   │   └── categories.ts   # 分类和工具数据管理
│   ├── utils/              # 工具函数
│   │   ├── constants.ts   # 常量定义
│   │   ├── fileDialog.ts  # 文件选择对话框
│   │   ├── fileStorage.ts # 文件存储(JSON)
│   │   ├── iconLoader.ts  # 图标加载器
│   │   ├── imageProcessor.ts  # 图片处理(裁剪压缩、图标提取)
│   │   ├── logger.ts      # 统一日志工具
│   │   ├── markdown.ts    # Markdown 渲染工具
│   │   ├── tauri.ts       # Tauri API 工具
│   │   └── toolLauncher.ts # 工具启动器
│   ├── views/              # 页面视图
│   │   ├── DashboardView.vue      # 首页
│   │   ├── CategoryView.vue       # 分类页
│   │   ├── CategorySettingsView.vue  # 分类设置页
│   │   ├── SettingsView.vue       # 设置页
│   │   └── WikiView.vue           # Wiki 文档视图
│   ├── types/              # 类型定义
│   │   ├── tauri.ts       # Tauri 类型定义
│   │   └── wiki.ts         # Wiki 类型定义
│   ├── App.vue             # 根组件
│   ├── main.ts             # 入口文件
│   ├── router.ts           # 路由配置
│   └── style.css           # 全局样式
├── src-tauri/              # Tauri 后端
│   ├── src/
│   │   ├── lib.rs          # 主入口(模块声明和命令注册)
│   │   ├── main.rs         # 程序入口
│   │   ├── types.rs        # 数据类型定义
│   │   ├── utils.rs        # 工具函数(路径、哈希等)
│   │   ├── config.rs       # 配置管理(JSON 文件读写)
│   │   ├── launcher.rs    # 工具启动逻辑
│   │   ├── icon_extractor.rs  # 图标提取逻辑
│   │   └── file_ops.rs    # 文件操作(路径解析、文件对话框)
│   ├── Cargo.toml          # Rust 依赖配置
│   ├── tauri.conf.json     # Tauri 配置
│   └── icons/              # 应用图标
└── README.md               # 本文件

📝 配置说明

数据存储

所有配置数据存储在应用配置目录下的 .config 文件夹中,分为多个配置文件:

  • 分类配置: .config/categories.json - 一级分类配置(名称、图标、颜色等)
  • 工具数据: .config/tools.json - 子分类和工具数据
  • 图标缓存: .config/icons/ - 自动提取的图标缓存(PNG 格式)
  • AI 配置: .config/ai.json - AI 相关配置(未来使用)

配置文件分离的好处:

  • 分类配置和工具数据独立管理
  • 便于版本控制和备份
  • 减少单个文件过大
  • 便于未来扩展(如 AI 配置)

配置文件格式

{
  "categories": [
    {
      "id": "web",
      "name": "WEB",
      "label": "Web 攻击与防御",
      "description": "Web 相关攻击与防御工具集合。",
      "icon": "globe",
      "color": "#4DA3FF",
      "order": 1,
      "enabled": true
    }
  ]
}
{
  "data": [
    {
      "id": "web",
      "name": "WEB",
      "sub_categories": [
        {
          "id": "web-info",
          "name": "信息收集",
          "tools": [
            {
              "id": "host-info",
              "name": "主机信息探测",
              "description": "对域名/IP 进行 whois、地理位置、ASN 等查询。",
              "iconUrl": "data:image/png;base64,...",
              "toolType": "CLI",
              "execPath": "C:\\Tools\\whois.exe",
              "args": ["-d", "example.com"]
            }
          ]
        }
      ]
    }
  ]
}

🎯 使用指南

添加分类

  1. 进入设置页面
  2. 点击"添加分类"
  3. 填写分类信息(名称、描述、图标、颜色等)
  4. 保存

添加工具

  1. 进入分类页面
  2. 选择或创建子分类
  3. 点击"新增工具"
  4. 填写工具信息:
    • 名称:工具名称
    • 图标:自动提取或手动设置
    • 工具类型:选择 GUI、CLI、JAR、Python、HTML、LNK、网页或其他
    • 可执行路径/URL:根据工具类型填写
    • 参数:命令行参数(空格分隔)
    • 描述:工具用途说明
  5. 保存

视图切换

  • 在分类页面,点击工具头部的"网格"或"列表"按钮
  • 网格视图:适合浏览,显示完整信息
  • 列表视图:适合快速查找,紧凑显示

JAR 工具配置

对于 Java JAR 类型工具,需要配置:

  • JAR 路径:选择 JAR 文件
  • Java 路径(可选):留空则使用系统 PATH 中的 Java
  • JVM 参数:如 -Xmx512m -Dfile.encoding=UTF-8
  • 程序参数:传递给 Java 程序的参数

图标设置

自动提取图标(推荐)

  • 输入可执行文件路径后,系统会自动提取图标
  • 支持 EXE、LNK、HTML 文件
  • 支持 URL(自动抓取 favicon)
  • 路径改变时自动清除旧图标并重新提取

手动设置图标

  • URL 图标:输入图片 URL 地址(支持 http/https)
  • 本地图片:选择本地图片文件,自动裁剪为 160x160 并压缩

搜索工具

  • 在首页或分类页的搜索框输入关键词
  • 支持多关键词搜索(空格分隔)
  • 搜索结果会覆盖显示在内容区域上方

🔧 技术细节

Wiki 文档系统实现

Markdown 渲染流程

  1. Markdown 解析:使用 markdown-it 及其插件解析 Markdown 文本

    • 插件包括:markdown-it-anchormarkdown-it-tocmarkdown-it-task-listsmarkdown-it-attrsmarkdown-it-footnotemarkdown-it-emojimarkdown-it-containermarkdown-it-mermaid
    • 注意markdown-it-katex 已被禁用,使用自定义渲染逻辑
  2. 代码高亮

    • 使用 highlight.js 进行语法高亮
    • 支持语言别名(如 ps1powershell
    • 自动检测未指定语言的代码块
  3. 数学公式渲染(KaTeX):

    • 自定义渲染逻辑:不依赖 markdown-it-katex,避免重复渲染问题
    • 渲染流程
      1. 动态加载 KaTeX JS 和 CSS(支持多个路径回退)
      2. 处理块级公式($$...$$):优先处理,支持跨行公式
      3. 处理行内公式($...$):使用 TreeWalker 遍历文本节点
      4. 公式清理:移除零宽空格,转换 Unicode 数学符号为 LaTeX
      5. 防重复渲染:使用 WeakSet 标记已处理元素
    • 性能优化
      • 使用 Promise 异步执行,避免阻塞 DOM 更新
      • 使用 WeakSet 避免内存泄漏
      • 从后往前处理,避免索引变化问题
  4. Mermaid 图表

    • 使用 markdown-it-mermaid 插件处理
    • 在 Markdown 解析阶段转换为 <div class="mermaid"> 元素
    • 后续通过 Mermaid API 渲染
  5. 主题样式

    • 使用 PinkFairy 暗色主题(自定义 CSS)
    • 支持暗色背景、粉色高亮、渐变效果
    • 优化了代码块、表格、引用块、公式等元素的样式

性能优化

  • 虚拟滚动:大量工具时自动启用(超过 50 个工具)
  • 防抖机制:KaTeX 公式渲染使用防抖,避免频繁 DOM 操作
  • 懒加载:KaTeX 和 Mermaid 按需加载
  • 缓存机制:图标自动缓存到 .config/icons/ 目录

后端架构

后端采用模块化设计,分为以下模块:

  • types.rs:所有数据结构定义
  • utils.rs:工具函数(路径处理、哈希计算等)
  • config.rs:配置文件管理
  • launcher.rs:工具启动逻辑(支持多种工具类型)
  • icon_extractor.rs:图标提取(Windows EXE/LNK、HTML、URL favicon)
  • file_ops.rs:文件操作(路径解析、文件对话框)

AI Gateway 服务(OpenAI 兼容)

  • OpenAI 兼容接口:/v1/chat/completions/v1/models/health
  • 连接池:全局单例(OnceLock),多 Worker 负载均衡与故障转移
  • Worker 就绪原子性:端口可用 + stderr [READY] + 模型就绪后才进入调度
  • 健康检查与自愈:进程状态 + 心跳 + /health,连续失败降级与重启(冷却 + 重启预算)
  • 熔断:每 Worker 独立熔断器,半开探测避免问题扩散
  • 日志降噪:模型不可用告警做全局去重

稳定性与崩溃风险控制

  • Mutex:统一使用 lock_or_recover 处理 poisoned mutex,避免 unwrap() 触发 panic
  • 锁粒度:避免嵌套长时间持锁,把耗时操作移出锁区
  • 边界检查:对 pool_sizeworker_id、数组索引做防御性校验
  • 进程管理:停止/重启包含超时与状态清理,避免端口占用与句柄泄漏

图标提取机制

Windows EXE/LNK 图标提取

  • 使用 PowerShell/.NET 的 System.Drawing.Icon::ExtractAssociatedIcon
  • 通过环境变量传递路径,避免编码问题
  • 支持中文路径
  • 自动处理 Windows 长路径前缀(\\?\

HTML 图标提取

  • 解析 HTML 文件,查找 <link rel="icon"><link rel="shortcut icon">
  • 支持相对路径和绝对路径
  • 自动下载并缓存图标

URL Favicon 抓取

  • 尝试多个常见 favicon 路径(/favicon.ico/favicon.png/apple-touch-icon.png
  • 自动下载并缓存
  • 转换为 base64 格式存储

路径解析

  • 支持绝对路径和相对路径
  • 自动在 PATH 环境变量中查找可执行文件
  • 处理 Windows 长路径前缀
  • 路径规范化(canonicalize)

窗口配置

  • 默认最大化启动(maximized: true
  • 支持窗口大小调整(resizable: true
  • 用户可自由调整窗口大小

📄 许可证

本项目为私有项目。

👤 作者

By 序章

🙏 致谢

感谢所有贡献者和使用者的支持!


版本:0.2.0
最后更新:2025-01-XX

📝 更新日志

v0.2.0 (2025-01-XX)

  • UI 美化升级
    • 添加 CSS 变量系统,统一管理颜色、阴影、渐变等样式
    • 优化按钮样式,添加悬停动画和波纹效果
    • 美化滚动条,统一视觉风格,添加渐变效果
    • 添加卡片悬停效果和过渡动画(浮动动画)
    • 优化输入框样式,添加焦点状态和发光效果
    • 添加加载动画和淡入/滑入动画
    • 添加工具卡片悬停时的光泽扫过效果
    • 优化文本选择样式
    • 添加更多动画效果(shimmer、glow、float)
  • 代码优化
    • 修复 Tauri API 导入问题,统一使用 getTauriInvoke() 函数
    • 修复 ServiceManager 注册问题,自动注册 ai-gateway 服务
    • 优化连接池初始化逻辑,避免不必要的 clone
    • 删除未使用的导入和变量
    • 优化代码结构,提取公共样式
    • 完善错误处理和日志记录
  • 功能增强
    • 统一服务管理架构(ServiceManager)
    • AI Gateway 服务自动注册和启动
    • 服务健康检查和自动恢复
    • 连接池管理和负载均衡
    • 服务监控和指标收集
  • 📝 文档更新
    • 更新 README,添加新功能说明
    • 添加 AI 助手功能说明
    • 更新技术栈信息
    • 完善使用指南和配置说明

v0.1.0 (2025-12-18)

  • ✅ 完成代码审查和优化
  • ✅ 注释所有调试代码,使用统一日志工具
  • ✅ 优化 Wiki 文档系统,统一渲染样式
  • ✅ 代码框样式优化,统一为单一框样式
  • ✅ 完善 README 文档
  • KaTeX 公式渲染优化
    • 禁用 markdown-it-katex 插件,使用自定义渲染逻辑
    • 修复块级公式渲染问题,支持跨行公式
    • 优化公式清理逻辑,自动转换 Unicode 数学符号
    • 添加防重复渲染机制,使用 WeakSet 标记已处理元素
    • 优化 CSS 加载逻辑,支持多个路径回退
  • 代码结构优化
    • 提取重复代码为独立函数(isElementRenderedshouldSkipElementrenderSingleFormula
    • 简化 KaTeX CSS 加载逻辑,统一错误处理
    • 优化性能,减少不必要的 DOM 操作

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors