Luna
Jumpserver WebTerminal
Luna 是我为 Jumpserver 单独开发的前端一站式连接终端,项目地址,项目初期设计是一站解决所有的连接 UI 渲染部分。
前端框架采用 Angular5 ,为保持架构稳定,暂时还未考虑升级。
目录结构说明
src 目录结构如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
├── app
│ ├── app.module.ts
│ ├── app.service.ts
│ ├── elements
│ ├── globals.ts
│ ├── pages
│ ├── pipes
│ ├── plugins
│ ├── router
│ └── test-page
├── assets
│ ├── inspinia
│ ├── js
│ ├── slimscroll
│ └── ztree
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── sass
│ ├── jumpserver.css
│ ├── material.css
│ └── style.scss
├── static
│ └── assets/imgs
├── styles.css
├── test.ts
├── theme
│ └── default
├── tsconfig.app.json
├── tsconfig.spec.json
└── typings.d.ts
app 目录
该目录下主要是应用的组件和模块, ./elements/ 是本项目所需要用到的子元素集合,./pages/ 是本项目所有页面分页,./pipes/ 是本项目的管道功能组件,./plugins/ 是本项目的所有插件,./router/ 是本项目的路由,./app.module.ts 项目模块,./app.service.ts 后台控制,./globals.ts 全局的环境变量。
./elements/ 下面都是所需的模块元素,各模块根据需要去加载子模块,譬如ssh-term模块,在会话连接时需要使用到,在会话回放时依然需要使用到,该模块就是一个终端模拟器,使用的是 xterm.js。
其余模块类似,原打算 Guacamole 模块按照 Guacamole 的 UI 要求去重写,后期因为时间原因直接 iframe 套用其原生界面能保证快速工作,便没有花太大精力去重写。
./pages/ 目录是所有页面的整合,由 router 去路由到各个页面。该模块原先设计上是打算将jumpserver 所有页面都复写到这个下面,后期由于 django 的深度开发,暂时只负责一部分页面的渲染工作。
./pipes/ 是管道工,里面包含date.pipe.ts日期管道工、trans.pipe.ts 翻译管道工、truncatechars.pipe.ts缩写管道工,以及未来的管道工都会在这里实现。目的是提供各类插件式的工具。
./plugins/ 是第三方插件的存放位置,先存放了单独的MaterialModule.component.ts,其他插件直接可以在plugins.ts中进行版本管理。
./router/ 就不多说了,路由模块。至于为什么一个文件一个文件夹,是因为考虑到后期会增加各个端的路由规则,方便进行多文件管理。
./app.module.ts和./globals.ts就不多说了。
./app.service.ts实现部分原生类的重写以及自定义类的实现。
