🚀 插件功能
@@ -1362,10 +1454,40 @@
}
}
+ // 显示快速开始指南
+ function showQuickStart() {
+ const guide = document.getElementById('quickStartGuide')
+ const overview = document.getElementById('apiOverview')
+ guide.style.display = 'block'
+ overview.style.display = 'none'
+ }
+
+ // 隐藏快速开始指南
+ function hideQuickStart() {
+ const guide = document.getElementById('quickStartGuide')
+ guide.style.display = 'none'
+ }
+
+ // 显示API概览
+ function showApiOverview() {
+ const guide = document.getElementById('quickStartGuide')
+ const overview = document.getElementById('apiOverview')
+ overview.style.display = 'block'
+ guide.style.display = 'none'
+ }
+
+ // 隐藏API概览
+ function hideApiOverview() {
+ const overview = document.getElementById('apiOverview')
+ overview.style.display = 'none'
+ }
+
// 控制台欢迎信息
console.log('%c🧩 GSM3 插件系统', 'color: #667eea; font-size: 20px; font-weight: bold;')
console.log('%c欢迎使用示例插件!', 'color: #764ba2; font-size: 14px;')
- console.log('插件开发文档: https://github.com/your-repo/gsm3-docs')
+ console.log('插件开发文档: 查看 ../插件开发文档.md')
+ console.log('API使用示例: 点击页面上的按钮体验各种功能')
+ console.log('快速开始: 复制此插件目录作为模板开始开发')
// 等待GSM3 API加载完成后进行健康检查
window.addEventListener('load', async () => {
diff --git a/server/data/plugins/example-plugin/plugin.json b/server/data/plugins/example-plugin/plugin.json
index 20fbc82..5f9d6d2 100644
--- a/server/data/plugins/example-plugin/plugin.json
+++ b/server/data/plugins/example-plugin/plugin.json
@@ -1,12 +1,15 @@
{
"name": "example-plugin",
"displayName": "示例插件",
- "description": "这是一个演示插件功能的示例插件,展示了如何创建自定义的Web界面。",
+ "description": "这是一个演示插件功能的示例插件,展示了如何创建自定义的Web界面。包含完整的API使用示例和开发文档。",
"version": "1.0.0",
"author": "GSM3团队",
"enabled": true,
"hasWebInterface": true,
"entryPoint": "index.html",
"icon": "puzzle",
- "category": "工具"
+ "category": "工具",
+ "documentation": "../插件开发文档.md",
+ "template": "../插件模板.md",
+ "keywords": ["示例", "开发", "API", "模板", "文档"]
}
\ No newline at end of file
diff --git a/server/data/plugins/插件开发文档.md b/server/data/plugins/插件开发文档.md
new file mode 100644
index 0000000..e111f28
--- /dev/null
+++ b/server/data/plugins/插件开发文档.md
@@ -0,0 +1,297 @@
+# GSM3 插件开发文档
+
+## 概述
+
+GSM3 插件系统允许开发者创建自定义的Web界面和功能扩展,通过标准化的API与GSM3核心系统进行交互。
+
+## 插件结构
+
+每个插件都应该包含以下文件:
+
+```
+plugin-name/
+├── plugin.json # 插件配置文件(必需)
+├── index.html # 主界面文件(可选)
+├── gsm3-api.js # API客户端库(推荐)
+└── assets/ # 静态资源目录(可选)
+ ├── css/
+ ├── js/
+ └── images/
+```
+
+## 配置文件 (plugin.json)
+
+插件配置文件定义了插件的基本信息和行为:
+
+```json
+{
+ "name": "plugin-name", // 插件唯一标识符
+ "displayName": "插件显示名称", // 用户界面显示的名称
+ "description": "插件功能描述", // 插件功能说明
+ "version": "1.0.0", // 插件版本号
+ "author": "开发者名称", // 插件作者
+ "enabled": true, // 是否启用插件
+ "hasWebInterface": true, // 是否有Web界面
+ "entryPoint": "index.html", // 主入口文件
+ "icon": "puzzle", // 图标名称
+ "category": "工具" // 插件分类
+}
+```
+
+### 配置字段说明
+
+- **name**: 插件的唯一标识符,只能包含字母、数字、连字符
+- **displayName**: 在用户界面中显示的插件名称
+- **description**: 插件功能的详细描述
+- **version**: 遵循语义化版本规范 (semver)
+- **author**: 插件开发者信息
+- **enabled**: 控制插件是否启用
+- **hasWebInterface**: 是否提供Web界面
+- **entryPoint**: Web界面的入口文件
+- **icon**: 插件图标(支持FontAwesome图标名称)
+- **category**: 插件分类,用于组织和筛选
+
+## API 使用
+
+### 引入API客户端
+
+在HTML文件中引入GSM3 API客户端:
+
+```html
+
+
+```
+
+### 可用API方法
+
+#### 系统信息API
+
+```javascript
+// 获取系统状态
+api.getSystemStatus().then(status => {
+ console.log('系统状态:', status);
+});
+
+// 获取系统信息
+api.getSystemInfo().then(info => {
+ console.log('系统信息:', info);
+});
+
+// 健康检查
+api.healthCheck().then(result => {
+ console.log('健康检查:', result);
+});
+```
+
+#### 实例管理API
+
+```javascript
+// 获取实例列表
+api.getInstances().then(instances => {
+ console.log('实例列表:', instances);
+});
+
+// 获取市场实例
+api.getMarketInstances().then(marketInstances => {
+ console.log('市场实例:', marketInstances);
+});
+
+// 创建实例
+api.createInstance({
+ name: '我的实例',
+ game: 'minecraft',
+ version: '1.20.1'
+}).then(result => {
+ console.log('创建结果:', result);
+});
+
+// 获取实例详情
+api.getInstance('instance-id').then(instance => {
+ console.log('实例详情:', instance);
+});
+
+// 启动实例
+api.startInstance('instance-id').then(result => {
+ console.log('启动结果:', result);
+});
+
+// 停止实例
+api.stopInstance('instance-id').then(result => {
+ console.log('停止结果:', result);
+});
+
+// 重启实例
+api.restartInstance('instance-id').then(result => {
+ console.log('重启结果:', result);
+});
+
+// 删除实例
+api.deleteInstance('instance-id').then(result => {
+ console.log('删除结果:', result);
+});
+```
+
+#### 终端管理API
+
+```javascript
+// 获取终端列表
+api.getTerminals().then(terminals => {
+ console.log('终端列表:', terminals);
+});
+
+// 获取终端统计信息
+api.getTerminalStats().then(stats => {
+ console.log('终端统计:', stats);
+});
+
+// 获取终端会话
+api.getTerminalSessions().then(sessions => {
+ console.log('终端会话:', sessions);
+});
+
+// 获取活跃终端进程
+api.getActiveTerminalProcesses().then(processes => {
+ console.log('活跃进程:', processes);
+});
+
+// 更新终端会话名称
+api.updateTerminalSessionName('session-id', '新名称').then(result => {
+ console.log('更新结果:', result);
+});
+```
+
+#### 文件操作API
+
+```javascript
+// 读取文件
+api.readFile('/path/to/file.txt').then(content => {
+ console.log('文件内容:', content);
+});
+
+// 写入文件
+api.writeFile('/path/to/file.txt', '文件内容').then(result => {
+ console.log('写入结果:', result);
+});
+
+// 列出目录
+api.listDirectory('/path/to/directory').then(files => {
+ console.log('目录内容:', files);
+});
+
+// 创建目录
+api.createDirectory('/path/to/new/directory').then(result => {
+ console.log('创建结果:', result);
+});
+
+// 删除文件
+api.deleteFile('/path/to/file.txt').then(result => {
+ console.log('删除结果:', result);
+});
+
+// 复制文件
+api.copy('/source/path', '/destination/path').then(result => {
+ console.log('复制结果:', result);
+});
+
+// 移动文件
+api.move('/source/path', '/destination/path').then(result => {
+ console.log('移动结果:', result);
+});
+```
+
+#### 游戏管理API
+
+```javascript
+// 获取支持的游戏列表
+api.getGames().then(games => {
+ console.log('游戏列表:', games);
+});
+```
+
+## 开发最佳实践
+
+### 1. 错误处理
+
+始终为API调用添加错误处理:
+
+```javascript
+api.getInstances()
+ .then(instances => {
+ // 处理成功响应
+ console.log('获取实例成功:', instances);
+ })
+ .catch(error => {
+ // 处理错误
+ console.error('获取实例失败:', error);
+ alert('操作失败: ' + error.message);
+ });
+```
+
+### 2. 用户界面设计
+
+- 使用响应式设计,确保在不同屏幕尺寸下都能正常显示
+- 提供清晰的操作反馈和状态指示
+- 遵循GSM3的设计风格和色彩方案
+
+### 3. 性能优化
+
+- 避免频繁的API调用
+- 使用适当的缓存策略
+- 对大量数据进行分页处理
+
+### 4. 安全考虑
+
+- 验证用户输入
+- 避免执行不安全的操作
+- 遵循最小权限原则
+
+## 调试和测试
+
+### 开发模式
+
+在开发过程中,可以通过浏览器的开发者工具查看API调用和响应:
+
+1. 打开浏览器开发者工具 (F12)
+2. 切换到Network标签页
+3. 执行插件操作,观察API请求和响应
+
+### 日志记录
+
+使用console.log记录关键信息:
+
+```javascript
+console.log('插件初始化完成');
+console.log('API调用参数:', params);
+console.log('API响应结果:', result);
+```
+
+## 示例插件
+
+参考 `example-plugin` 目录中的示例代码,了解完整的插件实现。
+
+## 常见问题
+
+### Q: 如何处理API认证?
+A: GSM3 API客户端会自动处理认证,无需手动管理token。
+
+### Q: 插件如何与主系统通信?
+A: 通过提供的API方法进行通信,所有操作都通过HTTP请求完成。
+
+### Q: 可以访问文件系统吗?
+A: 可以通过文件操作API访问指定目录下的文件,但有安全限制。
+
+### Q: 如何更新插件?
+A: 修改插件文件后,重新加载插件页面即可看到更新。
+
+## 技术支持
+
+如有问题,请联系GSM3开发团队或查看项目文档。
\ No newline at end of file
diff --git a/server/data/plugins/插件模板.md b/server/data/plugins/插件模板.md
new file mode 100644
index 0000000..4761f30
--- /dev/null
+++ b/server/data/plugins/插件模板.md
@@ -0,0 +1,259 @@
+# GSM3 插件模板
+
+这是一个简化的插件模板,帮助您快速开始插件开发。
+
+## 基础模板结构
+
+```
+my-plugin/
+├── plugin.json # 插件配置文件
+├── index.html # 主界面文件
+└── gsm3-api.js # API客户端库(从示例插件复制)
+```
+
+## 1. 创建 plugin.json
+
+```json
+{
+ "name": "my-plugin",
+ "displayName": "我的插件",
+ "description": "这是我的第一个GSM3插件",
+ "version": "1.0.0",
+ "author": "您的名字",
+ "enabled": true,
+ "hasWebInterface": true,
+ "entryPoint": "index.html",
+ "icon": "cog",
+ "category": "工具"
+}
+```
+
+## 2. 创建 index.html
+
+```html
+
+
+
+
+
+
我的插件 - GSM3
+
+
+
+
+
+
+
+
+
功能演示
+
点击下面的按钮测试插件功能:
+
+
+
+
+
+
+ 点击按钮查看结果...
+
+
+
+
+
开发说明
+
这是一个基础的插件模板,您可以:
+
+ - 修改界面样式和布局
+ - 添加更多功能按钮
+ - 调用更多GSM3 API
+ - 集成第三方服务
+
+
+
+
+
+
+
+```
+
+## 3. 复制API文件
+
+从示例插件目录复制 `gsm3-api.js` 文件到您的插件目录。
+
+## 4. 测试插件
+
+1. 将插件目录放置在 `server/data/plugins/` 下
+2. 重新加载GSM3面板
+3. 在插件列表中找到您的插件
+4. 点击进入插件页面
+
+## 5. 自定义开发
+
+### 修改样式
+
+在 `