mirror of https://github.com/MISP/misp-modules
111 lines
6.0 KiB
HTML
111 lines
6.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Misp Modules</title>
|
|
<link rel="icon" href="{{ url_for('static',filename='image/misp.png') }}">
|
|
<script src="{{ url_for('static',filename='js/popper.min.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='bootstrap-5.3.0/js/bootstrap.min.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/jquery.min.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/jquery-ui.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/select2.min.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/vue.global.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/zxcvbn.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/markdown-it.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/editor.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/mermaid-markdown.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/utils.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static',filename='js/jsonParser.js') }}"></script>
|
|
|
|
<script src="{{ url_for('static',filename='js/dayjs/dayjs.min.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/dayjs/dayjs-utc.js') }}"></script>
|
|
<script src="{{ url_for('static',filename='js/dayjs/dayjs-relativeTime.js') }}"></script>
|
|
<script>dayjs.extend(window.dayjs_plugin_utc)</script>
|
|
<script>dayjs.extend(window.dayjs_plugin_relativeTime)</script>
|
|
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/select2.min.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='bootstrap-5.3.0/css/bootstrap.min.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='fontawesome-6.3.0/css/fontawesome.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='fontawesome-6.3.0/css/solid.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='fontawesome-6.3.0/css/brands.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/jquery-ui.css') }}">
|
|
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/core.css') }}">
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/sidebar.css') }}">
|
|
|
|
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/select2-bootstrap-5-theme.min.css') }}">
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container-fluid">
|
|
<div class="row flex-nowrap">
|
|
{% include 'sidebar.html' %}
|
|
|
|
<!--Main layout-->
|
|
<main class="col ps-md-4 pt-2">
|
|
{% include 'macros/_flashes.html' %}
|
|
|
|
<div aria-live="polite" aria-atomic="true" class="">
|
|
<div class="toast-container start-50 translate-middle-x top-0 p-3" style="position: fixed;">
|
|
<template v-if="message_list">
|
|
<template v-for="message in message_list" v-key="message.id">
|
|
<div :id="`liveToast-${message.id}`" :class="`toast bg-${message.toast_class}`" role="alert" aria-live="assertive" data-bs-delay="5000" aria-atomic="true" style="--bs-toast-spacing: 0.5rem;">
|
|
<div class="d-flex">
|
|
<div class="toast-body">
|
|
<template v-if="message.message">
|
|
[[message.message]]
|
|
</template>
|
|
</div>
|
|
<button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
<a href="#" data-bs-target="#sidebar" data-bs-toggle="collapse" class="border rounded-3 p-1 text-decoration-none"><i class="fa-solid fa-bars-staggered"></i> Menu</a>
|
|
{# When extended, the content block contains all the html of the webpage #}
|
|
{% block content %}
|
|
{% endblock %}
|
|
</main>
|
|
<!--Main layout-->
|
|
|
|
{# Implement CSRF protection for site #}
|
|
{% if csrf_token()|safe %}
|
|
<div style="visibility: hidden; display: none">
|
|
<input type="hidden" id="csrf_token" name="csrf_token" value="{{ csrf_token()|safe }}">
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{% block script %}
|
|
<script type="module">
|
|
// Empty vue used for toast to declar vue is used in the rest of the project
|
|
const {createApp} = Vue
|
|
createApp({
|
|
delimiters: ['[[', ']]'],
|
|
setup() {}
|
|
}).mount('.container-fluid')
|
|
</script>
|
|
{% endblock %}
|
|
|
|
<script>
|
|
$( document ).ready(function() {
|
|
$('.message').each((i, el) => {
|
|
const $el = $(el);
|
|
const $xx = $el.find('.close');
|
|
const sec = $el.data('autohide');
|
|
const triggerRemove = () => clearTimeout($el.trigger('remove').T);
|
|
|
|
$el.one('remove', () => $el.remove());
|
|
$xx.one('click', triggerRemove);
|
|
if (sec) $el.T = setTimeout(triggerRemove, sec * 1000);
|
|
});
|
|
})
|
|
</script>
|
|
</body>
|
|
</html> |