feat: update

parent c85fba0a
...@@ -33,14 +33,7 @@ ...@@ -33,14 +33,7 @@
"../node_modules/jquery-sparkline/jquery.sparkline.js", "../node_modules/jquery-sparkline/jquery.sparkline.js",
"../node_modules/tether/dist/js/tether.min.js", "../node_modules/tether/dist/js/tether.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.min.js", "../node_modules/bootstrap/dist/js/bootstrap.min.js",
"../node_modules/xterm/dist/xterm.js", "../node_modules/xterm/dist/xterm.js"
"../node_modules/layui-layer/dist/layer.js",
"../node_modules/socket.io-client/dist/socket.io.js",
"./assets/js/mstsc.js",
"./assets/js/keyboard.js",
"./assets/js/rle.js",
"./assets/js/client.js",
"./assets/js/canvas.js"
], ],
"environmentSource": "environments/environment.ts", "environmentSource": "environments/environment.ts",
"environments": { "environments": {
......
...@@ -108,7 +108,7 @@ def asset_groups_assets(): ...@@ -108,7 +108,7 @@ def asset_groups_assets():
"hostname": "192.168.1.6", "hostname": "192.168.1.6",
"ip": "192.168.2.6", "ip": "192.168.2.6",
"port": 22, "port": 22,
"plantform": "Linux", "platform": "Linux",
"system_users_granted": [ "system_users_granted": [
{ {
"id": 1, "id": 1,
...@@ -133,13 +133,13 @@ def asset_groups_assets(): ...@@ -133,13 +133,13 @@ def asset_groups_assets():
"hostname": "windows server", "hostname": "windows server",
"ip": "123.57.183.135", "ip": "123.57.183.135",
"port": 3389, "port": 3389,
"plantform": "Windows", "platform": "Windows",
"assets_granted": [ "system_users_granted": [
{ {
"id": 1, "id": 3,
"name": "web", "name": "web",
"username": "web", "username": "web",
"protocol": "ssh", "protocol": "rdp",
"auth_method": "P", "auth_method": "P",
"auto_push": True "auto_push": True
} }
......
This diff is collapsed.
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
"layui-layer": "git+https://github.com/jumpserver/layer.git", "layui-layer": "git+https://github.com/jumpserver/layer.git",
"materialize-css": "^0.100.2", "materialize-css": "^0.100.2",
"metismenu": "^2.5.0", "metismenu": "^2.5.0",
"mstsc.js": "^0.2.4",
"ng2-charts": "^1.5.0", "ng2-charts": "^1.5.0",
"ng2-cookies": "^1.0.12", "ng2-cookies": "^1.0.12",
"ngx-bootstrap": "^1.6.6", "ngx-bootstrap": "^1.6.6",
...@@ -54,8 +55,8 @@ ...@@ -54,8 +55,8 @@
"socket.io": "^2.0.3", "socket.io": "^2.0.3",
"socket.io-client": "^2.0.4", "socket.io-client": "^2.0.4",
"ssh-keygen": "^0.4.1", "ssh-keygen": "^0.4.1",
"term.js": "0.0.7",
"tether": "^1.4.0", "tether": "^1.4.0",
"tty.js": "^0.2.15",
"xterm": "^2.9.2", "xterm": "^2.9.2",
"zone.js": "^0.8.14" "zone.js": "^0.8.14"
}, },
......
...@@ -67,11 +67,7 @@ label { ...@@ -67,11 +67,7 @@ label {
background: #2f2a2a; background: #2f2a2a;
font-size: 9pt; font-size: 9pt;
border-top-width: 1px; border-top-width: 1px;
<<<<<<< HEAD
left: 0; left: 0;
=======
left: 0px;
>>>>>>> github_dev
padding: 1px 20px 0 20px; padding: 1px 20px 0 20px;
position: absolute; position: absolute;
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<label for="hostgroup-{{i}}">{{hostGroup.name}}</label> <label for="hostgroup-{{i}}">{{hostGroup.name}}</label>
<ul [ngClass]="{'insearch': q }"> <ul [ngClass]="{'insearch': q }">
<li *ngFor="let host of hostGroup.assets_granted | SearchFilter: q" (click)="Connect(host)"> <li *ngFor="let host of hostGroup.assets_granted | SearchFilter: q" (click)="Connect(host)">
<i class="fa" [ngClass]="'fa-'+(host.plantform||'undefined').toLowerCase()" id="fa-{{i}}"></i> <i class="fa" [ngClass]="'fa-'+(host.platform||'undefined').toLowerCase()" id="fa-{{i}}"></i>
{{host.hostname}} {{host.hostname}}
</li> </li>
</ul> </ul>
......
...@@ -166,12 +166,12 @@ export class CleftbarComponent implements OnInit { ...@@ -166,12 +166,12 @@ export class CleftbarComponent implements OnInit {
this._rdp.Connect(host, user.id); this._rdp.Connect(host, user.id);
} }
} }
// if (host.plantform) { // if (host.platform) {
// if (host.plantform.toLowerCase() === 'linux') { // if (host.platform.toLowerCase() === 'linux') {
// jQuery('app-ssh').show(); // jQuery('app-ssh').show();
// jQuery('app-rdp').hide(); // jQuery('app-rdp').hide();
// this._term.TerminalConnect(host, user.id); // this._term.TerminalConnect(host, user.id);
// } else if (host.plantform.toLowerCase() === 'windows') { // } else if (host.platform.toLowerCase() === 'windows') {
// jQuery('app-ssh').hide(); // jQuery('app-ssh').hide();
// jQuery('app-rdp').show(); // jQuery('app-rdp').show();
// this._rdp.Connect(host, user.id); // this._rdp.Connect(host, user.id);
......
...@@ -46,6 +46,17 @@ export let NavList: { ...@@ -46,6 +46,17 @@ export let NavList: {
styleUrls: ['./control.component.css'] styleUrls: ['./control.component.css']
}) })
export class ControlComponent implements OnInit { export class ControlComponent implements OnInit {
static active(id) {
for (let i in NavList.List) {
if (id.toString() === i) {
NavList.List[id].hide = false;
} else {
NavList.List[i].hide = true;
}
}
NavList.Active = id;
}
constructor() { constructor() {
} }
......
...@@ -69,4 +69,5 @@ export class ControlnavComponent implements OnInit { ...@@ -69,4 +69,5 @@ export class ControlnavComponent implements OnInit {
ControlnavComponent.checkActive(index); ControlnavComponent.checkActive(index);
} }
} }
...@@ -6,9 +6,10 @@ ...@@ -6,9 +6,10 @@
*/ */
import {Component, OnInit} from '@angular/core'; import {Component, OnInit} from '@angular/core';
import {NavList, View, Rdp} from '../control.component'; import {NavList, View, Rdp, ControlComponent} from '../control.component';
declare let Mstsc: any; import * as Mstsc from 'mstsc.js/client/js/mstsc.js';
// declare let Mstsc: any;
@Component({ @Component({
selector: 'app-rdp', selector: 'app-rdp',
...@@ -53,17 +54,10 @@ export class RdpComponent implements OnInit { ...@@ -53,17 +54,10 @@ export class RdpComponent implements OnInit {
NavList.List[id].Rdp.token = host.token; NavList.List[id].Rdp.token = host.token;
NavList.List[id].Rdp.machine = host.uuid; NavList.List[id].Rdp.machine = host.uuid;
NavList.List[id].Rdp.client = Mstsc.client.create(Mstsc.$('canvas-' + id)); NavList.List[id].Rdp.client = Mstsc.client.create(Mstsc.$('canvas-' + id));
NavList.List[id].Rdp.client.connect(host.token, 'rdp/socket.io'); NavList.List[id].Rdp.client.connect(host.token, '/rdp/socket.io');
NavList.List.push(new View()); NavList.List.push(new View());
for (let m in NavList.List) { ControlComponent.active(id);
NavList.List[m].hide = true;
}
NavList.List[id].hide = false;
NavList.Active = id;
} }
} }
...@@ -9,7 +9,7 @@ import {Component, OnInit} from '@angular/core'; ...@@ -9,7 +9,7 @@ import {Component, OnInit} from '@angular/core';
import {Logger} from 'angular2-logger/core'; import {Logger} from 'angular2-logger/core';
import {Cookie} from 'ng2-cookies/ng2-cookies'; import {Cookie} from 'ng2-cookies/ng2-cookies';
import {AppService} from '../../../app.service'; import {AppService} from '../../../app.service';
import {NavList, View, Term} from '../control.component'; import {NavList, View, Term, ControlComponent} from '../control.component';
import {Terminal} from '../../../globals'; import {Terminal} from '../../../globals';
import * as io from 'socket.io-client'; import * as io from 'socket.io-client';
import * as jQuery from 'jquery/dist/jquery.min.js'; import * as jQuery from 'jquery/dist/jquery.min.js';
...@@ -74,15 +74,7 @@ export class SshComponent implements OnInit { ...@@ -74,15 +74,7 @@ export class SshComponent implements OnInit {
screenKeys: true, screenKeys: true,
}); });
NavList.List.push(new View()); NavList.List.push(new View());
for (let i = 0; i < NavList.List.length; i++) { ControlComponent.active(id);
if (id === i) {
NavList.List[id].hide = false;
} else {
NavList.List[i].hide = true;
}
}
NavList.Active = id;
// TermStore.term[id]['term'].on('title', function (title) { // TermStore.term[id]['term'].on('title', function (title) {
......
...@@ -12,15 +12,15 @@ import {environment} from '../environments/environment'; ...@@ -12,15 +12,15 @@ import {environment} from '../environments/environment';
import {NotFoundComponent} from './BasicPage/not-found/not-found.component'; import {NotFoundComponent} from './BasicPage/not-found/not-found.component';
import {LoginComponent} from './BasicPage/login/login.component'; import {LoginComponent} from './BasicPage/login/login.component';
import {ControlPageComponent} from './ControlPage/controlpage.component'; import {ControlPageComponent} from './ControlPage/controlpage.component';
import {RdppageComponent} from './rdppage/rdppage.component';
import {TermpageComponent} from './termpage/termpage.component';
import {ReplayPageComponent} from './replay-page/replay-page.component'; import {ReplayPageComponent} from './replay-page/replay-page.component';
import {MonitorPageComponent} from './monitor-page/monitor-page.component'; import {MonitorPageComponent} from './monitor-page/monitor-page.component';
import {RdpPageComponent} from './rdp-page/rdp-page.component';
import {TermPageComponent} from './term-page/term-page.component';
const appRoutes: Routes = [ const appRoutes: Routes = [
{path: 'users/login', component: LoginComponent}, {path: 'users/login', component: LoginComponent},
{path: 'rdp/:token', component: RdppageComponent}, {path: 'rdp/:token', component: RdpPageComponent},
{path: 'term/:token', component: TermpageComponent}, {path: 'term/:token', component: TermPageComponent},
{path: 'replay/:token', component: ReplayPageComponent}, {path: 'replay/:token', component: ReplayPageComponent},
{path: 'monitor/:token', component: MonitorPageComponent}, {path: 'monitor/:token', component: MonitorPageComponent},
{path: '', component: ControlPageComponent}, {path: '', component: ControlPageComponent},
......
...@@ -36,8 +36,8 @@ import {SshComponent} from './ControlPage/control/ssh/ssh.component'; ...@@ -36,8 +36,8 @@ import {SshComponent} from './ControlPage/control/ssh/ssh.component';
import {ControlPageComponent} from './ControlPage/controlpage.component'; import {ControlPageComponent} from './ControlPage/controlpage.component';
import {IndexPageComponent} from './IndexPage/index-page.component'; import {IndexPageComponent} from './IndexPage/index-page.component';
import {NotFoundComponent} from './BasicPage/not-found/not-found.component'; import {NotFoundComponent} from './BasicPage/not-found/not-found.component';
import {RdppageComponent} from './rdppage/rdppage.component'; import {RdpPageComponent} from './rdp-page/rdp-page.component';
import {TermpageComponent} from './termpage/termpage.component'; import {TermPageComponent} from './term-page/term-page.component';
import {ReplayPageComponent} from './replay-page/replay-page.component'; import {ReplayPageComponent} from './replay-page/replay-page.component';
import {Mp4Component} from './replay-page/mp4/mp4.component'; import {Mp4Component} from './replay-page/mp4/mp4.component';
import {JsonComponent} from './replay-page/json/json.component'; import {JsonComponent} from './replay-page/json/json.component';
...@@ -74,8 +74,8 @@ import {ElementRdpComponent} from './elements/rdp/rdp.component'; ...@@ -74,8 +74,8 @@ import {ElementRdpComponent} from './elements/rdp/rdp.component';
ControlPageComponent, ControlPageComponent,
IndexPageComponent, IndexPageComponent,
NotFoundComponent, NotFoundComponent,
RdppageComponent, RdpPageComponent,
TermpageComponent, TermPageComponent,
ReplayPageComponent, ReplayPageComponent,
Mp4Component, Mp4Component,
JsonComponent, JsonComponent,
......
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { TermpageComponent } from './termpage.component'; import { RdpPageComponent } from './rdp-page.component';
describe('TermpageComponent', () => { describe('RdpPageComponent', () => {
let component: TermpageComponent; let component: RdpPageComponent;
let fixture: ComponentFixture<TermpageComponent>; let fixture: ComponentFixture<RdpPageComponent>;
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
declarations: [ TermpageComponent ] declarations: [ RdpPageComponent ]
}) })
.compileComponents(); .compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(TermpageComponent); fixture = TestBed.createComponent(RdpPageComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();
}); });
......
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-rdp-page',
templateUrl: './rdp-page.component.html',
styleUrls: ['./rdp-page.component.scss']
})
export class RdpPageComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { TermPageComponent } from './term-page.component';
describe('TermPageComponent', () => {
let component: TermPageComponent;
let fixture: ComponentFixture<TermPageComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ TermPageComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TermPageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-term-page',
templateUrl: './term-page.component.html',
styleUrls: ['./term-page.component.scss']
})
export class TermPageComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
#term {
width: 100%;
height: 100%;
}
#term > div {
height: 100%;
}
.terminal {
border: #000 solid 5px;
color: #f0f0f0;
box-shadow: rgba(0, 0, 0, 0.8) 2px 2px 20px;
white-space: nowrap;
display: inline-block;
width: 100%;
height: 100%;
background-color: black;
}
#term .terminal div span {
min-width: 12px;
}
import {Component, OnInit} from '@angular/core';
import {ActivatedRoute, Params} from '@angular/router';
import {DataStore} from '../globals';
import * as io from 'socket.io-client';
import * as Terminal from 'term.js/src/term.js';
@Component({
selector: 'app-termpage',
templateUrl: './termpage.component.html',
styleUrls: ['./termpage.component.css']
})
export class TermpageComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute) {
DataStore.NavShow = false;
}
ngOnInit() {
let token: string;
this.activatedRoute.params.subscribe((params: Params) => {
token = params['token'];
});
const socket = io.connect('/ssh');
const term = new Terminal({
cols: '80',
rows: '24',
useStyle: true,
screenKeys: true,
});
term.open(document.getElementById('term'), true);
socket.on('connect', function () {
socket.emit('token', token);
term.on('data', function (data) {
socket.emit('data', data);
});
socket.on('data', function (data) {
term.write(data);
});
socket.on('disconnect', function () {
term.destroy();
});
socket.on('resize', function (data) {
term.resize(data.col, data.row);
});
// jQuery(window).resize();
});
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment