openvidu-server dashboard: port fixed to 443 removed

pull/457/head
pabloFuente 2020-04-28 17:39:48 +02:00
parent 0fce47082f
commit a144d27b7b
3 changed files with 75 additions and 78 deletions

View File

@ -15,6 +15,7 @@ import { OpenViduVideoComponent } from './components/layouts/ov-video.component'
import { SessionDetailsComponent } from './components/session-details/session-details.component';
import { InfoService } from './services/info.service';
import { RestService } from './services/rest.service';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
@ -31,6 +32,7 @@ import { RestService } from './services/rest.service';
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
routing,
AppMaterialModule,
FlexLayoutModule

View File

@ -103,20 +103,19 @@ export class DashboardComponent implements OnInit, OnDestroy {
dialogRef = this.dialog.open(CredentialsDialogComponent);
dialogRef.componentInstance.myReference = dialogRef;
dialogRef.afterClosed().subscribe(secret => {
dialogRef.afterClosed().subscribe(async secret => {
if (secret) {
this.restService.getOpenViduToken(secret)
.then((token => {
try {
const token = await this.restService.getToken(secret);
this.connectToSession(token);
}))
.catch(error => {
if (error === 401) { // User unauthorized error. OpenVidu security is active
} catch (error) {
if (error.status === 401) { // User unauthorized error. OpenVidu security is active
this.testVideo();
} else {
console.error(error);
this.msgChain.push('Error connecting to session: ' + error);
console.error(error.error);
this.msgChain.push('Error connecting to session: [' + error.status + '] ' + error.message);
}
}
});
}
});
}

View File

@ -1,86 +1,82 @@
import { Injectable } from '@angular/core';
import { HttpHeaders, HttpClient } from '@angular/common/http';
import { catchError } from 'rxjs/operators';
import { throwError } from 'rxjs';
@Injectable()
export class RestService {
private openviduPublicUrl: string;
constructor(private httpClient: HttpClient) { }
getOpenViduPublicUrl(): Promise<string> {
return new Promise((resolve, reject) => {
if (!!this.openviduPublicUrl) {
resolve(this.openviduPublicUrl);
} else {
const url = location.protocol + '//' + location.hostname + ((!!location.port) ? (':' + location.port) : '') +
'/config/openvidu-publicurl';
const http = new XMLHttpRequest();
http.onreadystatechange = () => {
if (http.readyState === 4) {
if (http.status === 200) {
this.openviduPublicUrl = http.responseText;
resolve(http.responseText);
} else {
reject('Error getting OpenVidu publicurl');
}
};
}
http.open('GET', url, true);
http.send();
this.httpClient.get(location.protocol + '//' + location.hostname + ((!!location.port) ? (':' + location.port) : '') +
'/config/openvidu-publicurl', { responseType: 'text' }).pipe(
catchError(error => {
reject(error);
return throwError(error);
})
)
.subscribe(response => {
this.openviduPublicUrl = response;
resolve(response);
});
}
});
}
getOpenViduToken(secret: string): Promise<string> {
if (!this.openviduPublicUrl) {
this.getOpenViduPublicUrl().then(() => {
return this.getOpenViduToken(secret);
});
} else {
async getToken(secret: string): Promise<string> {
const sessionId: string = await this.createSession(secret);
return await this.createToken(sessionId, secret);
}
createSession(secret: String): Promise<string> {
return new Promise((resolve, reject) => {
const url1 = 'https://OPENVIDUAPP:' + secret + '@' + this.openviduPublicUrl.split('://')[1] + 'api/sessions';
const http1 = new XMLHttpRequest();
const data1 = {};
data1['mediaMode'] = 'ROUTED';
data1['recordingMode'] = 'MANUAL';
data1['RECORDING_LAYOUT'] = 'BEST_FIT';
const json1 = JSON.stringify(data1);
http1.onreadystatechange = () => {
if (http1.status === 401) {
reject(401);
} else if (http1.readyState === 4) {
if (http1.status === 200) {
const sessionId = JSON.parse(http1.responseText).id;
const url2 = this.openviduPublicUrl + 'api/tokens';
const http2 = new XMLHttpRequest();
const data2 = {};
data2['session'] = sessionId;
const json2 = JSON.stringify(data2);
http2.onreadystatechange = () => {
if (http2.readyState === 4) {
if (http2.status === 200) {
resolve(JSON.parse(http2.responseText).id);
} else {
reject(http2.status);
}
const body = JSON.stringify({});
const options = {
headers: new HttpHeaders({
'Authorization': 'Basic ' + btoa('OPENVIDUAPP:' + secret),
'Content-Type': 'application/json'
})
};
}
http2.open('POST', url2, true);
http2.setRequestHeader('Content-type', 'application/json');
http2.setRequestHeader('Authorization', 'Basic ' + btoa('OPENVIDUAPP:' + secret));
http2.send(json2);
} else {
reject(http1.status);
}
};
}
http1.open('POST', url1, true);
http1.setRequestHeader('Content-type', 'application/json');
http1.send(json1);
this.httpClient.post(this.openviduPublicUrl + 'api/sessions', body, options)
.pipe(
catchError(error => {
reject(error);
return throwError(error);
})
)
.subscribe(response => {
resolve(response['id']);
});
});
}
createToken(session, secret): Promise<string> {
return new Promise((resolve, reject) => {
const body = JSON.stringify({ session });
const options = {
headers: new HttpHeaders({
'Authorization': 'Basic ' + btoa('OPENVIDUAPP:' + secret),
'Content-Type': 'application/json'
})
};
this.httpClient.post(this.openviduPublicUrl + 'api/tokens', body, options)
.pipe(
catchError(error => {
reject(error);
return throwError(error);
})
)
.subscribe(response => {
resolve(response['token']);
});
});
}
}