mirror of https://github.com/MISP/misp-modules
chg: [website] parse result not in misp standard
parent
b5b42e6807
commit
50d6e60074
|
@ -60,8 +60,60 @@ function parseMispObject(misp_object, query_url, functionToCall){
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
$mainContainer.append(first_elem)
|
$mainContainer.append(first_elem)
|
||||||
$mainContainer.append(first_elem)
|
|
||||||
$mainContainer.append(generate(misp_object, query_url, functionToCall))
|
$mainContainer.append(generate(misp_object, query_url, functionToCall))
|
||||||
$mainContainer.append($("<hr>"))
|
$mainContainer.append($("<hr>"))
|
||||||
return $mainContainer
|
return $mainContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseMispAttr(misp_attr, misp_types, key, query_url, query_as_same){
|
||||||
|
let $query = $("<a>")
|
||||||
|
let $query_same = null
|
||||||
|
|
||||||
|
if(!misp_types.includes('counter') && !misp_types.includes('datetime') ){
|
||||||
|
if(query_url){
|
||||||
|
$query=$("<a>").attr("href", query_url+misp_attr).text("query").css("margin-left", "10px")
|
||||||
|
}
|
||||||
|
// `_${functionToCall.name}('${misp_attr}')` refer to 'window._query_as_same = query_as_same' in my vue file
|
||||||
|
$query_same = $("<button>").attr({"onclick": `_${query_as_same.name}('${misp_attr}')`,
|
||||||
|
"title": "Query this value with the same attribute and modules as the main query",
|
||||||
|
"class": "btn btn-link"
|
||||||
|
})
|
||||||
|
.text("query as same")
|
||||||
|
.css({"margin-left": "10px", "padding": "0", "--bs-btn-border-width": "0"})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var $mainContainer = $('<div>')
|
||||||
|
let cp = key+1
|
||||||
|
$mainContainer.append($("<h6>").append($("<u>").text("#Attr "+cp)))
|
||||||
|
$mainContainer.append($("<div>").css("display", "flex").append(
|
||||||
|
$("<div>").css({
|
||||||
|
"border-left": "2px solid grey",
|
||||||
|
"border-bottom": "2px solid grey",
|
||||||
|
"width": "15px",
|
||||||
|
"height": "15px",
|
||||||
|
"display": "flex",
|
||||||
|
"margin-left": "0.5em",
|
||||||
|
}),
|
||||||
|
$("<div>").text("Type: "+ misp_types.join(", "))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
$mainContainer.append($("<div>").css("display", "flex").append(
|
||||||
|
$("<div>").css({
|
||||||
|
"border-left": "2px solid grey",
|
||||||
|
"border-bottom": "2px solid grey",
|
||||||
|
"width": "15px",
|
||||||
|
"height": "15px",
|
||||||
|
"display": "flex",
|
||||||
|
"margin-left": "0.5em",
|
||||||
|
}),
|
||||||
|
$("<div>").text("Value: "+ misp_attr),
|
||||||
|
$query,
|
||||||
|
$query_same
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
$mainContainer.append($("<hr>"))
|
||||||
|
return $mainContainer
|
||||||
|
}
|
|
@ -81,7 +81,7 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row" style="margin-bottom: 50px;">
|
||||||
<div class="col-10">
|
<div class="col-10">
|
||||||
<template v-if="tab_list == 'visual'">
|
<template v-if="tab_list == 'visual'">
|
||||||
<div data-bs-spy="scroll" data-bs-target="#list-result" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
|
<div data-bs-spy="scroll" data-bs-target="#list-result" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
|
||||||
|
@ -89,14 +89,23 @@
|
||||||
<div class="accordion-item" :id="'list-item-'+key" v-for="result, key in modules_res">
|
<div class="accordion-item" :id="'list-item-'+key" v-for="result, key in modules_res">
|
||||||
<template v-if="!('error' in result)">
|
<template v-if="!('error' in result)">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
|
<button class="accordion-button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
|
||||||
[[key]]
|
[[key]]
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div :id="'panelsStayOpen-'+key" class="accordion-collapse collapse show">
|
<div :id="'panelsStayOpen-'+key" class="accordion-collapse collapse show">
|
||||||
<div class="accordion-body row">
|
<div class="accordion-body" >
|
||||||
<template v-for="obj in result.results.Object">
|
<template v-if="'Object' in result.results">
|
||||||
<div v-html="parseMispObject(obj, '/home/{{sid}}?query=', query_as_same)[0].outerHTML"></div>
|
<template v-for="obj in result.results.Object">
|
||||||
|
<div v-html="parseMispObject(obj, '/home/{{sid}}?query=', query_as_same)[0].outerHTML"></div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-else>
|
||||||
|
<!-- <div class="accordion-body" v-html="generateCoreFormatUI(result)[0].outerHTML"></div> -->
|
||||||
|
<template v-for="misp_attrs, key_loop in result.results">
|
||||||
|
<div v-for="misp_attr in misp_attrs.values" class="accordion-body" v-html="parseMispAttr(misp_attr, misp_attrs.types, key_loop, '/home/{{sid}}?query=', query_as_same)[0].outerHTML"></div>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -104,18 +113,38 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Errors Part -->
|
||||||
|
<hr style="margin-top: 50px">
|
||||||
|
<h3 id="errors_part">Errors</h3>
|
||||||
|
<div data-bs-spy="scroll" data-bs-target="#list-error" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
|
||||||
|
<div class="accordion">
|
||||||
|
<div class="accordion-item" :id="'list-item-'+key" v-for="result, key in modules_res">
|
||||||
|
<template v-if="'error' in result">
|
||||||
|
<h2 class="accordion-header">
|
||||||
|
<button class="accordion-button" type="button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
|
||||||
|
[[key]]
|
||||||
|
<span style="margin-left: 5px;" title="Error">❌</span>
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div :id="'panelsStayOpen-'+key" class="accordion-collapse collapse show">
|
||||||
|
<div class="accordion-body" v-html="generateCoreFormatUI(result)[0].outerHTML"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-else-if="tab_list == 'json'">
|
<template v-else-if="tab_list == 'json'">
|
||||||
<div class="row" v-if="Object.keys(modules_res).length">
|
<div v-if="Object.keys(modules_res).length">
|
||||||
<div class="col-10">
|
|
||||||
<h3 id="results_part">Results</h3>
|
<h3 id="results_part">Results</h3>
|
||||||
<div data-bs-spy="scroll" data-bs-target="#list-result" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
|
<div data-bs-spy="scroll" data-bs-target="#list-result" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
|
||||||
<div class="accordion">
|
<div class="accordion" style="width: 95%">
|
||||||
<div class="accordion-item" :id="'list-item-'+key" v-for="result, key in modules_res">
|
<div class="accordion-item" :id="'list-item-'+key" v-for="result, key in modules_res">
|
||||||
<template v-if="!('error' in result)">
|
<template v-if="!('error' in result)">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
|
<button class="accordion-button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
|
||||||
[[key]]
|
[[key]]
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -148,8 +177,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -190,7 +217,7 @@ Value: [[attr.value]]
|
||||||
<a class="list-group-item list-group-item-action" v-if="!('error' in result)" :href="'#list-item-'+key">[[key]]</a>
|
<a class="list-group-item list-group-item-action" v-if="!('error' in result)" :href="'#list-item-'+key">[[key]]</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="tab_list == 'json'">
|
<template v-if="tab_list == 'json' || tab_list == 'visual'">
|
||||||
<a class="list-group-item list-group-item-action" style="background-color: #0d6efd; color:white" href="#errors_part">Errors</a>
|
<a class="list-group-item list-group-item-action" style="background-color: #0d6efd; color:white" href="#errors_part">Errors</a>
|
||||||
<div id="list-error" class="list-group">
|
<div id="list-error" class="list-group">
|
||||||
<template v-for="result, key in modules_res">
|
<template v-for="result, key in modules_res">
|
||||||
|
@ -340,6 +367,7 @@ Value: [[attr.value]]
|
||||||
history,
|
history,
|
||||||
generateCoreFormatUI,
|
generateCoreFormatUI,
|
||||||
parseMispObject,
|
parseMispObject,
|
||||||
|
parseMispAttr,
|
||||||
active_tab,
|
active_tab,
|
||||||
query_as_same
|
query_as_same
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue