diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 478483c2..2fb9f713 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -236,6 +236,8 @@ import { TracengService } from './services/traceng.service'; import { TracengTemplateDetailsComponent } from './components/preferences/traceng/traceng-template-details/traceng-template-details.component'; import { QemuImageCreatorComponent } from './components/project-map/node-editors/configurator/qemu/qemu-image-creator/qemu-image-creator.component'; import { ChooseNameDialogComponent } from './components/projects/choose-name-dialog/choose-name-dialog.component'; +import { PacketCaptureService } from './services/packet-capture.service'; +import { StartCaptureOnStartedLinkActionComponent } from './components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component'; if (environment.production) { Raven.config('https://b2b1cfd9b043491eb6b566fd8acee358@sentry.io/842726', { @@ -398,7 +400,8 @@ if (environment.production) { TracengTemplatesComponent, TracengTemplateDetailsComponent, QemuImageCreatorComponent, - ChooseNameDialogComponent + ChooseNameDialogComponent, + StartCaptureOnStartedLinkActionComponent ], imports: [ BrowserModule, @@ -478,7 +481,8 @@ if (environment.production) { MapSettingsService, InfoService, ComputeService, - TracengService + TracengService, + PacketCaptureService ], entryComponents: [ AddServerDialogComponent, diff --git a/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.spec.ts b/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.spec.ts index 5176c979..0a9a52ba 100644 --- a/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.spec.ts +++ b/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.spec.ts @@ -11,6 +11,8 @@ import { SettingsService } from '../../../../../services/settings.service'; import { MockedSettingsService } from '../../../../../services/settings.service.spec'; import { Node } from '../../../../../cartography/models/node'; import { Server } from '../../../../../models/server'; +import { MockedNodeService } from '../../../project-map.component.spec'; +import { NodeService } from '../../../../../services/node.service'; describe('ConsoleDeviceActionComponent', () => { @@ -20,7 +22,8 @@ describe('ConsoleDeviceActionComponent', () => { let server: Server; let mockedSettingsService: MockedSettingsService; let mockedServerService: MockedServerService; - let mockedToaster: MockedToasterService + let mockedToaster: MockedToasterService; + let mockedNodeService: MockedNodeService = new MockedNodeService(); beforeEach(() => { electronService = { @@ -47,7 +50,8 @@ describe('ConsoleDeviceActionComponent', () => { { provide: ElectronService, useValue: electronService }, { provide: ServerService, useValue: mockedServerService }, { provide: SettingsService, useValue: mockedSettingsService }, - { provide: ToasterService, useValue: mockedToaster } + { provide: ToasterService, useValue: mockedToaster }, + { provide: NodeService, useValue: mockedNodeService } ], imports: [ MatIconModule diff --git a/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.ts b/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.ts index 03496aec..b4c0a39b 100644 --- a/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.ts +++ b/src/app/components/project-map/context-menu/actions/console-device-action/console-device-action.component.ts @@ -5,6 +5,7 @@ import { ElectronService } from 'ngx-electron'; import { ServerService } from '../../../../../services/server.service'; import { SettingsService } from '../../../../../services/settings.service'; import { ToasterService } from '../../../../../services/toaster.service'; +import { NodeService } from '../../../../../services/node.service'; @Component({ selector: 'app-console-device-action', @@ -18,19 +19,14 @@ export class ConsoleDeviceActionComponent implements OnInit { private electronService: ElectronService, private serverService: ServerService, private settingsService: SettingsService, - private toasterService: ToasterService + private toasterService: ToasterService, + private nodeService: NodeService ) { } - ngOnInit() { - } + ngOnInit() {} async console() { - let consoleCommand = this.settingsService.get('console_command'); - - if(consoleCommand === undefined) { - consoleCommand = `putty.exe -telnet \%h \%p -wt \"\%d\" -gns3 5 -skin 4`; - } - + let consoleCommand = this.settingsService.get('console_command') ? this.settingsService.get('console_command') : this.nodeService.getDefaultCommand(); const startedNodes = this.nodes.filter(node => node.status === 'started'); if(startedNodes.length === 0) { diff --git a/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.html b/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.html new file mode 100644 index 00000000..532b38ab --- /dev/null +++ b/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.html @@ -0,0 +1,4 @@ + diff --git a/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.ts b/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.ts new file mode 100644 index 00000000..b7fcd6a3 --- /dev/null +++ b/src/app/components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component.ts @@ -0,0 +1,24 @@ +import { Component, Input } from '@angular/core'; +import { Server } from '../../../../../models/server'; +import { Link } from '../../../../../models/link'; +import { Project } from '../../../../../models/project'; +import { PacketCaptureService } from '../../../../../services/packet-capture.service'; + +@Component({ + selector: 'app-start-capture-on-started-link-action', + templateUrl: './start-capture-on-started-link.component.html' +}) +export class StartCaptureOnStartedLinkActionComponent { + @Input() server: Server; + @Input() project: Project; + @Input() link: Link; + + constructor( + private packetCaptureService: PacketCaptureService + ) {} + + startCapture() { + var splittedFileName = this.link.capture_file_name.split('.'); + this.packetCaptureService.startCapture(this.server, this.project, this.link, splittedFileName[0]); + } +} diff --git a/src/app/components/project-map/context-menu/actions/start-capture/start-capture-action.component.ts b/src/app/components/project-map/context-menu/actions/start-capture/start-capture-action.component.ts index 726e42bf..091b86cb 100644 --- a/src/app/components/project-map/context-menu/actions/start-capture/start-capture-action.component.ts +++ b/src/app/components/project-map/context-menu/actions/start-capture/start-capture-action.component.ts @@ -3,6 +3,7 @@ import { Server } from '../../../../../models/server'; import { Link } from '../../../../../models/link'; import { MatDialog } from '@angular/material'; import { StartCaptureDialogComponent } from '../../../packet-capturing/start-capture/start-capture.component'; +import { Project } from '../../../../../models/project'; @Component({ selector: 'app-start-capture-action', @@ -10,6 +11,7 @@ import { StartCaptureDialogComponent } from '../../../packet-capturing/start-cap }) export class StartCaptureActionComponent { @Input() server: Server; + @Input() project: Project; @Input() link: Link; constructor(private dialog: MatDialog) {} @@ -21,6 +23,7 @@ export class StartCaptureActionComponent { }); let instance = dialogRef.componentInstance; instance.server = this.server; + instance.project = this.project; instance.link = this.link; } } diff --git a/src/app/components/project-map/context-menu/context-menu.component.html b/src/app/components/project-map/context-menu/context-menu.component.html index a8049403..24916844 100644 --- a/src/app/components/project-map/context-menu/context-menu.component.html +++ b/src/app/components/project-map/context-menu/context-menu.component.html @@ -86,17 +86,25 @@ [drawings]="drawings" > + + web_asset +