You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2018/08/17 15:34:40 UTC
[25/51] [abbrv] metron git commit: METRON-1662 PCAP UI - Downloading
PCAP page files (tiborm via merrimanr) closes apache/metron#1118
METRON-1662 PCAP UI - Downloading PCAP page files (tiborm via merrimanr) closes apache/metron#1118
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/b445bfe2
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/b445bfe2
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/b445bfe2
Branch: refs/heads/master
Commit: b445bfe242123e544c1fef41e2ab5bdc07dbc56e
Parents: 2b6959b
Author: tiborm <ti...@gmail.com>
Authored: Fri Aug 3 08:13:11 2018 -0500
Committer: rmerriman <me...@gmail.com>
Committed: Fri Aug 3 08:13:11 2018 -0500
----------------------------------------------------------------------
.../metron-alerts/src/app/pcap/model/pdml.ts | 12 +++-----
.../pcap/pcap-packet/pcap-packet.component.ts | 9 ++----
.../pcap/pcap-panel/pcap-panel.component.html | 2 +-
.../app/pcap/pcap-panel/pcap-panel.component.ts | 30 +++++++++++---------
.../src/app/pcap/service/pcap.service.ts | 15 ++++++----
5 files changed, 33 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts b/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
index 97fc347..34245c6 100644
--- a/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/model/pdml.ts
@@ -17,8 +17,7 @@
*/
export class PdmlField {
- //public $: any[]
- public name: string;
+ public name: string;
public fields?: PdmlField[]
public show: string;
public value: string;
@@ -26,9 +25,8 @@
}
export class PdmlProto {
- //public $: any
- public name: string;
- public showname: string;
+ public name: string;
+ public showname: string;
public fields: PdmlField[]
public static findField(p: PdmlProto, name: string): PdmlField {
@@ -36,10 +34,8 @@ export class PdmlProto {
}
}
-
export class PdmlPacket {
- //public $: any
- public name: string;
+ public name: string;
public protos: PdmlProto[]
public expanded: boolean = false
}
http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
index f1bbe2d..ca28a39 100644
--- a/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/pcap-packet/pcap-packet.component.ts
@@ -24,16 +24,11 @@ import { PdmlPacket } from '../model/pdml'
templateUrl: './pcap-packet.component.html',
styleUrls: ['./pcap-packet.component.scss']
})
-export class PcapPacketComponent implements OnInit {
+export class PcapPacketComponent {
@Input() packet: PdmlPacket
- constructor() { }
-
- ngOnInit() {
- }
-
toggle() {
- this.packet.expanded = !this.packet.expanded
+ this.packet.expanded = !this.packet.expanded;
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
index b373914..1fd250f 100644
--- a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
+++ b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.html
@@ -27,5 +27,5 @@
<div class="panel-body" *ngIf="pdml">
<app-pcap-list [packets]="pdml.packets"></app-pcap-list>
</div>
-
+ <a class="btn btn-primary" [attr.href]="getDownloadUrl()" *ngIf="pdml">Download PCAP</a>
</div>
http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
index fd49ec7..4114e24 100644
--- a/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
@@ -15,47 +15,45 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { Component, OnInit, Input } from '@angular/core';
+import { Component, Input } from '@angular/core';
-import { PcapService, PcapStatusResponse } from '../service/pcap.service'
-import { PcapRequest } from '../model/pcap.request'
-import { Pdml } from '../model/pdml'
-import {Subscription} from "rxjs/Rx";
+import { PcapService, PcapStatusResponse } from '../service/pcap.service';
+import { PcapRequest } from '../model/pcap.request';
+import { Pdml } from '../model/pdml';
+import { Subscription } from 'rxjs/Rx';
@Component({
selector: 'app-pcap-panel',
templateUrl: './pcap-panel.component.html',
styleUrls: ['./pcap-panel.component.scss']
})
-export class PcapPanelComponent implements OnInit {
+export class PcapPanelComponent {
@Input() pdml: Pdml = null;
-
@Input() pcapRequest: PcapRequest;
statusSubscription: Subscription;
queryRunning: boolean = false;
+ queryId: string;
progressWidth: number = 0;
selectedPage: number = 1;
errorMsg: string;
- constructor(private pcapService: PcapService ) { }
-
- ngOnInit() {
- }
+ constructor(private pcapService: PcapService) {}
onSearch(pcapRequest) {
console.log(pcapRequest);
this.pdml = null;
this.progressWidth = 0;
- this.pcapService.submitRequest(pcapRequest).subscribe(id => {
+ this.pcapService.submitRequest(pcapRequest).subscribe((submitResponse: PcapStatusResponse) => {
+ this.queryId = submitResponse.jobId;
this.queryRunning = true;
this.errorMsg = null;
- this.statusSubscription = this.pcapService.pollStatus(id).subscribe((statusResponse: PcapStatusResponse) => {
+ this.statusSubscription = this.pcapService.pollStatus(submitResponse.jobId).subscribe((statusResponse: PcapStatusResponse) => {
if ('SUCCEEDED' === statusResponse.jobStatus) {
this.statusSubscription.unsubscribe();
this.queryRunning = false;
- this.pcapService.getPackets(id, this.selectedPage).toPromise().then(pdml => {
+ this.pcapService.getPackets(submitResponse.jobId, this.selectedPage).toPromise().then(pdml => {
this.pdml = pdml;
});
} else if ('FAILED' === statusResponse.jobStatus) {
@@ -72,4 +70,8 @@ export class PcapPanelComponent implements OnInit {
});
});
}
+
+ getDownloadUrl() {
+ return this.pcapService.getDownloadUrl(this.queryId, this.selectedPage);
+ }
}
http://git-wip-us.apache.org/repos/asf/metron/blob/b445bfe2/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.ts b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.ts
index 5f6f33c..ba209c4 100644
--- a/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.ts
+++ b/metron-interface/metron-alerts/src/app/pcap/service/pcap.service.ts
@@ -16,8 +16,8 @@
* limitations under the License.
*/
import {Injectable, NgZone} from '@angular/core';
-import {Observable, Subject} from 'rxjs/Rx';
-import {Http, Headers, RequestOptions, Response} from '@angular/http';
+import {Observable} from 'rxjs/Rx';
+import {Http, Headers, RequestOptions} from '@angular/http';
import {HttpUtil} from '../../utils/httpUtil';
import 'rxjs/add/operator/map';
@@ -26,9 +26,10 @@ import {PcapRequest} from '../model/pcap.request';
import {Pdml} from '../model/pdml';
export class PcapStatusResponse {
+ jobId: string;
jobStatus: string;
percentComplete: number;
- pageTotal: number;
+ totalPages: number;
}
@Injectable()
@@ -46,9 +47,9 @@ export class PcapService {
});
}
- public submitRequest(pcapRequest: PcapRequest): Observable<string> {
+ public submitRequest(pcapRequest: PcapRequest): Observable<PcapStatusResponse> {
return this.http.post('/api/v1/pcap/fixed', pcapRequest, new RequestOptions({headers: new Headers(this.defaultHeaders)}))
- .map(result => JSON.parse(result.text()).jobId)
+ .map(result => result.json() as PcapStatusResponse)
.catch(HttpUtil.handleError)
.onErrorResumeNext();
}
@@ -65,4 +66,8 @@ export class PcapService {
.catch(HttpUtil.handleError)
.onErrorResumeNext();
}
+
+ public getDownloadUrl(id: string, pageNo: number) {
+ return `/api/v1/pcap/${id}/raw?page=${pageNo}`;
+ }
}