Commit d1db6d2e authored by liuzheng712's avatar liuzheng712

feat: updates

parent be4144e4
...@@ -517,6 +517,12 @@ ...@@ -517,6 +517,12 @@
"normalize-path": "2.1.1" "normalize-path": "2.1.1"
} }
}, },
"app-root-path": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz",
"integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=",
"dev": true
},
"append-transform": { "append-transform": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
...@@ -1536,6 +1542,20 @@ ...@@ -1536,6 +1542,20 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true "dev": true
}, },
"codelyzer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.0.1.tgz",
"integrity": "sha512-MsOcaiLqcBK7hjHbfp9HZrflqWg5tD9A5qVSXkW208OJ8pkf63id8IiOjEiK/XU3o70W8tWbFKi1tAOwiJDMrQ==",
"dev": true,
"requires": {
"app-root-path": "2.0.1",
"css-selector-tokenizer": "0.7.0",
"cssauron": "1.4.0",
"semver-dsl": "1.0.1",
"source-map": "0.5.7",
"sprintf-js": "1.0.3"
}
},
"color": { "color": {
"version": "0.11.4", "version": "0.11.4",
"resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
...@@ -2053,6 +2073,15 @@ ...@@ -2053,6 +2073,15 @@
"integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
"dev": true "dev": true
}, },
"cssauron": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
"integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
"dev": true,
"requires": {
"through": "2.3.8"
}
},
"cssesc": { "cssesc": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
...@@ -12476,6 +12505,15 @@ ...@@ -12476,6 +12505,15 @@
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"dev": true "dev": true
}, },
"semver-dsl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
"integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
"dev": true,
"requires": {
"semver": "5.4.1"
}
},
"send": { "send": {
"version": "0.16.1", "version": "0.16.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
...@@ -13303,6 +13341,12 @@ ...@@ -13303,6 +13341,12 @@
"resolved": "https://registry.npmjs.org/tether/-/tether-1.4.0.tgz", "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.0.tgz",
"integrity": "sha1-D5+hcfdb9YSF2BSelHmdeudNHBo=" "integrity": "sha1-D5+hcfdb9YSF2BSelHmdeudNHBo="
}, },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"through2": { "through2": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
......
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
"@types/jasmine": "~2.5.53", "@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2", "@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60", "@types/node": "~6.0.60",
"codelyzer": "^4.0.1",
"jasmine-core": "~2.6.2", "jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0", "jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0", "karma": "~1.7.0",
......
<h2>这个真没有</h2> <div class="middle-box text-center animated fadeInDown">
<h1>404</h1>
<h3 class="font-bold">Page Not Found</h3>
<div class="error-desc">
Sorry, but the page you are looking for has note been found. Try checking the URL for error, then hit the refresh
button on your browser or try found something else in our app.
</div>
</div>
...@@ -24,6 +24,22 @@ import {NavList, View, Term} from '../control.component'; ...@@ -24,6 +24,22 @@ import {NavList, View, Term} from '../control.component';
export class SshComponent implements OnInit { export class SshComponent implements OnInit {
NavList = NavList; NavList = NavList;
static TerminalDisconnect(host) {
host.connected = false;
host.Term.socket.destroy();
host.Term.term.write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}
static TerminalDisconnectAll() {
alert('TerminalDisconnectAll');
for (let _i = 0; _i < NavList.List.length; _i++) {
SshComponent.TerminalDisconnect(_i);
// TermStore.term[i]["connected"] = false;
// TermStore.term[i]["socket"].destroy();
// TermStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}
}
constructor(private _appService: AppService, constructor(private _appService: AppService,
private _logger: Logger) { private _logger: Logger) {
this._logger.log('SshComponent.ts:SshComponent'); this._logger.log('SshComponent.ts:SshComponent');
...@@ -32,8 +48,8 @@ export class SshComponent implements OnInit { ...@@ -32,8 +48,8 @@ export class SshComponent implements OnInit {
ngOnInit() { ngOnInit() {
} }
TerminalConnect(host,username) { TerminalConnect(host, username) {
let socket = io.connect(); const socket = io.connect();
let cols = '80'; let cols = '80';
let rows = '24'; let rows = '24';
if (Cookie.get('cols')) { if (Cookie.get('cols')) {
...@@ -46,12 +62,12 @@ export class SshComponent implements OnInit { ...@@ -46,12 +62,12 @@ export class SshComponent implements OnInit {
Cookie.set('rows', rows, 99, '/', document.domain); Cookie.set('rows', rows, 99, '/', document.domain);
let id = NavList.List.length - 1; const id = NavList.List.length - 1;
NavList.List[id].nick = host.hostname; NavList.List[id].nick = host.hostname;
NavList.List[id].connected = true; NavList.List[id].connected = true;
NavList.List[id].edit = false; NavList.List[id].edit = false;
NavList.List[id].closed = false; NavList.List[id].closed = false;
NavList.List[id].type = "ssh"; NavList.List[id].type = 'ssh';
NavList.List[id].Term = new Term; NavList.List[id].Term = new Term;
NavList.List[id].Term.machine = host.uuid; NavList.List[id].Term.machine = host.uuid;
NavList.List[id].Term.socket = socket; NavList.List[id].Term.socket = socket;
...@@ -62,10 +78,13 @@ export class SshComponent implements OnInit { ...@@ -62,10 +78,13 @@ export class SshComponent implements OnInit {
screenKeys: true, screenKeys: true,
}); });
NavList.List.push(new View()); NavList.List.push(new View());
for (let m in NavList.List) { for (let _i = 0; _i < NavList.List.length; _i++) {
NavList.List[m].hide = true; if (id === _i) {
NavList.List[id].hide = false;
} else {
NavList.List[_i].hide = true;
}
} }
NavList.List[id].hide = false;
NavList.Active = id; NavList.Active = id;
...@@ -79,7 +98,7 @@ export class SshComponent implements OnInit { ...@@ -79,7 +98,7 @@ export class SshComponent implements OnInit {
NavList.List[id].Term.term.write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n'); NavList.List[id].Term.term.write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('login', "root"); socket.emit('login', 'root');
socket.emit('machine', host.uuid); socket.emit('machine', host.uuid);
NavList.List[id].Term.term.on('data', function (data) { NavList.List[id].Term.term.on('data', function (data) {
...@@ -109,14 +128,18 @@ export class SshComponent implements OnInit { ...@@ -109,14 +128,18 @@ export class SshComponent implements OnInit {
if (Cookie.get('cols')) { if (Cookie.get('cols')) {
cols = parseInt(Cookie.get('cols')); cols = parseInt(Cookie.get('cols'));
} }
if (col < 80) col = 80; if (col < 80) {
if (row < 24) row = 24; col = 80;
if (cols == col && row == rows) { }
if (row < 24) {
row = 24;
}
if (cols === col && row === rows) {
} else { } else {
for (let tid in NavList.List) { for (let _i = 0; _i < NavList.List.length; _i++) {
if (NavList.List[tid].connected) { if (NavList.List[_i].connected) {
NavList.List[tid].Term.socket.emit('resize', [col, row]); NavList.List[_i].Term.socket.emit('resize', [col, row]);
NavList.List[tid].Term.term.resize(col, row); NavList.List[_i].Term.term.resize(col, row);
} }
} }
Cookie.set('cols', String(col), 99, '/', document.domain); Cookie.set('cols', String(col), 99, '/', document.domain);
...@@ -128,19 +151,5 @@ export class SshComponent implements OnInit { ...@@ -128,19 +151,5 @@ export class SshComponent implements OnInit {
} }
static TerminalDisconnect(host) {
host.connected = false;
host.Term.socket.destroy();
host.Term.term.write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}
static TerminalDisconnectAll() {
alert("TerminalDisconnectAll");
for (let i in NavList.List) {
SshComponent.TerminalDisconnect(i);
// TermStore.term[i]["connected"] = false;
// TermStore.term[i]["socket"].destroy();
// TermStore.term[i]["term"].write('\r\n\x1b[31mBye Bye!\x1b[m\r\n');
}
}
} }
...@@ -36,6 +36,7 @@ import {NotFoundComponent} from './BasicPage/not-found/not-found.component'; ...@@ -36,6 +36,7 @@ import {NotFoundComponent} from './BasicPage/not-found/not-found.component';
import {PopupComponent} from './BasicPage/popup/popup.component'; import {PopupComponent} from './BasicPage/popup/popup.component';
import { RdppageComponent } from './rdppage/rdppage.component'; import { RdppageComponent } from './rdppage/rdppage.component';
import { TermpageComponent } from './termpage/termpage.component'; import { TermpageComponent } from './termpage/termpage.component';
import { ReplayPageComponent } from './replay-page/replay-page.component';
@NgModule({ @NgModule({
...@@ -65,6 +66,7 @@ import { TermpageComponent } from './termpage/termpage.component'; ...@@ -65,6 +66,7 @@ import { TermpageComponent } from './termpage/termpage.component';
PopupComponent, PopupComponent,
RdppageComponent, RdppageComponent,
TermpageComponent, TermpageComponent,
ReplayPageComponent,
// HeroListComponent, // HeroListComponent,
// CrisisListComponent, // CrisisListComponent,
], ],
......
<span id="liuzheng">liuzheng</span> <span id="liuzheng">liuzheng</span>
<i class="fa fa-backward" aria-hidden="true"></i>
<i class="fa fa-play" aria-hidden="true"></i>
<i class="fa fa-stop" aria-hidden="true"></i>
<i class="fa fa-pause" aria-hidden="true"></i>
<i class="fa fa-forward" aria-hidden="true"></i>
<div id="term"></div> <div id="term"></div>
import {Component, OnInit} from '@angular/core'; import {Component, OnInit} from '@angular/core';
import {ActivatedRoute, Params} from '@angular/router'; import {ActivatedRoute, Params} from '@angular/router';
import {DataStore} from "../app.service"; import {DataStore} from '../app.service';
import * as io from 'socket.io-client'; import * as io from 'socket.io-client';
declare let jQuery: any; declare let jQuery: any;
...@@ -21,15 +21,15 @@ export class TermpageComponent implements OnInit { ...@@ -21,15 +21,15 @@ export class TermpageComponent implements OnInit {
this.activatedRoute.params.subscribe((params: Params) => { this.activatedRoute.params.subscribe((params: Params) => {
token = params['token']; token = params['token'];
}); });
let socket = io.connect('/ssh'); const socket = io.connect('/ssh');
let term = new Terminal({ const term = new Terminal({
cols: '80', cols: '80',
rows: '24', rows: '24',
useStyle: true, useStyle: true,
screenKeys: true, screenKeys: true,
}); });
term.open(document.getElementById('term' ), true); term.open(document.getElementById('term'), true);
socket.on('connect', function () { socket.on('connect', function () {
socket.emit('token', token); socket.emit('token', token);
...@@ -46,22 +46,9 @@ export class TermpageComponent implements OnInit { ...@@ -46,22 +46,9 @@ export class TermpageComponent implements OnInit {
socket.on('disconnect', function () { socket.on('disconnect', function () {
term.destroy(); term.destroy();
}); });
socket.on('resize', function (data) {
window.onresize = function () { term.resize(data.col, data.row);
let col = Math.floor(jQuery('#term').width() / jQuery('#liuzheng').width() * 8) - 3; });
let row = Math.floor(jQuery('#term').height() / jQuery('#liuzheng').height()) - 5;
let rows = 24;
let cols = 80;
if (col < 80) col = 80;
if (row < 24) row = 24;
if (cols == col && row == rows) {
} else {
socket.emit('resize', [col, row]);
term.resize(col, row);
}
};
// jQuery(window).resize(); // 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