📝 修改文档.

This commit is contained in:
lijiahangmax
2024-03-22 01:46:18 +08:00
parent 1e9805c99f
commit 5d9fcf7265
31 changed files with 7236 additions and 4542 deletions

View File

@@ -3,7 +3,7 @@
</h1> </h1>
`orion-ops-pro` 是一款现代化、高颜值的一站式智能运维管理平台集资产管理、资产授权、批量执行、Web终端、WebSftp、角色管理、系统管理等功能于一体致力于简化运维团队的治理工作。它是基于 `orion-ops` `orion-ops-pro` 是一款现代化、高颜值的一站式智能运维管理平台集资产管理、资产授权、批量执行、Web终端、WebSftp、角色管理、系统管理等功能于一体致力于简化运维团队的治理工作。它是基于 `orion-ops`
的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷友好。 的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷友好。
<p style="text-align: left"> <p style="text-align: left">
<a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"> <a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade">
@@ -77,32 +77,38 @@ roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap
> 工作台 > 工作台
![工作台](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/2/27/69328bb3-8a8d-47ca-8a5b-d16c56be704b.png "工作台") ![工作台](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/2/27/8ca59a20-09b6-48e5-b511-c01319d963df.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/2/27/a6e48de3-5145-4c48-a6a2-b99208cb1ae1.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/2/27/7264f870-45c7-4037-9179-6473d254c231.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/2/27/0803bb07-3776-4de3-bd4a-02931fab7ca7.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/2/27/89f75025-b0d4-4ccf-b1a7-de311c576ab4.png "主题设置") ![主题设置](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/2/27/b6d2da7a-5aaf-4790-b4e9-d8e8428e2122.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/2/27/9c096d5e-3a1c-40e3-b047-1e8725f27726.png "sftp") ![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/2/27/cebee39c-d5f6-4d82-b4b8-f2734c9a49bf.png "传输列表") ![传输列表](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/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/2/27/b9ca5bb6-f88a-43e6-888f-b7259df02521.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/2/27/6a4985c6-e828-4eb3-96b2-b1ca48df7579.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/2/27/304c6e12-755e-4ce7-8d37-051676ff6fe9.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/2/27/89dcd816-7f76-4bed-be4c-79a412dbeba4.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/2/27/ac5ca3da-6874-4655-b192-b88bad6cfa06.png "分配菜单") ![分配菜单](https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/3/22/5a7804ed-179c-4d25-820f-af2af1aabbba.png "分配菜单")
## 联系我 ## 联系我

View File

@@ -2,8 +2,9 @@
<img style="margin-right: 8px;" src="./assert/logo.svg" width="32px" height="32px"/> orion-ops-pro 是什么 <img style="margin-right: 8px;" src="./assert/logo.svg" width="32px" height="32px"/> orion-ops-pro 是什么
</h1> </h1>
`orion-ops-pro` 是一款现代化、高颜值的一站式智能运维管理平台集资产管理、资产授权、批量执行、Web终端、WebSftp、角色管理、系统管理等功能于一体致力于简化运维团队的治理工作。它是基于 `orion-ops` `orion-ops-pro`
的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷友好。 是一款现代化、高颜值的一站式智能运维管理平台集资产管理、资产授权、批量执行、Web终端、WebSftp、角色管理、系统管理等功能于一体致力于简化运维团队的治理工作。它是基于 `orion-ops`
的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷更友好。
<p style="text-align: left"> <p style="text-align: left">
<a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"> <a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade">
@@ -91,6 +92,12 @@ roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap
![sftp](./assert/img/terminal_sftp.png "sftp") ![sftp](./assert/img/terminal_sftp.png "sftp")
![传输列表](./assert/img/terminal_transfer.png "传输列表") ![传输列表](./assert/img/terminal_transfer.png "传输列表")
> 批量执行
![批量执行](./assert/img/batch_exec.png "批量执行")
![执行日志](./assert/img/batch_exec_log.png "执行日志")
![执行记录](./assert/img/batch_exec_record.png "执行记录")
> 用户管理 > 用户管理
![用户列表](./assert/img/user_list.png "用户列表") ![用户列表](./assert/img/user_list.png "用户列表")

View File

@@ -2,8 +2,9 @@
## v1.0.2 ## v1.0.2
`2024-03-22` `release` `2024-03-2` `release`
* 🚀 升级 `arco design` `2.55.0`
* 🐞 修复 SFTP 加载失败后一直 loading * 🐞 修复 SFTP 加载失败后一直 loading
* 🐞 修复 主机终端搜索框报错 * 🐞 修复 主机终端搜索框报错
* 🐞 修复 SSH 配置未启用还可以连接 * 🐞 修复 SSH 配置未启用还可以连接

View File

@@ -1,7 +1,8 @@
## 功能排期 ⏳ ## 功能排期 ⏳
* 批量执行
* 定时执行 * 定时执行
* 批量上传
* 文件夹书签
* 站内消息 * 站内消息
* 终端背景图片 * 终端背景图片
* 资产授权 UI 改版 * 资产授权 UI 改版

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 504 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 524 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 582 KiB

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 613 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 606 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -2,7 +2,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>关于orion-ops-pro</title> <title>关于 orion-ops-pro</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="description" content="Description"> <meta name="description" content="Description">
<link rel="icon" href="./assert/logo.svg"> <link rel="icon" href="./assert/logo.svg">

View File

@@ -3,7 +3,7 @@
在主机终端页面打开的 `SSH` `SFTP` 连接都会记录下来。 在主机终端页面打开的 `SSH` `SFTP` 连接都会记录下来。
* 详情: 查看连接详情 * 详情: 查看连接详情
* 断开: 断开连接 * 断开: 断开会话连接
* 删除: 删除连接记录 * 删除: 删除连接记录
* 清理: 根据条件清理数据 * 清理: 根据条件清理数据

View File

@@ -37,17 +37,55 @@
> SFTP > SFTP
* 预览: 默认只能预览 2MB 以内的普通文件, 这个大小可以在前端 env 文件中修改 `VITE_SFTP_PREVIEW_MB` * 预览: 默认只能预览 2MB 以内的普通文件, 这个大小可以在前端 env 文件中修改 `VITE_SFTP_PREVIEW_MB`
* 上传: 如果文件已存在则自动重命名之前的文件
> 终端面板 > 终端面板
⭐ 双击终端标签可快速复制会话 ⭐ 双击终端标签可快速复制会话
### 批量执行
批量执行 ssh 主机 shell 脚本。
##### 日志面板中有几个内置的快捷键
* 回车: `Enter`
* 向上滚动: `↑`
* 向上滚动一页: `ctrl` `↑`
* 向下滚动: `↓`
* 向下滚动一页: `ctrl` `↓`
* 全选: `ctrl` `A`
* 复制: `ctrl` `C`
* 搜索: `ctrl` `F`
* 清空: `ctrl` `L`
⭐ 内置参数同执行模板参数
* 重置: 重置全部参数
* 执行: 执行所输入的命令
* 返回: 返回到执行命令页面
* 从模板中选择: 从模板中选择需要执行的命令
* 执行历史: 点击历史命令可以快速填入
### 执行记录
查看批量执行任务记录。
* 执行命令: 跳转到批量执行页面
* 清空: 清空执行记录
* 删除: 删除执行记录
* 重新执行: 重新执行此命令
* 命令: 查看执行时的命令
* 参数: 查看执行时的参数
* 日志: 查看执行日志, ctrl + 左键点击会用新页面打开
* 下载: 下载执行日志
### 执行模板 ### 执行模板
用来维护批量执行的命令模板, 支持动态参数, 使用 `@{{ xxx }}` 来替换命令参数。 用来维护批量执行的命令模板, 支持动态参数, 使用 `@{{ xxx }}` 来替换命令参数。
* 新增: 新增执行模板 * 新增: 新增执行模板
* 执行: 使用此命令模板批量执行主机命令 * 执行: 打开命令执行框并且带入模板参数
* 修改: 修改执行模板 * 修改: 修改执行模板
* 删除: 删除执行模板 * 删除: 删除执行模板

View File

@@ -1,4 +1,4 @@
VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion/api' VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion/api'
VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion/keep-alive' VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion/keep-alive'
VITE_APP_VERSION= '1.0.1' VITE_APP_VERSION= '1.0.2'
VITE_SFTP_PREVIEW_MB= 2 VITE_SFTP_PREVIEW_MB= 2

View File

@@ -1,4 +1,4 @@
VITE_API_BASE_URL= '/orion/api' VITE_API_BASE_URL= '/orion/api'
VITE_WS_BASE_URL= '/orion/keep-alive' VITE_WS_BASE_URL= '/orion/keep-alive'
VITE_APP_VERSION= '1.0.1' VITE_APP_VERSION= '1.0.2'
VITE_SFTP_PREVIEW_MB= 2 VITE_SFTP_PREVIEW_MB= 2

View File

@@ -35,6 +35,7 @@ export default defineConfig({
}, },
define: { define: {
'process.env': {}, 'process.env': {},
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(true),
}, },
css: { css: {
preprocessorOptions: { preprocessorOptions: {

View File

@@ -1,7 +1,7 @@
{ {
"name": "orion-ops-pro-ui", "name": "orion-ops-pro-ui",
"description": "Orion Ops Pro for Vue", "description": "Orion Ops Pro for Vue",
"version": "1.0.1", "version": "1.0.2",
"private": true, "private": true,
"author": "Jiahang Li", "author": "Jiahang Li",
"license": "Apache 2.0", "license": "Apache 2.0",
@@ -29,7 +29,7 @@
] ]
}, },
"dependencies": { "dependencies": {
"@arco-design/web-vue": "^2.53.3", "@arco-design/web-vue": "^2.55.0",
"@dangojs/a-query-header": "^0.0.31", "@dangojs/a-query-header": "^0.0.31",
"@sanqi377/arco-vue-icon-picker": "^1.0.7", "@sanqi377/arco-vue-icon-picker": "^1.0.7",
"@vueuse/core": "^9.3.0", "@vueuse/core": "^9.3.0",

11622
orion-ops-ui/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
import type { IDisposable, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from 'xterm'; import type { IDisposable, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from 'xterm';
import type { FitAddon } from 'xterm-addon-fit'; import type { FitAddon } from 'xterm-addon-fit';
import type { SearchAddon } from 'xterm-addon-search'; import type { SearchAddon } from 'xterm-addon-search';
import type { CanvasAddon } from 'xterm-addon-canvas';
import type { WebLinksAddon } from 'xterm-addon-web-links'; import type { WebLinksAddon } from 'xterm-addon-web-links';
import type { WebglAddon } from 'xterm-addon-webgl';
// appender 配置 // appender 配置
export const AppenderOptions: ITerminalOptions & ITerminalInitOnlyOptions = { export const AppenderOptions: ITerminalOptions & ITerminalInitOnlyOptions = {
@@ -42,7 +42,7 @@ export interface LogAppenderConf {
// appender 插件 // appender 插件
export interface LogAddons extends Record<string, IDisposable> { export interface LogAddons extends Record<string, IDisposable> {
fit: FitAddon; fit: FitAddon;
canvas: CanvasAddon; webgl: WebglAddon;
search: SearchAddon; search: SearchAddon;
weblink: WebLinksAddon; weblink: WebLinksAddon;
} }

View File

@@ -11,8 +11,8 @@ import { copy as copyText } from '@/hooks/copy';
import { Terminal } from 'xterm'; import { Terminal } from 'xterm';
import { FitAddon } from 'xterm-addon-fit'; import { FitAddon } from 'xterm-addon-fit';
import { SearchAddon } from 'xterm-addon-search'; import { SearchAddon } from 'xterm-addon-search';
import { CanvasAddon } from 'xterm-addon-canvas';
import { WebLinksAddon } from 'xterm-addon-web-links'; import { WebLinksAddon } from 'xterm-addon-web-links';
import { WebglAddon } from 'xterm-addon-webgl';
// 执行日志 appender 实现 // 执行日志 appender 实现
export default class LogAppender implements ILogAppender { export default class LogAppender implements ILogAppender {
@@ -76,26 +76,48 @@ export default class LogAppender implements ILogAppender {
if (e.type !== 'keydown') { if (e.type !== 'keydown') {
return true; return true;
} }
if (e.ctrlKey && e.code === 'KeyC') { if (e.code === 'Enter') {
// 复制 // 新起一行
e.preventDefault(); e.preventDefault();
this.copy(); terminal.write('\r\n');
return false; } else if (e.code === 'ArrowUp') {
} else if (e.ctrlKey && e.code === 'KeyL') {
// 清空
e.preventDefault(); e.preventDefault();
this.clear(); if (e.ctrlKey) {
return false; // 上移一页
terminal.scrollPages(-1);
} else {
// 上移
terminal.scrollLines(-1);
}
} else if (e.code === 'ArrowDown') {
e.preventDefault();
if (e.ctrlKey) {
// 下移一页
terminal.scrollPages(1);
} else {
// 下移
terminal.scrollLines(1);
}
} else if (e.ctrlKey && e.code === 'KeyA') { } else if (e.ctrlKey && e.code === 'KeyA') {
// 全选 // 全选
e.preventDefault(); e.preventDefault();
this.selectAll(); this.selectAll();
return false; return false;
} else if (e.ctrlKey && e.code === 'KeyC') {
// 复制
e.preventDefault();
this.copy();
return false;
} else if (e.ctrlKey && e.code === 'KeyF') { } else if (e.ctrlKey && e.code === 'KeyF') {
// 搜索 // 搜索
e.preventDefault(); e.preventDefault();
this.current.openSearch(); this.current.openSearch();
return false; return false;
} else if (e.ctrlKey && e.code === 'KeyL') {
// 清空
e.preventDefault();
this.clear();
return false;
} }
return true; return true;
}); });
@@ -105,16 +127,16 @@ export default class LogAppender implements ILogAppender {
initAddons(terminal: Terminal): LogAddons { initAddons(terminal: Terminal): LogAddons {
const fit = new FitAddon(); const fit = new FitAddon();
const search = new SearchAddon(); const search = new SearchAddon();
const canvas = new CanvasAddon(); const webgl = new WebglAddon();
const weblink = new WebLinksAddon(); const weblink = new WebLinksAddon();
terminal.loadAddon(fit); terminal.loadAddon(fit);
terminal.loadAddon(search); terminal.loadAddon(search);
terminal.loadAddon(canvas); terminal.loadAddon(webgl);
terminal.loadAddon(weblink); terminal.loadAddon(weblink);
return { return {
fit, fit,
search, search,
canvas, webgl,
weblink weblink
}; };
} }