Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions plugins/githubproxy/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
82 changes: 82 additions & 0 deletions plugins/githubproxy/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Changelog

All notable changes to this project will be documented in this file.

## [1.0.4](https://github.com/ZToolsCenter/ZTools-plugins) - 2026-05-11

### Fixed

- **深色主题样式优化**:进一步完善深色主题下的组件样式,修复输入框、表格、卡片等组件的边框和背景色问题
- **代码质量改进**:修复多处代码检测问题,包括变量定义、空值检查、JSON 解析错误处理等

### Optimized

- **HTTP 重定向处理**:增强对 GitHub 文件下载链接的重定向支持,支持自动跟随 301/302/307/308 状态码重定向到 objects.githubusercontent.com 等域名
- **代码健壮性**:为 JSON 解析添加 try-catch 包裹,防止数据格式错误导致崩溃

### Technical

- 代码审查问题修复:处理代码检测工具发现的各类问题
- 优化代码结构,提升可维护性

## [1.0.3](https://github.com/ZToolsCenter/ZTools-plugins) - 2026-05-11

### Fixed

- **数据库更新原子性**:修复 `saveProxyServers` 函数先 remove 再 put 的非原子操作,避免数据丢失风险,改用直接 put 覆盖更新
- **页面切换重复触发**:修复从 settings 切换回 home 时重复触发下载操作的问题,添加 `lastProcessedParam` 标记避免重复处理相同参数
- **编辑服务器功能**:修复编辑服务器地址后无法找到原始条目的问题,添加 `editingOriginalName` 记录原始名称
- **深色主题样式**:修复输入框、表格等组件在深色主题下的白色边框和背景问题
- **下载进度显示**:优化无 `content-length` 时的进度显示,显示已下载字节数而非估算进度

### Optimized

- **测速性能**:将服务器测速从串行改为并行执行,大幅提升批量测速效率
- **进度显示优化**:添加 `formatBytes` 函数,无文件大小时显示可读的已下载字节数(如 "2.34 MB")

### Technical

- 移除冗余的数据库操作,提升性能
- 添加参数去重机制,避免重复处理相同的插件入口参数

## [1.0.2](https://github.com/ZToolsCenter/ZTools-plugins) - 2026-05-11

### Fixed

- 修正拼写错误:`dowload` → `download`

## [1.0.1](https://github.com/ZToolsCenter/ZTools-plugins) - 2026-05-09

### Changed

- HTTP 重定向处理:GitHub 文件下载链接(如 Release 附件或 Raw 文件)通常会重定向到 objects.githubusercontent.com,现已支持自动跟随 301/302/307/308 重定向
- 深色主题下输入框、表格、卡片等组件样式适配
- 页面滚动问题修复
- 修改拼写错误

## [1.0.0](https://github.com/ZToolsCenter/ZTools-plugins) - 2026-05-09

### Added

- **GitHub Proxy 功能**
- 支持代理服务器选择,自动保存上次选择
- 支持 Git Clone / Wget / Curl / Direct Download 多种下载方式
- 自动生成代理加速链接
- 一键复制命令到剪贴板
- **设置页面**
- 代理服务器列表管理(添加、编辑、删除)
- 单服务器测速和批量测速功能
- 一键清理失效代理服务器
- 数据持久化存储
- **关于页面**
- 项目介绍和功能说明
- 技术栈展示
- 相关链接
- **深色主题支持**
- 自动检测 ztools 主题设置
- 手动切换主题按钮
- Element Plus 组件深色主题适配
- **插件入口参数**
- `download`:直接下载指定 URL 文件
- `copygitclone`:复制 Git Clone 命令

219 changes: 219 additions & 0 deletions plugins/githubproxy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
# Github Proxy

> A ZTools plugin for GitHub file proxy acceleration

这是一个使用 **Vue 3 + Vite + TypeScript + Element Plus** 构建的 ZTools 插件,用于加速访问 GitHub 文件资源。

## ✨ 功能特性

### 🚀 GitHub 文件代理加速

- **代理服务器选择**:支持多个代理服务器,可显示每个服务器的状态和响应时间
- **多种下载方式**:
- Git Clone 命令复制
- Wget 命令复制
- Curl 命令复制
- Direct Download 直链获取
- 直接下载文件到本地
- **命令自动生成**:根据选择的代理服务器和输入的 GitHub URL 自动生成对应命令

### ⚙️ 设置管理

- **代理服务器管理**:添加、编辑、删除代理服务器
- **一键测速**:测试所有或单个代理服务器的响应时间
- **清理失效代理**:快速清理无法连接的代理服务器
- **数据持久化**:代理列表和选择偏好自动保存

### 💾 数据持久化

- 代理服务器列表自动保存到本地数据库
- 下次打开自动恢复上次选择的代理服务器
- 测速结果自动保存

## 📁 项目结构

```
.
├── public/
│ ├── logo.png # 插件图标
│ ├── plugin.json # 插件配置文件
│ └── preload/ # Preload 脚本目录
│ ├── package.json # Preload 依赖配置
│ └── services.js # Node.js 能力扩展
├── src/
│ ├── main.ts # 入口文件
│ ├── main.css # 全局样式
│ ├── App.vue # 根组件
│ ├── env.d.ts # 类型声明
│ ├── Home/ # 首页组件(GitHub Proxy 功能)
│ │ └── index.vue
│ ├── Settings/ # 设置页组件(代理服务器管理)
│ │ └── index.vue
│ └── components/ # 公共组件
│ └── Header/ # 顶部导航组件
│ └── index.vue
├── index.html # HTML 模板
├── vite.config.js # Vite 配置
├── tsconfig.json # TypeScript 配置
├── package.json # 项目依赖
└── README.md # 项目文档
```

## 🚀 快速开始

### 安装依赖

```bash
npm install
```

### 开发模式

```bash
npm run dev
```

开发服务器将在 `http://localhost:5173` 启动。ZTools 会自动加载开发版本。

### 构建生产版本

```bash
npm run build
```

构建产物将输出到 `dist/` 目录。

## 📖 使用指南

### 插件入口

插件支持以下入口命令:

| 命令 | 功能 |
| -------------- | -------------------- |
| `download` | 打开插件并将输入的 URL 直接下载 |
| `copygitclone` | 打开插件并复制 Git Clone 命令 |

### 首页功能

1. **选择代理服务器**:从下拉框中选择可用的代理服务器
2. **输入 GitHub URL**:粘贴 GitHub 文件或仓库的 URL
3. **获取命令**:在下方选项卡中查看对应的命令
4. **复制命令**:点击复制按钮将命令复制到剪贴板
5. **直接下载**:点击下载按钮直接下载文件

### 设置页功能

1. **全部测速**:测试所有代理服务器的响应时间
2. **添加服务器**:添加新的代理服务器地址
3. **清理失效代理**:一键删除无法连接的代理服务器

## 🔧 开发指南

### 修改插件配置

编辑 `public/plugin.json` 文件:

```json
{
"name": "githubproxy",
"description": "GitHub 文件代理加速工具",
"author": "Your Name",
"version": "1.0.0",
"features": [
{
"code": "download",
"explain": "GitHub文件代理加速,下载文件"
},
{
"code": "copygitclone",
"explain": "GitHub文件代理加速,复制Git Clone地址"
}
]
}
```

### 使用 ZTools API

```vue
<script setup lang="ts">
// 显示通知
window.ztools.showNotification('操作成功')

// 数据库操作
await window.ztools.db.put({ _id: 'key', data: 'value' })
const result = await window.ztools.db.get('key')

// 调用下载服务
const savePath = await window.services.downloadFile(url, {
onProgress: (progress) => {
console.log(`下载进度: ${progress}%`)
}
})
</script>
```

### 调用 Preload 服务

```vue
<script setup lang="ts">
// 下载文件
const savePath = await window.services.downloadFile(proxyUrl, {
onProgress: (progress) => {
setDownloadProgress(progress)
}
})
</script>
```

## 📦 构建与发布

### 1. 构建插件

```bash
npm run build
```

### 2. 测试构建产物

将 `dist/` 目录中的所有文件复制到 ZTools 插件目录进行测试。

### 3. 发布到插件市场

1. 确保 `plugin.json` 中的信息完整准确
2. 准备好插件截图和详细说明
3. 访问 ZTools 插件市场提交插件

## 📚 相关资源

- [ZTools 官方文档](https://github.com/ztool-center/ztools)
- [ZTools API 文档](https://github.com/ztool-center/ztools-api-types)
- [Vue 3 文档](https://vuejs.org/)
- [Vite 文档](https://vitejs.dev/)
- [Element Plus 文档](https://element-plus.org/)

## ❓ 常见问题

### Q: 如何调试插件?

A: 使用 `npm run dev` 启动开发服务器,在插件界面中点击插件头像图标,在弹出的菜单中选择"打开开发者工具"进行调试。

### Q: 如何添加新的代理服务器?

A: 在插件设置页面点击"添加服务器"按钮,输入代理服务器地址即可。

### Q: 测速显示"连接超时"怎么办?

A: 说明该代理服务器可能已失效或无法访问,可以在设置页使用"清理失效代理"功能将其删除。

### Q: 下载功能无法使用?

A: 确保 ZTools 版本支持 `downloadFile` 服务,且插件已正确安装。

## 📄 开源协议

MIT License

***

**祝你使用愉快!** 🎉
11 changes: 11 additions & 0 deletions plugins/githubproxy/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
Loading