diff --git a/DISCLAIMER.md b/DISCLAIMER.md index 59aca48f..6ff544f8 100644 --- a/DISCLAIMER.md +++ b/DISCLAIMER.md @@ -14,4 +14,4 @@ 7. 任何单位或个人不得在未经本人书面授权的情况下对本项目本身申请相关的知识产权。 8. 如果本声明的任何部分被认为无效或不可执行,则该部分将被解释为反映本人的初衷,其余部分仍具有完全效力。不可执行的部分声明,并不构成我们放弃执行该声明的权利。 9. 本人有权随时对本声明条款及附件内容进行单方面的变更,并以消息推送、网页公告等方式予以公布,公布后立即自动生效,无需另行单独通知;若您在本声明内容公告变更后继续使用的,表示您已充分阅读、理解并接受修改后的声明内容。 -10. 本人对本声明拥有最终解释权。 +10. 本人保留对本声明的最终解释权。 diff --git a/README.md b/README.md index ee537e6b..9dad2332 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ `orion-ops-pro` -是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、Web终端、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。它是基于 `orion-ops` -的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷更友好。 +是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、WebShell、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。

@@ -22,45 +21,43 @@ fork - +

-
+当前版本: **1.0.5** -当前版本: **1.0.4** -github: https://github.com/lijiahangmax/orion-ops-pro -gitee: https://gitee.com/lijiahangmax/orion-ops-pro -文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/ -demo: http://101.43.254.243:1081/ +**github:** https://github.com/lijiahangmax/orion-ops-pro +**gitee:** https://gitee.com/lijiahangmax/orion-ops-pro +**文档:** https://lijiahangmax.gitee.io/orion-ops-pro/#/ +**demo:** http://101.43.254.243:1081/ 演示账号: `admin` 演示密码: `admin` -⭐ 体验后可以点一下 `star` 这对我很重要 -📞 合作/功能定制请联系底部 备注: '定制' +⭐ 体验后可以点一下 `star` 这对我很重要! +🌈 如果本项目对你有帮助请帮忙推广一下 让更多的人知道此项目! +📞 合作/功能定制请联系底部 备注: '合作' ## 特性 -* 易用便捷: 极简配置, 开箱即用, 支持 Docker 部署方式。 -* 资产管理: 支持灵活配置主机分组, 实现对主机、秘钥和身份的统一管理。 -* 资产授权: 可将资产数据授权给指定角色和用户, 确保数据安全性。 -* 权限控制: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。 -* 在线终端: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。 -* 文件管理: 实现远程主机大文件的批量上传、下载和在线编辑等操作。 -* 批量操作: 支持远程主机批量执行 shell 命令。 -* 计划任务: 支持配置 cron 表达式, 定时执行主机 shell 命令。 -* 操作日志: 记录用户操作日志,确保操作可追溯, 提高系统安全性。 -* 可扩展性: 前后端代码规范统一、代码质量高、健壮且易于阅读和扩展。 +* **快速稳定**: 使用全新的系统架构, 提高系统性能以及稳定性。 +* **交互友好**: 对与用户的交互进行了细致化的打磨, 操作更加方便快捷。 +* **资产管理**: 支持对资产进行分组, 实现对主机、秘钥和身份的统一管理和授权。 +* **权限控制**: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。 +* **在线终端**: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。 +* **文件管理**: 实现远程主机大文件的批量上传、下载和在线编辑等操作。 +* **批量操作**: 支持远程主机批量执行主机命令。 +* **计划任务**: 支持配置 cron 表达式, 定时执行主机命令。 +* **操作审计**: 记录用户操作日志,确保操作可追溯, 提高系统安全性。 ## 快速开始 -docker安装: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install -安装文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install -开发文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/advance/dev -操作手册: https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset -常见问题: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq -roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap +* [docker安装](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install) +* [普通安装](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install) +* [更新日志](https://lijiahangmax.gitee.io/orion-ops-pro/#/about/change-log) +* [操作手册](https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset) +* [常见问题](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq) ## 技术栈 @@ -71,49 +68,32 @@ roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap * Vue3 * Arco Design -## 功能预览 - -> 工作台 - -![工作台](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/13d79a89-aadf-4100-8bb3-afb03758001f.png "工作台") - -> 资产管理 - -![主机列表](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/d9954335-9afa-4579-b040-a1c3006cb1f0.png "主机列表") -![资产授权](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/ffbdd0e2-4811-4776-a96c-7b5d9b4f3e89.png "资产授权") +## 主要功能预览 > 主机终端 -![主机终端](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/de6ae2bb-3d9a-44d6-b530-664febee7dbc.png "主机终端") -![命令片段](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/0a2a8077-fb47-4c87-8327-9d6b93ecc552.png "命令片段") +![新建连接](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/20/fb90febf-b1aa-45d4-a6f8-ed681dd259b2.png "新建连接") +![主机终端](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/20/8055df25-82d5-434d-8846-78afb2ee4638.png "主机终端") +![sftp](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/20/b7f2b644-a3d8-4562-8d05-d860805fb815.png "sftp") ![主题设置](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/20741d51-af62-40f0-bd6f-6e954d9b0398.png "主题设置") ![终端设置](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/a3bf32bc-26b5-4ec7-b429-54c17ccd136b.png "终端设置") -![sftp](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/0ae07072-1740-4f84-aaf7-c18a8074ce61.png "sftp") -![传输列表](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/ccf880a4-c393-4a35-9f35-fe7572256edd.png "传输列表") > 批量执行 -![批量执行](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/0a222b64-d2c1-481c-99b8-c3a0616d2fab.png "批量执行") +![批量执行](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/20/197804f2-cb69-4ebb-b1e1-b52372972301.png "批量执行") ![执行日志](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/06d02d38-70ef-43c2-950c-9f8c73a105ba.png "执行日志") ![执行记录](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/0e474cc2-f7cf-49bc-be3c-f6445783ad7c.png "执行记录") > 计划任务 ![计划任务](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/15/ba5c0635-50c1-4c43-8062-3470ad33830e.png "计划任务") -![计划任务编辑](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/15/03176f22-0e21-4a07-8511-7b08211594d6.png "计划任务编辑") -![计划任务日志](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/15/1528c6a2-4813-4c3c-aa7b-f13a979065ba.png "计划任务日志") +![计划任务编辑](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/4/20/b6ba7ec0-011f-48ff-a36e-c8d93bd1f75c.png "计划任务编辑") > 用户管理 -![用户列表](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/0d5f26e0-de4e-4342-800c-30a0d5d3078e.png "用户列表") ![个人中心](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/ed1e5e02-f854-44ee-bb37-ea6e45526457.png "个人中心") ![操作日志](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/ba6f1526-da00-4a3d-a550-470a6b3d2803.png "操作日志") -> 系统管理 - -![系统菜单](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/5087cd35-6a65-4338-bc87-c81969cdb947.png "系统菜单") -![分配菜单](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/5a7804ed-179c-4d25-820f-af2af1aabbba.png "分配菜单") - ## 联系我
diff --git a/docker-compose.yml b/docker-compose.yml index be79e6a6..28984ec5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.3' services: orion-ops-pro: - image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-ops-pro:1.0.4 + image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-ops-pro:1.0.5 ports: - 1081:80 environment: diff --git a/docker/orion-ops-pro/build.sh b/docker/orion-ops-pro/build.sh index 33ce7019..221d537d 100644 --- a/docker/orion-ops-pro/build.sh +++ b/docker/orion-ops-pro/build.sh @@ -1,3 +1,3 @@ mv ../../orion-ops-launch/target/orion-ops-launch.jar ./ mv ../../orion-ops-ui/dist ./dist -docker build -t orion-ops-pro:1.0.4 . +docker build -t orion-ops-pro:1.0.5 . diff --git a/docs/DISCLAIMER.md b/docs/DISCLAIMER.md index 59aca48f..6ff544f8 100644 --- a/docs/DISCLAIMER.md +++ b/docs/DISCLAIMER.md @@ -14,4 +14,4 @@ 7. 任何单位或个人不得在未经本人书面授权的情况下对本项目本身申请相关的知识产权。 8. 如果本声明的任何部分被认为无效或不可执行,则该部分将被解释为反映本人的初衷,其余部分仍具有完全效力。不可执行的部分声明,并不构成我们放弃执行该声明的权利。 9. 本人有权随时对本声明条款及附件内容进行单方面的变更,并以消息推送、网页公告等方式予以公布,公布后立即自动生效,无需另行单独通知;若您在本声明内容公告变更后继续使用的,表示您已充分阅读、理解并接受修改后的声明内容。 -10. 本人对本声明拥有最终解释权。 +10. 本人保留对本声明的最终解释权。 diff --git a/docs/README.md b/docs/README.md index 6f271ea7..077e072f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,8 +3,7 @@ `orion-ops-pro` -是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、Web终端、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。它是基于 `orion-ops` -的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷更友好。 +是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、WebShell、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。

@@ -22,45 +21,43 @@ fork - +

-
+当前版本: **1.0.5** -当前版本: **1.0.4** -github: https://github.com/lijiahangmax/orion-ops-pro -gitee: https://gitee.com/lijiahangmax/orion-ops-pro -文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/ -demo: http://101.43.254.243:1081/ +**github:** https://github.com/lijiahangmax/orion-ops-pro +**gitee:** https://gitee.com/lijiahangmax/orion-ops-pro +**文档:** https://lijiahangmax.gitee.io/orion-ops-pro/#/ +**demo:** http://101.43.254.243:1081/ 演示账号: `admin` 演示密码: `admin` -⭐ 体验后可以点一下 `star` 这对我很重要 +⭐ 体验后可以点一下 `star` 这对我很重要! +🌈 如果本项目对你有帮助请帮忙推广一下 让更多的人知道此项目! 📞 合作/功能定制请联系底部 备注: '合作' ## 特性 -* 易用便捷: 极简配置, 开箱即用, 支持 Docker 部署方式。 -* 资产管理: 支持灵活配置主机分组, 实现对主机、秘钥和身份的统一管理。 -* 资产授权: 可将资产数据授权给指定角色和用户, 确保数据安全性。 -* 权限控制: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。 -* 在线终端: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。 -* 文件管理: 实现远程主机大文件的批量上传、下载和在线编辑等操作。 -* 批量操作: 支持远程主机批量执行 shell 命令。 -* 计划任务: 支持配置 cron 表达式, 定时执行主机 shell 命令。 -* 操作日志: 记录用户操作日志,确保操作可追溯, 提高系统安全性。 -* 可扩展性: 前后端代码规范统一、代码质量高、健壮且易于阅读和扩展。 +* **快速稳定**: 使用全新的系统架构, 提高系统性能以及稳定性。 +* **交互友好**: 对与用户的交互进行了细致化的打磨, 操作更加方便快捷。 +* **资产管理**: 支持对资产进行分组, 实现对主机、秘钥和身份的统一管理和授权。 +* **权限控制**: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。 +* **在线终端**: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。 +* **文件管理**: 实现远程主机大文件的批量上传、下载和在线编辑等操作。 +* **批量操作**: 支持远程主机批量执行主机命令。 +* **计划任务**: 支持配置 cron 表达式, 定时执行主机命令。 +* **操作审计**: 记录用户操作日志,确保操作可追溯, 提高系统安全性。 ## 快速开始 -docker安装: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install -安装文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install -开发文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/advance/dev -操作手册: https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset -常见问题: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq -roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap +* [docker安装](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install) +* [普通安装](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install) +* [更新日志](https://lijiahangmax.gitee.io/orion-ops-pro/#/about/change-log) +* [操作手册](https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset) +* [常见问题](https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq) ## 技术栈 @@ -71,25 +68,15 @@ roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap * Vue3 * Arco Design -## 功能预览 - -> 工作台 - -![工作台](./assert/img/workplace.png "工作台") - -> 资产管理 - -![主机列表](./assert/img/asset_host_list.png "主机列表") -![资产授权](./assert/img/asset_grant.png "资产授权") +## 主要功能预览 > 主机终端 +![新建连接](./assert/img/terminal_collections.png "新建连接") ![主机终端](./assert/img/terminal_ssh.png "主机终端") -![命令片段](./assert/img/terminal_snippet.png "命令片段") +![sftp](./assert/img/terminal_sftp.png "sftp") ![主题设置](./assert/img/terminal_theme.png "主题设置") ![终端设置](./assert/img/terminal_setting.png "终端设置") -![sftp](./assert/img/terminal_sftp.png "sftp") -![传输列表](./assert/img/terminal_transfer.png "传输列表") > 批量执行 @@ -101,19 +88,12 @@ roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap ![计划任务](./assert/img/exec_job.png "计划任务") ![计划任务编辑](./assert/img/exec_job_edit.png "计划任务编辑") -![计划任务日志](./assert/img/exec_job_log.png "计划任务日志") > 用户管理 -![用户列表](./assert/img/user_list.png "用户列表") ![个人中心](./assert/img/user_info.png "个人中心") ![操作日志](./assert/img/user_operator_log.png "操作日志") -> 系统管理 - -![系统菜单](./assert/img/system_menu.png "系统菜单") -![分配菜单](./assert/img/user_grant_menu.png "分配菜单") - ## 联系我
diff --git a/docs/_coverpage.md b/docs/_coverpage.md index 2435784f..6e1bdafe 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,4 +1,4 @@ -# orion-ops-pro 1.0.4 +# orion-ops-pro 1.0.5 > 一款开箱即用的运维平台。 diff --git a/docs/about/change-log.md b/docs/about/change-log.md index 9ce8c8b5..0a958145 100644 --- a/docs/about/change-log.md +++ b/docs/about/change-log.md @@ -1,6 +1,32 @@ > 版本号严格遵循 Semver 规范。 -⚡ 注意: 应用不支持跨版本升级, 可以进行多次升级 +* ⚡ **sql 脚本可以在 adminer 中执行。** +* ⚡ **应用不支持跨版本升级, 可以进行多次升级。** + +## v1.0.5 + +`2024-04-22` `release` + +* 🐞 修复 用户列表用户名显示错误 +* 🐞 修复 主机分组页面无法编辑的问题 +* 🐞 修复 资产授权时提示数据发生变更的问题 +* 🐞 修复 删除资产时授权记录未删除的问题 +* 🐞 修复 命令执行权限控制失效的问题 +* 🌈 新增 定时删除未引用的 `tag` +* 🌈 新增 执行命令时可使用脚本文件执行 +* 🌈 新增 主机身份添加类型字段 +* 🔨 优化 文件传输列表进度显示 +* 🔨 优化 命令执行日志持续时间 +* 🔨 优化 命令执行添加内置参数 +* 🔨 优化 tracker 监听文件可配置 `app.tracker` +* 🔨 优化 sftp 上传文件重复处理可配置 `app.sftp` +* 🔨 优化 用户状态调整交互逻辑 +* 🔨 优化 角色状态调整交互逻辑 +* 🔨 优化 优化资产授权交互逻辑 +* 🔨 优化 SFTP 交互逻辑 +* 🧹 删除 用户锁定状态 + +[如何升级](/update/v1.0.5.md) ## v1.0.4 @@ -69,7 +95,7 @@ * 🌈 新增 主机连接日志删除/清理 * 🌈 新增 用户操作日志日志删除/清理 * 🌈 新增 用户操作日志日志删除/清理 -* 🔨 优化 用户锁定次数/时间可配置 +* 🔨 优化 用户锁定次数/时间可配置 `app.authentication` [如何升级](/update/v1.0.1.md) diff --git a/docs/about/roadmap.md b/docs/about/roadmap.md index 07fcbefc..429fbf22 100644 --- a/docs/about/roadmap.md +++ b/docs/about/roadmap.md @@ -1,24 +1,18 @@ -## 功能排期 ⏳ +## 功能排期 -* tracker 使用配置文件 -* 文件重复删除/重命名 可配置 -* 定时删除未引用的 tag -* 管理员也需要自行授权资产 -* 使用文件执行命令 -* 主机身份类型 -* 文件夹书签 +* 默认主机 * 批量上传 -* 优化文件传输列表进度显示 -* 终端断开连接后回车重新连接 +* 文件夹书签 * 站内消息 * 终端背景图片 * 资产授权 UI 改版 * RDP 远程桌面 * 接入 config 后端动态配置 * 文档中巡检模板 -* 批量执行 模板 定时任务 配置是否使用文件执行 +* 导入快捷命令 +* 导入命令模板 * 使用 vite press 开发文档 -## 已知问题 🐞 +## 已知问题 * 顶部菜单折叠宽度计算有问题 (arco 框架内问题) diff --git a/docs/assert/img/asset_grant.png b/docs/assert/img/asset_grant.png deleted file mode 100644 index d3e025d1..00000000 Binary files a/docs/assert/img/asset_grant.png and /dev/null differ diff --git a/docs/assert/img/asset_host_list.png b/docs/assert/img/asset_host_list.png deleted file mode 100644 index a647a8b1..00000000 Binary files a/docs/assert/img/asset_host_list.png and /dev/null differ diff --git a/docs/assert/img/batch_exec.png b/docs/assert/img/batch_exec.png index 3194ad0f..18bc5899 100644 Binary files a/docs/assert/img/batch_exec.png and b/docs/assert/img/batch_exec.png differ diff --git a/docs/assert/img/exec_job_edit.png b/docs/assert/img/exec_job_edit.png index 53f5f392..525c4c20 100644 Binary files a/docs/assert/img/exec_job_edit.png and b/docs/assert/img/exec_job_edit.png differ diff --git a/docs/assert/img/exec_job_log.png b/docs/assert/img/exec_job_log.png deleted file mode 100644 index 457f7234..00000000 Binary files a/docs/assert/img/exec_job_log.png and /dev/null differ diff --git a/docs/assert/img/system_menu.png b/docs/assert/img/system_menu.png deleted file mode 100644 index 20e3f594..00000000 Binary files a/docs/assert/img/system_menu.png and /dev/null differ diff --git a/docs/assert/img/terminal_collections.png b/docs/assert/img/terminal_collections.png new file mode 100644 index 00000000..362df238 Binary files /dev/null and b/docs/assert/img/terminal_collections.png differ diff --git a/docs/assert/img/terminal_sftp.png b/docs/assert/img/terminal_sftp.png index ae452f80..eb0f931c 100644 Binary files a/docs/assert/img/terminal_sftp.png and b/docs/assert/img/terminal_sftp.png differ diff --git a/docs/assert/img/terminal_snippet.png b/docs/assert/img/terminal_snippet.png deleted file mode 100644 index bb4afee6..00000000 Binary files a/docs/assert/img/terminal_snippet.png and /dev/null differ diff --git a/docs/assert/img/terminal_ssh.png b/docs/assert/img/terminal_ssh.png index 1b4661dd..8923cf3f 100644 Binary files a/docs/assert/img/terminal_ssh.png and b/docs/assert/img/terminal_ssh.png differ diff --git a/docs/assert/img/terminal_transfer.png b/docs/assert/img/terminal_transfer.png deleted file mode 100644 index be85b875..00000000 Binary files a/docs/assert/img/terminal_transfer.png and /dev/null differ diff --git a/docs/assert/img/user_grant_menu.png b/docs/assert/img/user_grant_menu.png deleted file mode 100644 index ac67e722..00000000 Binary files a/docs/assert/img/user_grant_menu.png and /dev/null differ diff --git a/docs/assert/img/user_list.png b/docs/assert/img/user_list.png deleted file mode 100644 index 3c040919..00000000 Binary files a/docs/assert/img/user_list.png and /dev/null differ diff --git a/docs/assert/img/workplace.png b/docs/assert/img/workplace.png deleted file mode 100644 index 7547b4f5..00000000 Binary files a/docs/assert/img/workplace.png and /dev/null differ diff --git a/docs/operator/exec.md b/docs/operator/exec.md index b79178e0..4a474498 100644 --- a/docs/operator/exec.md +++ b/docs/operator/exec.md @@ -75,13 +75,19 @@ | source | 执行来源 (BATCH/JOB) | | sourceId | 执行来源id (JOB特有) | | seq | 执行序列 (JOB特有) | +| userId | 执行用户id | +| username | 执行用户名 | | execId | 执行记录id | | hostId | 执行主机id | | hostName | 执行主机名称 | | hostCode | 执行主机编码 | | hostAddress | 执行主机地址 | -| userId | 执行用户id | -| username | 执行用户名 | +| hostUsername | 执行主机用户名 | +| osType | 执行主机系统版本 | +| port | SSH 端口 | +| charset | SSH 编码集 | +| scriptExec | 是否使用脚本执行 | +| scriptPath | 脚本文件路径 | | uuid | 生成任务维度 uuid | | uuidShort | 生成任务维度 uuid 无 '-' | | hostUuid | 生成机器维度 uuid | diff --git a/docs/quickstart/faq.md b/docs/quickstart/faq.md index 62675c14..c7a21698 100644 --- a/docs/quickstart/faq.md +++ b/docs/quickstart/faq.md @@ -6,7 +6,6 @@ > ##### 2. 是否支持维护 Windows 主机? 支持, 但是 Windows 的 ssh 命令兼容性不好, 一切需要执行ssh命令的地方都不友好 -如: 批量执行, 调度任务兼容性非常不友好 > ##### 3. 执行命令时为什么会找不到环境变量? diff --git a/docs/update/v1.0.5.md b/docs/update/v1.0.5.md index 12cda601..fb693977 100644 --- a/docs/update/v1.0.5.md +++ b/docs/update/v1.0.5.md @@ -3,9 +3,55 @@ > sql 脚本 - DDL ```sql +ALTER TABLE `system_user` +MODIFY COLUMN `status` tinyint(0) NULL DEFAULT 1 COMMENT '用户状态 0停用 1启用' AFTER `email`; + +ALTER TABLE `host_identity` +ADD COLUMN `type` char(12) NULL COMMENT '类型' AFTER `name`; + +ALTER TABLE `exec_log` +ADD COLUMN `script_exec` tinyint(0) NULL DEFAULT 0 COMMENT '是否使用脚本执行' AFTER `timeout`; + +ALTER TABLE `exec_job` +ADD COLUMN `script_exec` tinyint(0) NULL DEFAULT 0 COMMENT '是否使用脚本执行' AFTER `timeout`; + +ALTER TABLE `exec_template` +ADD COLUMN `script_exec` tinyint(0) NULL DEFAULT 0 COMMENT '是否使用脚本执行' AFTER `timeout`; + +ALTER TABLE `exec_host_log` +ADD COLUMN `script_path` varchar(512) NULL COMMENT '脚本路径' AFTER `log_path`; ``` > sql 脚本 - DML ```sql +-- 初始化主机身份类型 +UPDATE `host_identity` SET type = IF(key_id IS NOT NULL, 'KEY', 'PASSWORD'); +-- 重新设置用户状态 +UPDATE `system_user` SET status = 0 WHERE status = 2; +DELETE FROM `dict_value` WHERE id = 19; +-- 设置主机配置中的 osType +UPDATE host_config SET config = JSON_SET(config, '$.osType', 'LINUX') WHERE type = 'ssh' AND deleted = 0; +-- 重新设置额外数据 +UPDATE data_extra alias +LEFT JOIN data_extra color +ON alias.user_id = color.user_id +AND alias.rel_id = color.rel_id +AND alias.type= color.type +AND color.item = 'color' +SET alias.item = 'label', +alias.value = JSON_OBJECT('alias', JSON_EXTRACT(alias.value, '$.value'), 'color', JSON_EXTRACT(color.value, '$.color')) +WHERE alias.item = 'alias'; +-- 删除 color 数据 +DELETE FROM data_extra WHERE type = 'HOST' AND item = 'color'; +-- 初始化字典项 +DELETE FROM dict_key WHERE id >= 37; +INSERT INTO `dict_key` VALUES (37, 'hostIdentityType', 'STRING', '[{\"name\": \"color\", \"type\": \"COLOR\"}]', '主机身份类型', '2024-04-16 17:15:31', '2024-04-16 17:15:31', '2', '2', 0); +INSERT INTO `dict_key` VALUES (38, 'hostSshOsType', 'STRING', '[]', '主机系统类型', '2024-04-16 22:18:59', '2024-04-16 22:30:59', '1', '1', 0); +-- 初始化字典值 +DELETE FROM dict_value WHERE id >= 270; +INSERT INTO `dict_value` VALUES (270, 37, 'hostIdentityType', 'PASSWORD', '密码', '{\"color\": \"purple\"}', 10, '2024-04-16 17:17:49', '2024-04-16 17:17:49', '2', '2', 0); +INSERT INTO `dict_value` VALUES (271, 37, 'hostIdentityType', 'KEY', '秘钥', '{\"color\": \"arcoblue\"}', 20, '2024-04-16 17:18:12', '2024-04-16 17:18:12', '2', '2', 0); +INSERT INTO `dict_value` VALUES (272, 38, 'hostSshOsType', 'LINUX', 'linux', '{}', 10, '2024-04-16 22:19:25', '2024-04-16 22:30:59', '1', '1', 0); +INSERT INTO `dict_value` VALUES (273, 38, 'hostSshOsType', 'WINDOWS', 'windows', '{}', 20, '2024-04-16 22:19:39', '2024-04-16 22:30:59', '1', '1', 0); ``` diff --git a/docs/update/v1.0.6.md b/docs/update/v1.0.6.md new file mode 100644 index 00000000..c1a85c78 --- /dev/null +++ b/docs/update/v1.0.6.md @@ -0,0 +1,11 @@ +## v1.0.6 + +> sql 脚本 - DDL + +```sql +``` + +> sql 脚本 - DML + +```sql +``` diff --git a/orion-ops-dependencies/pom.xml b/orion-ops-dependencies/pom.xml index 38b9fa09..10ea452d 100644 --- a/orion-ops-dependencies/pom.xml +++ b/orion-ops-dependencies/pom.xml @@ -14,7 +14,7 @@ https://github.com/lijiahangmax/orion-ops-pro - 1.0.4 + 1.0.5 2.7.17 2.7.15 1.5.0 diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/OrionOpsProConst.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/AppConst.java similarity index 72% rename from orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/OrionOpsProConst.java rename to orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/AppConst.java index fb62af59..4b1eb8f7 100644 --- a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/OrionOpsProConst.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/AppConst.java @@ -1,5 +1,7 @@ package com.orion.ops.framework.common.constant; +import com.orion.lang.constant.OrionConst; + /** * 项目常量 * @@ -7,12 +9,14 @@ package com.orion.ops.framework.common.constant; * @version 1.0.0 * @since 2023/6/19 18:56 */ -public interface OrionOpsProConst { +public interface AppConst extends OrionConst { /** * 同 ${orion.version} 迭代时候需要手动更改 */ - String VERSION = "1.0.4"; + String VERSION = "1.0.5"; + + String ORION_OPS_PRO = "orion-ops-pro"; String GITHUB = "https://github.com/lijiahangmax/orion-ops-pro"; diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/Const.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/Const.java index 63e72e96..9aa812d8 100644 --- a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/Const.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/Const.java @@ -35,6 +35,4 @@ public interface Const extends com.orion.lang.constant.Const, FieldConst, CnCons String SYSTEM_USERNAME = "system"; - String ERROR_LOG = "error.log"; - } diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorCode.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorCode.java index ab3e9944..06c91935 100644 --- a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorCode.java +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/ErrorCode.java @@ -38,7 +38,7 @@ public enum ErrorCode implements CodeInfo { PAYLOAD_TOO_LARGE(413, "请求过大"), - LOCKED(423, "当前已被锁定"), + LOCKED(423, "当前操作已被锁定"), TOO_MANY_REQUESTS(429, "请求过快"), @@ -48,11 +48,9 @@ public enum ErrorCode implements CodeInfo { USER_DISABLED(700, "当前用户已禁用"), - USER_LOCKED(701, "当前用户已被锁定"), + USER_OTHER_DEVICE_LOGIN(701, "该账号于 {} 已在其他设备登录 {}({})"), - OTHER_DEVICE_LOGIN(702, "该账号于 {} 已在其他设备登录 {}({})"), - - SESSION_OFFLINE(703, "该账号于 {} 已被强制下线 {}({})"), + USER_OFFLINE(702, "该账号于 {} 已被强制下线 {}({})"), // -------------------- 自定义 - 通用 -------------------- diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/PathConst.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/PathConst.java new file mode 100644 index 00000000..05f79581 --- /dev/null +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/constant/PathConst.java @@ -0,0 +1,18 @@ +package com.orion.ops.framework.common.constant; + +/** + * 路径常量 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024/4/17 10:35 + */ +public interface PathConst { + + String ERROR_LOG = "error.log"; + + String EXEC = "exec"; + + String SCRIPT = "script"; + +} diff --git a/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/utils/PathUtils.java b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/utils/PathUtils.java new file mode 100644 index 00000000..491bdf09 --- /dev/null +++ b/orion-ops-framework/orion-ops-framework-common/src/main/java/com/orion/ops/framework/common/utils/PathUtils.java @@ -0,0 +1,70 @@ +package com.orion.ops.framework.common.utils; + +import com.orion.lang.utils.Objects1; +import com.orion.ops.framework.common.constant.AppConst; +import com.orion.ops.framework.common.constant.Const; + +/** + * 路径工具类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2024/4/17 10:28 + */ +public class PathUtils { + + private PathUtils() { + } + + /** + * 获取用户根目录 + * + * @param isWindows isWindows + * @param username 用户名 + * @return 用户目录 + */ + public static String getHomePath(boolean isWindows, String username) { + if (isWindows) { + // windows + return "C:/Users/" + username; + } else { + // linux + if (Const.ROOT.equals(username)) { + return "/" + Const.ROOT; + } else { + return "/home/" + username; + } + } + } + + + /** + * 获取应用路径 + * + * @param isWindows isWindows + * @param username username + * @return path + */ + public static String getAppPath(boolean isWindows, String username) { + return getHomePath(isWindows, username) + + "/" + AppConst.ORION + + "/" + AppConst.ORION_OPS_PRO; + } + + /** + * 构建应用路径 + * + * @param isWindows isWindows, + * @param username username + * @param paths paths + * @return path + */ + public static String buildAppPath(boolean isWindows, String username, Object... paths) { + StringBuilder path = new StringBuilder(getAppPath(isWindows, username)); + for (Object o : paths) { + path.append("/").append(Objects1.toString(o)); + } + return path.toString(); + } + +} diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/core/CodeGeneratorEngine.java b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/core/CodeGeneratorEngine.java index 3e6d1506..374a1385 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/core/CodeGeneratorEngine.java +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/core/generator/core/CodeGeneratorEngine.java @@ -10,7 +10,7 @@ import com.orion.lang.utils.io.Files1; import com.orion.lang.utils.reflect.BeanMap; import com.orion.lang.utils.reflect.Fields; import com.orion.ops.framework.common.constant.Const; -import com.orion.ops.framework.common.constant.OrionOpsProConst; +import com.orion.ops.framework.common.constant.AppConst; import com.orion.ops.framework.mybatis.core.generator.template.Table; import org.jetbrains.annotations.NotNull; @@ -97,7 +97,7 @@ public class CodeGeneratorEngine extends VelocityTemplateEngine { // http 注释标识 objectMap.put("httpComment", "###"); // 版本 - objectMap.put("version", OrionOpsProConst.VERSION); + objectMap.put("version", AppConst.VERSION); // api 注释 Map apiComment = new HashMap<>(12); String comment = tableInfo.getComment(); diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-card-list.vue.vm b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-card-list.vue.vm index cdc0e27f..e3604341 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-card-list.vue.vm +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-card-list.vue.vm @@ -20,8 +20,7 @@ size="small" ref="formRef" label-align="right" - :label-col-props="{ span: 6 }" - :wrapper-col-props="{ span: 18 }" + :auto-label-width="true" @keyup.enter="() => fetchCardData()"> #foreach($field in ${table.fields}) diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm index b5e4c98c..e4c51c42 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm @@ -8,12 +8,11 @@ :cancel-button-props="{ disabled: loading }" :on-before-ok="handlerOk" @cancel="handleClose"> - + #foreach($field in ${table.fields}) #if("$field.propertyName" != "id") diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm index ebda1055..c69dde87 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-modal.vue.vm @@ -1,6 +1,6 @@ diff --git a/orion-ops-ui/src/views/asset/grant/components/host-identity-grant.vue b/orion-ops-ui/src/views/asset/grant/components/host-identity-grant.vue index 24811bff..4240bbbe 100644 --- a/orion-ops-ui/src/views/asset/grant/components/host-identity-grant.vue +++ b/orion-ops-ui/src/views/asset/grant/components/host-identity-grant.vue @@ -1,8 +1,10 @@