chg: [website] parse result not in misp standard

main
David Cruciani 2024-02-26 14:53:40 +01:00
parent b5b42e6807
commit 50d6e60074
No known key found for this signature in database
GPG Key ID: 8690CDE1E3994B9B
2 changed files with 93 additions and 13 deletions

View File

@ -60,8 +60,60 @@ function parseMispObject(misp_object, query_url, functionToCall){
)
)
$mainContainer.append(first_elem)
$mainContainer.append(first_elem)
$mainContainer.append(generate(misp_object, query_url, functionToCall))
$mainContainer.append($("<hr>"))
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
}

View File

@ -81,7 +81,7 @@
</li>
</ul>
<div class="row">
<div class="row" style="margin-bottom: 50px;">
<div class="col-10">
<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">
@ -89,14 +89,23 @@
<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">
<button class="accordion-button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
[[key]]
</button>
</h2>
<div :id="'panelsStayOpen-'+key" class="accordion-collapse collapse show">
<div class="accordion-body row">
<template v-for="obj in result.results.Object">
<div v-html="parseMispObject(obj, '/home/{{sid}}?query=', query_as_same)[0].outerHTML"></div>
<div class="accordion-body" >
<template v-if="'Object' in result.results">
<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>
</div>
</div>
@ -104,18 +113,38 @@
</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 v-else-if="tab_list == 'json'">
<div class="row" v-if="Object.keys(modules_res).length">
<div class="col-10">
<div v-if="Object.keys(modules_res).length">
<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 class="accordion">
<div class="accordion" style="width: 95%">
<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">
<button class="accordion-button" data-bs-toggle="collapse" :data-bs-target="'#panelsStayOpen-'+key" aria-expanded="true" :aria-controls="'panelsStayOpen-'+key">
[[key]]
</button>
</h2>
@ -148,8 +177,6 @@
</div>
</div>
</div>
</div>
</div>
</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>
</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>
<div id="list-error" class="list-group">
<template v-for="result, key in modules_res">
@ -340,6 +367,7 @@ Value: [[attr.value]]
history,
generateCoreFormatUI,
parseMispObject,
parseMispAttr,
active_tab,
query_as_same
}