TANGWY 5 months ago
parent 501c16f4ab
commit d4645e423b
  1. 4
      src/app/routes/config/layout/manage/manage.component.html
  2. 128
      src/app/routes/config/layout/manage/manage.component.ts
  3. 32
      src/app/routes/config/layout/manage/path/path.component.ts
  4. 9
      src/app/routes/config/service/https/notice.service.ts

@ -22,7 +22,7 @@
</div> </div>
<div class="table-container" style="margin-top: 50px;height:100vh;"> <div class="table-container" style="margin-top: 50px;height:100vh;">
<div style="display: flex;justify-content: right;"><button nz-button (click)="exportExcel()">导出</button></div> <div style="display: flex;justify-content: right;"><button nz-button [hidden]="exportIsVisable" (click)="exportExcel()">导出</button></div>
<nz-table *ngIf="tableisShow === '1'" #basicTable [nzData]="listOfData"> <nz-table *ngIf="tableisShow === '1'" #basicTable [nzData]="listOfData">
<thead> <thead>
@ -131,7 +131,7 @@
"frequency_rate": 0.263449367088608, "frequency_rate": 0.263449367088608,
"frequency_avg": 111, "frequency_avg": 111,
"trend": 0.09 --> "trend": 0.09 -->
<td><a (click)="showModel({type: 3, key: data.menu_name})">{{ data.menu_name }}</a></td> <td><a (click)="showModel({type: 4, key: data.menu_name})">{{ data.menu_name }}</a></td>
<td>{{ data.req_frequency }}</td> <td>{{ data.req_frequency }}</td>
<td>{{ data.frequency_rate| percent: '1.1-2' }}</td> <td>{{ data.frequency_rate| percent: '1.1-2' }}</td>
<td>{{ data.frequency_avg| number: '1.2-2'}}</td> <td>{{ data.frequency_avg| number: '1.2-2'}}</td>

@ -71,7 +71,7 @@ export class ManageComponent implements OnInit {
isVisible = false isVisible = false
detail_data : any; detail_data : any;
destroySubscriptions: Subscription[] = []; destroySubscriptions: Subscription[] = [];
exportIsVisable = true;
constructor( constructor(
private noticeService: NoticeService, private noticeService: NoticeService,
public message: NzMessageService, public message: NzMessageService,
@ -91,91 +91,83 @@ export class ManageComponent implements OnInit {
saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION); saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);
} }
onSubmit(){ private getAnalysisResult(startDate,endDate,queryDates){ // 获取es的查询最大日期范围
// 日期校验 this.noticeService.getQueryRange().subscribe(resp => {
console.log("resp.retcode"+resp.retcode);
if (resp.retcode === 200) {
console.log(resp.data.query_range);
if (queryDates >resp.data.query_range ){
alert('查询范围不能超过'+resp.data.query_range+'天');
return;
}else{
this.submitLoading = true; this.submitLoading = true;
this.tableisShow = this.dimension; this.noticeService.getUebaResult({"type":this.dimension,"startDate":startDate,"endDate":endDate}).subscribe(resp => {
if (this.dateRange.length === 2) { if (resp.code === 200) {
const startDate = this.dateRange[0]; this.summary_detal_data = resp
const endDate = this.dateRange[1];
console.log(startDate);
//alert(`Selected Date Range: ${startDate.toLocaleDateString()} - ${endDate.toLocaleDateString()}`);
} else {
alert('Please select a date range.');
}
// 获取es的查询最大日期范围
// this.noticeService.getQueryRange().subscribe(resp => {
// if (resp.status === 200) {
// console.log(resp.data);
// } else {
// this.message.error(resp.msg);
// }
// },
// error => {
// this.message.error('服务器错误');
// })
// 获取es数据 暂时mock数据
this.summary_detal_data = this.mockData
this.listOfData=[]
if (this.summary_detal_data.code === 0) {
switch(this.dimension.toString()){ switch(this.dimension.toString()){
case "1": case "1":
this.listOfData = this.summary_detal_data.data.summary.ip; this.listOfData = resp.data.summary.ip;
console.log("1"+this.dimension.toString())
break; break;
case "2": case "2":
this.listOfData = this.summary_detal_data.data.summary.account; this.listOfData = resp.data.summary.account;
console.log("2"+this.dimension.toString())
break; break;
case "3": case "3":
this.listOfData = this.summary_detal_data.data.summary.interface; this.listOfData = resp.data.summary.interface;
console.log("3"+this.dimension.toString())
break; break;
case "4": case "4":
this.listOfData = this.summary_detal_data.data.summary.menu; this.listOfData = resp.data.summary.menu;
console.log("4"+this.dimension.toString())
break; break;
} }
}
this.tableisShow = this.dimension;
this.submitLoading = false;
if(this.tableisShow!=undefined){
this.exportIsVisable = false;
}
},
error => {
this.message.error('服务器错误');
this.submitLoading = false;
})
// this.tableisShow = this.dimension;
//this.submitLoading = false;
}
}else{
return undefined;
}
},
error => {
this.message.error('服务器错误');
})
}
private querySubmit(){
var startDate :any;
var endDate :any;
if (this.dateRange.length === 2) {
startDate = this.dateRange[0];
endDate = this.dateRange[1];
} else { } else {
this.message.error("error"); alert('请选择查询范围');
return;
} }
// this.listOfData = resp.data.summary.ip; let timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
// this.noticeService.getUebaResult({"type":eventVal}).subscribe(resp => { let diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
// if (resp.code === 200) {
// switch(this.dimension.toString()){ this.getAnalysisResult(startDate,endDate,diffDays)
// case "1": }
// this.listOfData = resp.summary.ip; onSubmit(){
// case "2": this.querySubmit();
// this.listOfData = resp.summary.account;
// case "3":
// this.listOfData = resp.summary.interface;
// case "4":
// this.listOfData = resp.summary.menu;
// }
// } else {
// this.message.error(resp.msg);
// }
// },
// error => {
// this.message.error('服务器错误');
// })
} }
ngOnInit() { ngOnInit() {
const now = new Date(); const now = new Date();
const oneWeekAgo = new Date(); const oneWeekAgo = new Date();
oneWeekAgo.setDate(now.getDate() - 7); oneWeekAgo.setDate(now.getDate() - 7);
this.dateRange = [oneWeekAgo, now]; this.dateRange = [oneWeekAgo, now];
//this.onSubmit()
this.onSubmit()
}
getMenuItem(e) {
console.log(e.el.dataset.id);
// this.key = e.el.dataset.id;
} }
exportExcel(){ exportExcel(){
@ -206,6 +198,7 @@ export class ManageComponent implements OnInit {
showModel(data){ showModel(data){
var tmpdata :any; var tmpdata :any;
if(this.summary_detal_data != undefined){
switch(data.type){ switch(data.type){
case 1: case 1:
tmpdata=this.summary_detal_data.data.detail.ip[data.key]; tmpdata=this.summary_detal_data.data.detail.ip[data.key];
@ -222,6 +215,8 @@ export class ManageComponent implements OnInit {
} }
var diagData = { var diagData = {
"type": data.type, "type": data.type,
"startTime": Math.floor(this.dateRange[0].getTime() / 1000),
"endTime": Math.floor(this.dateRange[1].getTime() / 1000),
[data.key]: tmpdata [data.key]: tmpdata
} }
@ -229,6 +224,7 @@ export class ManageComponent implements OnInit {
console.log(JSON.stringify(this.detail_data)); console.log(JSON.stringify(this.detail_data));
this.isVisible=true; this.isVisible=true;
} }
}
cancelSearch(): void { cancelSearch(): void {
this.submitLoading = false; this.submitLoading = false;
this.logLoading = false; this.logLoading = false;

@ -14,10 +14,12 @@ export class PathComponent implements OnInit, OnChanges {
whiteListParam = {}; whiteListParam = {};
greyListParam = {}; greyListParam = {};
rules; rules;
queryLogUrl = "/WebApi/isoc/static/base/#/route/threat-state/log/action?"
// /WebApi/isoc/static/base/#/route/threat-state/log/action?startTime=1717396269&endTime=1717403469&sip=zhang3
constructor( constructor(
private noticeService: NoticeService, private noticeService: NoticeService,
public message: NzMessageService, public message: NzMessageService,
) {} ) {}
ngOnInit() { ngOnInit() {
@ -26,10 +28,10 @@ export class PathComponent implements OnInit, OnChanges {
// this.detail_data = JSON.parse(jsonStr); // this.detail_data = JSON.parse(jsonStr);
// } // }
this.parseData(); this.parseData();
if (this.rules == null) { if (this.rules === undefined) {
this.noticeService.getDefaultRule().subscribe( this.noticeService.getDefaultRule().subscribe(
resp => { resp => {
if (resp.status === 200) { if (resp.code === 200) {
this.rules = resp.data; this.rules = resp.data;
} else { } else {
this.message.error(resp.msg); this.message.error(resp.msg);
@ -55,6 +57,9 @@ export class PathComponent implements OnInit, OnChanges {
if (dataKey === 'type') { if (dataKey === 'type') {
this.viewType = this.detail_data[dataKey]; this.viewType = this.detail_data[dataKey];
} else { } else {
if(dataKey === 'startTime'||dataKey === 'endTime'){
continue;
}
this.data = this.detail_data[dataKey]; this.data = this.detail_data[dataKey];
this.data.forEach(item => { this.data.forEach(item => {
item['is_in_white_list'] = 0; item['is_in_white_list'] = 0;
@ -133,6 +138,7 @@ export class PathComponent implements OnInit, OnChanges {
case 4: case 4:
break; break;
} }
this.greyListParam["type"]=0;
this.noticeService.addGreyList(this.greyListParam).subscribe( this.noticeService.addGreyList(this.greyListParam).subscribe(
resp => { resp => {
if (resp.status === 200) { if (resp.status === 200) {
@ -149,7 +155,25 @@ export class PathComponent implements OnInit, OnChanges {
} }
clickFrequency(data) { clickFrequency(data) {
alert("点击超链接"); if(this.detail_data!=undefined){
var params = "startTime="+this.detail_data.startTime+"&endTime="+this.detail_data.endTime;
switch(this.detail_data.type) {
case 1:
params += "&sip="+data.req_ip;
break;
case 2:
params += "&sip="+data.req_account;
break;
case 3:
params += "&sip="+data.interface_addr;
break;
case 4:
params += "&sip="+data.menu_name;
break;
}
window.open(this.queryLogUrl+params, '_blank');
}
} }
// 在组件类中 // 在组件类中

@ -25,18 +25,19 @@ export class NoticeService {
} }
swicthBtn(params: any) { swicthBtn(params: any) {
const url = '/notice/inner/v1/plugin/plugin_update_status'; const url = '/notice/inner/v1/plugin/plugin_update_status/';
return this.httpService.put(url, {}, params); return this.httpService.put(url, {}, params);
} }
getQueryRange() { getQueryRange() {
//{"msg": "\u67e5\u8be2\u6210\u529f", "data": {"query_range": 50, "queryable_day": {"incident": 14, "log": 7}}, "retcode": 200}
const url = '/isoc/api/v1/isoc_sys_config/get_query_range'; const url = '/isoc/api/v1/isoc_sys_config/get_query_range';
return this.httpService.get(url,{}); return this.httpService.get(url,{});
} }
getUebaResult(params:any) { getUebaResult(params:any) {
const url = '/uebaMetricsAnalysis/ueba_metrics/get_summary_data_list'; const url = '/uebaMetricsAnalysis/ueba_metrics/get_summary_data_list/';
return this.httpService.get(url, params,30000); return this.httpService.get(url, params);
} }
// 引擎接口 // 引擎接口
@ -246,7 +247,7 @@ export class NoticeService {
// "code": 200, // "code": 200,
// "data": null // "data": null
// } // }
const url = '/ditingEngine/diting/global/whitelist_add'; const url = '/ditingEngine/ueba/engine_name_list/add/';
return this.httpService.post(url,{}, params); return this.httpService.post(url,{}, params);
} }

Loading…
Cancel
Save