Commit 0d87dbcd authored by ibuler's avatar ibuler

[Bugfix] 修复guacamole重启后无法打开的问题

parent 9c80c191
...@@ -18,6 +18,7 @@ export class ElementGuacamoleComponent implements OnInit { ...@@ -18,6 +18,7 @@ export class ElementGuacamoleComponent implements OnInit {
@Input() target: string; @Input() target: string;
@Input() index: number; @Input() index: number;
@ViewChild('rdp') el: ElementRef; @ViewChild('rdp') el: ElementRef;
registered = false;
constructor(private sanitizer: DomSanitizer, constructor(private sanitizer: DomSanitizer,
private _http: HttpService, private _http: HttpService,
...@@ -26,30 +27,43 @@ export class ElementGuacamoleComponent implements OnInit { ...@@ -26,30 +27,43 @@ export class ElementGuacamoleComponent implements OnInit {
} }
registerHost() { registerHost() {
let action: any;
if (this.remoteAppId) { if (this.remoteAppId) {
this._http.guacamole_add_remote_app(User.id, this.remoteAppId).subscribe( action = this._http.guacamole_add_remote_app(User.id, this.remoteAppId);
} else {
action = this._http.guacamole_add_asset(User.id, this.host.id, this.userid);
}
action.subscribe(
data => { data => {
const base = data.result; const base = data.result;
this.target = document.location.origin + '/guacamole/#/client/' + base + '?token=' + DataStore.guacamole_token; this.target = document.location.origin + '/guacamole/#/client/' + base + '?token=' + DataStore.guacamole_token;
NavList.List[this.index].Rdp = this.el.nativeElement; NavList.List[this.index].Rdp = this.el.nativeElement;
}, },
error => { error => {
this._logger.error(error); if (!this.registered) {
this.registerToken();
}
} }
); );
} else { }
this._http.guacamole_add_asset(User.id, this.host.id, this.userid).subscribe(
registerToken() {
const now = new Date();
const nowTime = now.getTime() / 1000;
this.registered = true;
this._http.get_guacamole_token(User.id, '').subscribe(
data => { data => {
const base = data.result; // /guacamole/client will redirect to http://guacamole/#/client
this.target = document.location.origin + '/guacamole/#/client/' + base + '?token=' + DataStore.guacamole_token; DataStore.guacamole_token = data['authToken'];
NavList.List[this.index].Rdp = this.el.nativeElement; DataStore.guacamole_token_time = nowTime;
this.registerHost();
}, },
error2 => { error => {
this._logger.error(error2); this._logger.error(error);
return null;
} }
); );
} }
}
ngOnInit() { ngOnInit() {
// /guacamole/api/tokens will redirect to http://guacamole/api/tokens // /guacamole/api/tokens will redirect to http://guacamole/api/tokens
...@@ -63,26 +77,8 @@ export class ElementGuacamoleComponent implements OnInit { ...@@ -63,26 +77,8 @@ export class ElementGuacamoleComponent implements OnInit {
NavList.List[this.index].Rdp = this.el.nativeElement; NavList.List[this.index].Rdp = this.el.nativeElement;
return null; return null;
} }
const now = new Date();
const nowTime = now.getTime() / 1000;
if (!DataStore.guacamole_token || nowTime - DataStore.guacamole_token_time > 3600) {
this._http.get_guacamole_token(User.id, '').subscribe(
data => {
// /guacamole/client will redirect to http://guacamole/#/client
DataStore.guacamole_token = data['authToken'];
DataStore.guacamole_token_time = nowTime;
this.registerHost();
},
error => {
this._logger.error(error);
alert(error.message);
return null;
}
);
} else {
this.registerHost(); this.registerHost();
} }
}
trust(url) { trust(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url); return this.sanitizer.bypassSecurityTrustResourceUrl(url);
......
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