diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 8586b738..d2f2dd46 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -59,6 +59,7 @@ import { AddTracengTemplateComponent } from './components/preferences/traceng/ad import { TracengTemplateDetailsComponent } from './components/preferences/traceng/traceng-template-details/traceng-template-details.component'; import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component'; import { Gns3vmComponent } from './components/preferences/gns3vm/gns3vm.component'; +import { DirectLinkComponent } from './components/direct-link/direct-link.component'; const routes: Routes = [ { @@ -73,6 +74,8 @@ const routes: Routes = [ { path: 'settings', component: SettingsComponent }, { path: 'settings/console', component: ConsoleComponent }, { path: 'installed-software', component: InstalledSoftwareComponent }, + + { path: 'server/:server_ip/:server_port/project/:project_id', component: DirectLinkComponent}, { path: 'server/:server_id/project/:project_id/snapshots', component: ListOfSnapshotsComponent }, { path: 'server/:server_id/preferences', component: PreferencesComponent }, { path: 'server/:server_id/preferences/gns3vm', component: Gns3vmComponent }, diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 7c16b328..a95b4a10 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -259,6 +259,7 @@ import { ThemeService } from './services/theme.service'; import { ConfigureGns3VMDialogComponent } from './components/servers/configure-gns3vm-dialog/configure-gns3vm-dialog.component'; import { ImportApplianceComponent } from './components/project-map/import-appliance/import-appliance.component'; import { GoogleAnalyticsService } from './services/google-analytics.service'; +import { DirectLinkComponent } from './components/direct-link/direct-link.component'; if (environment.production) { Raven.config('https://b2b1cfd9b043491eb6b566fd8acee358@sentry.io/842726', { @@ -435,7 +436,8 @@ if (environment.production) { ConfigDialogComponent, Gns3vmComponent, ConfigureGns3VMDialogComponent, - ImportApplianceComponent + ImportApplianceComponent, + DirectLinkComponent ], imports: [ BrowserModule, diff --git a/src/app/components/direct-link/direct-link.component.html b/src/app/components/direct-link/direct-link.component.html new file mode 100644 index 00000000..e69de29b diff --git a/src/app/components/direct-link/direct-link.component.scss b/src/app/components/direct-link/direct-link.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/components/direct-link/direct-link.component.spec.ts b/src/app/components/direct-link/direct-link.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app/components/direct-link/direct-link.component.ts b/src/app/components/direct-link/direct-link.component.ts new file mode 100644 index 00000000..88a9efc1 --- /dev/null +++ b/src/app/components/direct-link/direct-link.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, ElementRef, ViewChild, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core'; +import { ServerService } from '../../services/server.service'; +import { ServerDatabase } from '../../services/server.database'; +import { Router, ActivatedRoute } from '@angular/router'; +import { Server } from '../../models/server'; +import { ToasterService } from '../../services/toaster.service'; + +@Component({ + selector: 'app-direct-link', + templateUrl: './direct-link.component.html', + styleUrls: ['./direct-link.component.scss'], + encapsulation: ViewEncapsulation.None +}) +export class DirectLinkComponent implements OnInit { + constructor( + private serverService: ServerService, + private serverDatabase: ServerDatabase, + private route: ActivatedRoute, + private router: Router, + private toasterService: ToasterService + ) {} + + async ngOnInit() { + const serverIp = this.route.snapshot.paramMap.get('server_ip'); + const serverPort = +this.route.snapshot.paramMap.get('server_port'); + const projectId = this.route.snapshot.paramMap.get('project_id'); + + const servers = await this.serverService.findAll(); + const server = servers.filter(server => server.host === serverIp && server.port === serverPort)[0]; + + if (server) { + this.router.navigate(['/server', server.id, 'project', projectId]); + } else { + this.toasterService.error('Server not found'); + } + } +}