discovery condition port + service

This commit is contained in:
insanity 2018-03-29 20:33:29 +09:00
parent e557f7a608
commit e23ad44191
3 changed files with 70 additions and 49 deletions

View File

@ -1,4 +1,4 @@
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
import { Component, OnInit, Input, OnDestroy, Output, EventEmitter } from '@angular/core';
import { MatChipInputEvent } from '@angular/material';
@Component({
@ -10,6 +10,7 @@ export class InputChipComponent implements OnInit, OnDestroy {
selectedItems = new Array();
@Input() unselectedItems;
@Output() change = new EventEmitter<any>();
constructor() {
}
@ -25,11 +26,13 @@ export class InputChipComponent implements OnInit, OnDestroy {
selected(app: any) {
this.selectedItems.push(app);
this.remove(this.unselectedItems, app);
this.emitEvent();
}
unselected(app: any): void {
this.remove(this.selectedItems, app);
this.unselectedItems.push(app);
this.emitEvent();
}
remove(list: any, target: any) {
@ -45,6 +48,7 @@ export class InputChipComponent implements OnInit, OnDestroy {
t.selectedItems.push(v);
});
this.unselectedItems.length = 0;
this.emitEvent();
}
unselectAll() {
@ -53,5 +57,10 @@ export class InputChipComponent implements OnInit, OnDestroy {
t.unselectedItems.push(v);
});
this.selectedItems.length = 0;
this.emitEvent();
}
emitEvent() {
this.change.emit(this.selectedItems);
}
}

View File

@ -11,40 +11,44 @@
</mat-card-header>
<mat-card-content>
<!-- <form (ngSubmit)="discovery()"> -->
<div>
<div>
<div>
<mat-checkbox [checked]="true" [(ngModel)]="hostChecked" (change)="handleHostCheckChange($event)">Host</mat-checkbox>
</div>
<div>
<mat-form-field *ngIf="hostChecked">
<input matInput placeholder="Start IP" type="string" [(ngModel)]="startIP">
</mat-form-field>
<mat-form-field *ngIf="hostChecked">
<input matInput placeholder="End IP" type="string" [(ngModel)]="endIP">
</mat-form-field>
</div>
<mat-checkbox [checked]="true" [(ngModel)]="hostChecked" (change)="handleHostCheckChange($event)">Host</mat-checkbox>
</div>
<div>
<div>
<mat-checkbox [(ngModel)]="portChecked" (change)="handlePortCheckChange($event)">Port</mat-checkbox>
</div>
<div>
<mat-form-field *ngIf="portChecked">
<input matInput placeholder="Start Port" type="number" [(ngModel)]="startPort">
</mat-form-field>
<mat-form-field *ngIf="portChecked">
<input matInput placeholder="End Port" type="number" [(ngModel)]="endPort">
</mat-form-field>
</div>
<mat-form-field *ngIf="hostChecked">
<input matInput placeholder="Start IP" type="string" [(ngModel)]="startIP">
</mat-form-field>
<mat-form-field *ngIf="hostChecked">
<input matInput placeholder="End IP" type="string" [(ngModel)]="endIP">
</mat-form-field>
</div>
</div>
<div>
<div>
<mat-checkbox [(ngModel)]="portChecked" (change)="handlePortCheckChange($event)">Port</mat-checkbox>
</div>
<div>
<div>
<mat-checkbox [(ngModel)]="serviceChecked" (change)="handleServiceCheckChange($event)">Service</mat-checkbox>
</div>
<div>
<of-input-chip *ngIf="serviceChecked" [unselectedItems]="serviceItems"></of-input-chip>
<div *ngIf="portChecked">
<mat-slide-toggle [checked]="true" [(ngModel)]="tcpChecked">TCP</mat-slide-toggle>
<mat-slide-toggle [checked]="true" [(ngModel)]="udpChecked">UDP</mat-slide-toggle>
</div>
<mat-form-field *ngIf="portChecked">
<input matInput placeholder="Start Port" type="number" [(ngModel)]="startPort">
</mat-form-field>
<mat-form-field *ngIf="portChecked">
<input matInput placeholder="End Port" type="number" [(ngModel)]="endPort">
</mat-form-field>
</div>
</div>
<div>
<div>
<mat-checkbox [(ngModel)]="serviceChecked" (change)="handleServiceCheckChange($event)">Service</mat-checkbox>
</div>
<div>
<of-input-chip *ngIf="serviceChecked" [unselectedItems]="serviceItems" (change)="handleServiceChange($event)"></of-input-chip>
</div>
</div>
<!-- </form> -->
</mat-card-content>
</mat-card>
@ -65,10 +69,7 @@
<div class="tree-node">
<input type="checkbox" [checked]="node.isActive" (change)="checkDiscoveryResult(node)" />
<tree-node-expander [node]="node"></tree-node-expander>
<div
class="node-content-wrapper"
[class.node-content-wrapper-active]="node.isActive"
[class.node-content-wrapper-focused]="node.isFocused"
<div class="node-content-wrapper" [class.node-content-wrapper-active]="node.isActive" [class.node-content-wrapper-focused]="node.isFocused"
(click)="checkDiscoveryResult(node)">
<span [class]="node.data.className" [class.title]="true">{{ node.data.title }}</span>
</div>

View File

@ -1,5 +1,5 @@
import { Component, OnInit, AfterContentInit } from '@angular/core';
import { MatCheckboxChange } from '@angular/material';
import { MatCheckboxChange, MatSlideToggleChange } from '@angular/material';
import { Store, select } from '@ngrx/store';
import { RPCClientError } from '@loafer/ng-rpc/protocol';
import {
@ -45,12 +45,25 @@ export class SettingComponent implements OnInit, AfterContentInit {
hostChecked = true;
portChecked = true;
serviceChecked = true;
tcpChecked = true;
udpChecked = true;
includeServices = null;
serviceItems = [
{ name: 'SSH' },
{ name: 'PostgreSQL' },
{ name: 'DNS' },
{ name: 'WMI'},
{ name: 'SMB' },
{ name: 'ActiveDirectory' },
{ name: 'Cassandra' },
{ name: 'FTP' },
{ name: 'HTTP' },
{ name: 'IMAP' },
{ name: 'LDAP' },
{ name: 'MongoDB' },
{ name: 'MySQL' },
{ name: 'Redis' },
{ name: 'Tomcat' },
{ name: 'Nginx' },
{ name: 'NBSS' },
];
treeNodes = [];
@ -172,6 +185,11 @@ export class SettingComponent implements OnInit, AfterContentInit {
}
handleServiceCheckChange(e: MatCheckboxChange) {
this.includeServices = null;
}
handleServiceChange(list: any) {
this.includeServices = list;
}
discovery() {
@ -179,16 +197,10 @@ export class SettingComponent implements OnInit, AfterContentInit {
this.startPort = '0';
this.endPort = '0';
}
if (!this.serviceChecked) {
const services = new Array();
for (const service of this.includeServices) {
services.push(service.name);
}
const startInfo: DiscoveryStartInfo = {
startIp: this.startIP,
endIP: this.endIP,
startPort: this.startPort,
endPort: this.endPort
};
const discoveryZone: DiscoveryZone = {
discoveryHost: {
firstScanRange: this.startIP,
@ -196,11 +208,11 @@ export class SettingComponent implements OnInit, AfterContentInit {
discoveryPort: {
firstScanRange: this.startPort,
lastScanRange: this.endPort,
includeTCP: true,
includeUDP: true,
includeTCP: this.tcpChecked,
includeUDP: this.udpChecked,
excludePorts: null,
discoveryService: {
includeServices: ['SSH', 'PostgreSQL', 'DNS', 'WMI', 'SMB'],
includeServices: services
}
},
},
@ -210,7 +222,6 @@ export class SettingComponent implements OnInit, AfterContentInit {
this.discoverstore.dispatch(new DiscoverStore.DiscoverZone(
{ probeID: this.probe.probeKey, discoveryZone: discoveryZone }));
this.started = true;
}