2017-07-23 19:56:51 +02:00
{% extends "main.html" %}
2023-01-23 16:24:01 +01:00
{% from 'bootstrap5/utils.html' import render_icon %}
2022-01-14 15:58:06 +01:00
{% from 'bootstrap5/utils.html' import render_messages %}
2020-07-15 18:04:34 +02:00
{% from "macros.html" import shorten_string %}
2020-07-03 18:25:16 +02:00
2022-12-07 14:32:13 +01:00
{% block title %}Capture of {{info.url}}{% endblock %}
2021-01-17 12:41:01 +01:00
{% block card %}
2021-01-17 12:49:29 +01:00
< meta property = "og:title" content = "Lookyloo capture" / >
< meta property = "og:type" content = "website" / >
2021-01-17 12:41:01 +01:00
< meta
2021-01-17 12:49:29 +01:00
property="og:description"
2022-12-07 14:32:13 +01:00
content="URL captured: {{info.url}}"
2021-01-17 12:41:01 +01:00
/>
< meta
2021-01-17 12:49:29 +01:00
property="og:image"
2021-01-18 16:37:17 +01:00
content="https://{{public_domain}}{{ url_for('thumbnail', tree_uuid=tree_uuid, width=1200) }}"
2021-01-17 13:23:30 +01:00
/>
2021-01-18 12:50:58 +01:00
< meta property = "og:image:width" content = "1200" / >
< meta property = "og:image:height" content = "630" / >
2021-01-17 12:41:01 +01:00
< meta
2021-01-17 12:49:29 +01:00
property="og:url"
2021-01-18 16:37:17 +01:00
content="https://{{public_domain}}{{ url_for('tree', tree_uuid=tree_uuid) }}"
2021-01-17 12:41:01 +01:00
/>
2021-01-17 13:13:43 +01:00
< meta name = "twitter:card" content = "summary_large_image" >
2021-01-17 12:41:01 +01:00
{% endblock %}
2017-07-23 19:56:51 +02:00
2017-09-29 14:48:37 +02:00
{% block scripts %}
2019-06-28 12:08:35 +02:00
{{ super() }}
2023-01-20 12:47:45 +01:00
< script src = '{{ url_for(' static ' , filename = 'd3.min.js' ) } } '
integrity="{{get_sri('static', 'd3.min.js')}}"
2021-06-17 02:36:01 +02:00
crossorigin="anonymous">< / script >
< script src = '{{ url_for(' static ' , filename = 'tree.js' ) } } '
integrity="{{get_sri('static', 'tree.js')}}"
crossorigin="anonymous">< / script >
2020-10-28 18:49:15 +01:00
2021-11-30 14:59:48 +01:00
< script >
$('#hashlookupModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
< / script >
2020-04-20 16:41:42 +02:00
< script >
$('#modulesModal').on('show.bs.modal', function(e) {
2020-07-27 18:37:22 +02:00
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
2020-04-20 16:41:42 +02:00
});
2022-07-15 18:53:49 +02:00
$('#historyModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
2020-10-28 18:49:15 +01:00
$('.modulesForceRefresh').on('click',function(){
2022-10-26 14:35:13 +02:00
$('#modulesModal .modal-body').text("Reloading modules, please wait...")
2020-12-15 01:24:40 +01:00
$('#modulesModal .modal-body').load("{{ url_for('trigger_modules', tree_uuid=tree_uuid, force=True) }}", function(){
2020-10-28 18:49:15 +01:00
$('#modulesModal').modal({show:true});
});
});
2020-04-20 16:41:42 +02:00
< / script >
2020-10-28 18:49:15 +01:00
2020-04-20 16:41:42 +02:00
< script >
2020-10-28 18:49:15 +01:00
$('#categoriesModal').on('show.bs.modal', function(e) {
2020-05-13 17:31:27 +02:00
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
2020-10-28 18:49:15 +01:00
$('#searchCategories').submit(function(event){
var query = $("#query").val();
$('.modal-body').load("{{ url_for('categories_capture', tree_uuid=tree_uuid) }}" + query, function() {
$('#categoriesModal').modal({show:true});
});
event.preventDefault();
});
2020-05-13 17:31:27 +02:00
< / script >
2020-10-28 18:49:15 +01:00
2020-05-13 17:31:27 +02:00
< script >
2020-10-28 18:49:15 +01:00
$('#statsModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
2020-04-20 16:41:42 +02:00
});
< / script >
2021-02-04 19:51:43 +01:00
< script >
2022-08-01 17:51:43 +02:00
$('#bodyHashesModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
< / script >
< script >
2021-02-04 19:51:43 +01:00
$('#mispPushModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
< / script >
2021-03-19 17:51:25 +01:00
< script >
2021-06-02 00:31:14 +02:00
$('#mispLookupModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
< / script >
< script >
2021-03-19 17:51:25 +01:00
$('#urlsInPageModal').on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
var modal = $(this);
modal.find('.modal-body').load(button.data("remote"));
});
< / script >
2020-10-28 18:49:15 +01:00
2020-06-29 11:59:01 +02:00
< script >
2021-01-20 01:28:54 +01:00
{% if urlnode_uuid %}
2020-06-29 11:59:01 +02:00
history.scrollRestoration = "manual";
window.addEventListener('DOMContentLoaded', (event) => {
2021-01-20 01:28:54 +01:00
LocateNode('{{urlnode_uuid}}');
});
{% else %}
window.addEventListener('DOMContentLoaded', (event) => {
2021-03-25 18:32:48 +01:00
let thumbnail = document.getElementById('screenshot_thumbnail');
2021-03-30 00:45:24 +02:00
thumbnail.scrollIntoView({behavior: "smooth", block: "end", inline: "center"});
2020-06-29 11:59:01 +02:00
});
{% endif%}
2021-01-20 01:28:54 +01:00
< / script >
2020-11-22 23:23:42 +01:00
{% if auto_trigger_modules %}
< script >
2021-05-20 00:03:07 +02:00
$.get("{{ url_for('trigger_modules', tree_uuid=tree_uuid, auto_trigger=True) }}")
2020-11-22 23:23:42 +01:00
< / script >
{% endif%}
2023-02-27 16:01:46 +01:00
{% if enable_monitoring %}
< script >
const today = new Date()
let tomorrow = new Date()
tomorrow.setDate(today.getDate() + 1)
document.getElementById('expire_at').min = tomorrow.toISOString().split('T')[0];
document.getElementById('expire_at').value = tomorrow.toISOString().split('T')[0];
< / script >
{% endif%}
2021-05-11 19:52:55 +02:00
{% endblock %}
2020-11-22 23:23:42 +01:00
2021-05-11 19:52:55 +02:00
{% block styles %}
{{ super() }}
< link rel = "stylesheet" href = "{{ url_for('static', filename='tree.css') }}" >
2017-09-29 14:48:37 +02:00
{% endblock %}
2017-09-22 00:26:38 +02:00
2021-05-11 19:52:55 +02:00
2017-07-23 19:56:51 +02:00
{% block content %}
2017-09-25 15:11:01 +02:00
{{super()}}
2020-07-27 18:37:22 +02:00
2017-09-22 00:26:38 +02:00
< script >
2020-05-20 19:11:15 +02:00
var treeUUID = "{{ tree_uuid }}";
2020-12-09 19:11:19 +01:00
var screenshot_thumbnail = "{{ screenshot_thumbnail }}";
2020-11-29 23:56:42 +01:00
var enable_bookmark = {{ enable_bookmark|tojson }};
2019-06-28 12:08:35 +02:00
var treeData = {{ tree_json | safe }};
2021-05-28 00:23:04 +02:00
var parent_uuid = {{ parent_uuid|tojson }};
2022-12-07 14:32:13 +01:00
var capture_starttime = new Date(Date.parse("{{ info.timestamp.isoformat() }}"));
2020-12-10 16:26:37 +01:00
window.addEventListener('DOMContentLoaded', (event) => {
document.getElementById("start_time").innerHTML =
2021-03-25 18:32:48 +01:00
`${capture_starttime.getFullYear()}-${("0" + (capture_starttime.getMonth() + 1)).slice(-2)}-${("0" + capture_starttime.getDate()).slice(-2)} ${capture_starttime.toLocaleTimeString()}`;
2020-12-10 16:26:37 +01:00
});
2017-09-22 00:26:38 +02:00
< / script >
2017-09-25 15:11:01 +02:00
2020-07-03 18:25:16 +02:00
{{ render_messages(container=True, dismissible=True) }}
2020-07-27 18:37:22 +02:00
<!-- Containers -->
2021-04-06 23:34:57 +02:00
< div id = "menu_container_vertical" class = "tree-panel-container" >
< div id = menu_vertical >
< div class = "menu_vertical_header" >
2021-01-29 16:34:59 +01:00
< a href = "{{ url_for('index') }}" title = "Back to captures" >
2021-04-06 23:34:57 +02:00
< img src = "{{ url_for('static', filename='lookyloo.jpeg') }}" alt = "Lookyloo icon"
height="110">
2020-07-27 18:37:22 +02:00
< / a >
< / div >
2020-07-29 13:39:01 +02:00
< hr / >
2023-01-24 15:00:15 +01:00
< div class = "mx-auto" style = "width: 52px;" >
< button type = "button" class = "btn btn-link" data-bs-toggle = "collapse" data-bs-target = "#menu_vertical_content" >
< span class = "if-collapsed" >
< img src = "{{ url_for('static', filename='up.jpg') }}" class = "arrow-down" alt = "Maximize menu" height = "25" width = "25" title = "Expand" >
< / span >
< span class = "if-not-collapsed" >
< img src = "{{ url_for('static', filename='up.jpg') }}" alt = "Minimize menu" height = "25" width = "25" title = "Collapse" >
< / span >
< / button >
< / div >
2020-07-29 13:39:01 +02:00
< hr / >
2021-04-06 23:34:57 +02:00
< div id = menu_vertical_content class = "collapse show" >
2023-01-24 13:03:49 +01:00
< ul class = "list-group list-group-flush" >
< li class = "list-group-item" >
2022-01-14 15:58:06 +01:00
< a href = "#detailsModal" data-bs-toggle = "modal" data-bs-target = "#detailsModal" role = "button" > Capture Details< / a >
2021-03-25 18:32:48 +01:00
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2021-03-25 18:32:48 +01:00
< a href = "https://www.lookyloo.eu/docs/main/usage.html#_investigate_a_capture" role = "button" > Lookyloo Manual< / a >
2020-07-29 17:52:11 +02:00
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2021-03-25 18:32:48 +01:00
< a href = "{{ url_for('index') }}" role = "button" > Homepage< / a >
2020-12-21 00:44:55 +01:00
< / li >
2023-02-23 18:37:40 +01:00
{% if enable_monitoring %}
< hr / >
< li class = "list-group-item" >
2023-02-27 16:01:46 +01:00
< a href = "#monitoringModal" data-bs-toggle = "modal" data-bs-target = "#monitoringModal" role = "button" class = "btn btn-outline-info" > Monitor capture< / a >
2023-02-23 18:37:40 +01:00
< / li >
{% endif %}
2023-01-23 16:24:01 +01:00
{% if enable_mail_notification %}
< hr / >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2023-01-23 16:24:01 +01:00
< a href = "#emailModal" data-bs-toggle = "modal" data-bs-target = "#emailModal" role = "button" class = "btn btn-outline-danger" > Report suspicious< / br > capture< / a >
< / li >
{% endif %}
2020-07-29 17:52:11 +02:00
< / ul >
< / div >
2020-07-27 18:37:22 +02:00
< / div >
2019-02-06 18:01:17 +01:00
< / div >
2018-03-22 17:22:19 +01:00
2022-01-14 17:03:39 +01:00
< div id = "menu_container_horizontal" class = "tree-panel-container" >
< div id = menu_horizontal class = "d-flex" >
2023-01-24 15:00:15 +01:00
< div class = "flex-shrink-1 align-self-center" >
< button type = "button" class = "btn btn-link mr-3" data-bs-toggle = "collapse" data-bs-target = "#menu_horizontal_content" >
2021-04-06 23:34:57 +02:00
< span class = "if-collapsed" >
< img src = "{{ url_for('static', filename='up.jpg') }}" class = "arrow-right" alt = "Maximize menu" height = "25" width = "25" title = "Expand" >
< / span >
< span class = "if-not-collapsed" >
< img src = "{{ url_for('static', filename='up.jpg') }}" class = "arrow-left" alt = "Minimize menu" height = "25" width = "25" title = "Collapse" >
< / span >
2022-01-14 15:58:06 +01:00
< / button >
< / div >
< div id = "menu_horizontal_content" class = "collapse show flex-grow-1 ms-3 container" >
2023-01-24 13:03:49 +01:00
< div class = "hstack gap-3" >
< div class = "vr" > < / div >
< div class = "col-md" >
< ul class = "list-group list-group-flush" >
< li class = "list-group-item" >
< a href = "#screenshotModal" data-bs-toggle = "modal"
data-bs-target="#screenshotModal" role="button">Page Screenshot< / a >
< / li >
< li class = "list-group-item" >
< a href = "#statsModal" data-remote = "{{ url_for('stats', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#statsModal" role="button">Statistics< / a >
< / li >
< li class = "list-group-item" >
< a href = "#modulesModal" data-remote = "{{ url_for('trigger_modules', tree_uuid=tree_uuid, force=False) }}"
data-bs-toggle="modal" data-bs-target="#modulesModal" role="button">Third Party Reports< / a >
< / li >
< li class = "list-group-item" >
< a href = "#hashlookupModal" data-remote = "{{ url_for('hashlookup', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#hashlookupModal" role="button">Hashlookup hits< / a >
< / li >
< / ul >
< / div >
2022-01-14 15:58:06 +01:00
< div class = "vr" > < / div >
2023-01-24 13:03:49 +01:00
< div class = "col-md" >
< ul class = "list-group list-group-flush" >
< li class = "list-group-item" >
< a href = "#urlsInPageModal" data-remote = "{{ url_for('urls_rendered_page', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#urlsInPageModal" role="button">Subsequent Captures< / a >
2022-08-01 17:51:43 +02:00
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
< a href = "{{ url_for('recapture', tree_uuid=tree_uuid) }}" role = "button" > Re-Capture< / a >
2021-04-06 23:34:57 +02:00
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2023-03-29 15:15:17 +02:00
< a href = "#downloadModal" data-bs-toggle = "modal"
data-bs-target="#downloadModal" role="button">Download elements< / a >
2022-07-15 18:53:49 +02:00
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
< a href = "#bodyHashesModal" data-remote = "{{ url_for('tree_body_hashes', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#bodyHashesModal" role="button">Ressources Capture< / a >
2021-11-30 14:59:48 +01:00
< / li >
2021-04-06 23:34:57 +02:00
< / ul >
< / div >
2023-01-24 13:03:49 +01:00
{% if current_user.is_authenticated %}
2022-01-14 15:58:06 +01:00
< div class = "vr" > < / div >
2023-01-24 13:03:49 +01:00
< div class = "col-md" >
< ul class = "list-group list-group-flush" >
2023-03-29 15:15:17 +02:00
< li class = "list-group-item" >
< a href = "#adminModal" data-bs-toggle = "modal"
data-bs-target="#adminModal" role="button">Admin tasks< / a >
< / li >
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
< a href = "#historyModal" data-remote = "{{ url_for('historical_lookups', tree_uuid=tree_uuid, force=False) }}"
data-bs-toggle="modal" data-bs-target="#historyModal" role="button">Historical lookups< / a >
2021-04-06 23:34:57 +02:00
< / li >
2023-01-24 13:03:49 +01:00
{% if misp_push%}
< li class = "list-group-item" >
< a href = "#mispPushModal" data-remote = "{{ url_for('web_misp_push_view', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#mispPushModal" role="button">Prepare push to MISP< / a >
2021-09-03 16:57:37 +02:00
< / li >
2023-01-24 13:03:49 +01:00
{% endif %}
{% if misp_lookup%}
< li class = "list-group-item" >
< a href = "#mispLookupModal" data-remote = "{{ url_for('web_misp_lookup_view', tree_uuid=tree_uuid) }}"
data-bs-toggle="modal" data-bs-target="#mispLookupModal" role="button">Search events on MISP< / a >
2021-04-06 23:34:57 +02:00
< / li >
2023-01-24 13:03:49 +01:00
{% endif %}
2021-04-06 23:34:57 +02:00
< / ul >
< / div >
2023-01-24 13:03:49 +01:00
{% endif %}
{%if enable_categorization or enable_bookmark or enable_context_by_users %}
2022-01-14 15:58:06 +01:00
< div class = "vr" > < / div >
2023-01-24 13:03:49 +01:00
< div class = "col-md" >
< ul class = "list-group list-group-flush" >
2021-04-06 23:34:57 +02:00
{% if enable_categorization %}
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2021-04-06 23:34:57 +02:00
< a href = "#categoriesModal" data-remote = "{{ url_for('categories_capture', tree_uuid=tree_uuid) }}"
2022-01-14 15:58:06 +01:00
data-bs-toggle="modal" data-bs-target="#categoriesModal" role="button">Manage categories< / a >
2021-04-06 23:34:57 +02:00
< / li >
{% endif %}
{% if enable_bookmark %}
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2021-04-06 23:34:57 +02:00
< a href = "#/" role = "button" onclick = "UnbookmarkAllNodes();" > Unbookmark all nodes< / a >
< / li >
{% endif %}
{% if enable_context_by_users %}
2023-01-24 13:03:49 +01:00
< li class = "list-group-item" >
2021-04-06 23:34:57 +02:00
< a href = "#/" role = "button" onclick = "MarkAsKnown('{{ tree_uuid }}');" > Mark all the captures' entries as known< / a >
< / li >
{% endif %}
< / ul >
< / div >
{% endif %}
< / div >
< / div >
< / div >
< / div >
2020-10-21 16:25:31 +02:00
< div id = "legend_container" class = "tree-panel-container" >
2019-06-28 12:08:35 +02:00
< div id = legend class = "collapse show" >
2020-07-27 18:37:22 +02:00
< center >
2019-06-28 12:08:35 +02:00
< div style = "display: inline" >
< b > Legend< / b >
< / div >
< div style = "display: inline;" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-link" data-bs-toggle = "collapse" data-bs-target = "#legend" >
2020-11-03 12:54:42 +01:00
< img src = "{{ url_for('static', filename='down.jpg') }}" alt = "Minimize legend" height = "25" width = "25" title = "Collapse" >
2019-04-18 17:34:36 +02:00
< / button >
2019-06-28 12:08:35 +02:00
< / div >
2020-07-27 18:37:22 +02:00
< / center >
< hr / >
2021-12-22 14:44:32 +01:00
< div title = "The node contains at least one insecure (not HTTPS) request" >
< img src = "{{ url_for('static', filename='insecure.svg') }}" alt = "Insecure requests"
height="20" width="20"> Unencrypted requests
< / div >
2020-09-10 14:37:42 +02:00
2021-12-22 14:44:32 +01:00
< div title = "This node contains only empty responses" >
< img src = "{{ url_for('static', filename='empty.svg') }}" alt = "Empty responses"
height="20" width="20"> Empty responses
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of cookies received in the responses of this node" >
< img src = "{{ url_for('static', filename='cookie_received.png') }}" alt = "Cookie received"
height="20" width="20"> Cookie received
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of cookies sent in the requests of this node" >
< img src = "{{ url_for('static', filename='cookie_read.png') }}" alt = "Cookie read"
height="20" width="20"> Cookie read
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of redirects initiated by the responses of this node" >
< img src = "{{ url_for('static', filename='redirect.png') }}" alt = "Redirect"
height="20" width="20"> Redirect
< / div >
2021-08-12 16:31:50 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of resources loaded from iFrames in the responses in this node" >
< img src = "{{ url_for('static', filename='ifr.png') }}" alt = "iFrame"
height="20" width="20"> iFrame
< / div >
2021-08-12 16:31:50 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of JavaScript in the responses in this node" >
< img src = "{{ url_for('static', filename='javascript.png') }}" alt = "JavaScript"
height="20" width="20"> Javascript
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of fonts in the responses in this node" >
< img src = "{{ url_for('static', filename='font.png') }}" alt = "Font"
height="20" width="20"> Font
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of HTML in the responses in this node" >
< img src = "{{ url_for('static', filename='html.png') }}" alt = "HTML"
height="20" width="20"> HTML
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of JSON in the responses in this node" >
< img src = "{{ url_for('static', filename='json.png') }}" alt = "JSON"
height="20" width="20"> JSON
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of CSS in the responses in this node" >
< img src = "{{ url_for('static', filename='css.png') }}" alt = "CSS"
height="20" width="20"> CSS
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of executables in the responses in this node" >
< img src = "{{ url_for('static', filename='exe.png') }}" alt = "EXE"
height="20" width="20"> EXE
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of images in the responses in this node" >
< img src = "{{ url_for('static', filename='img.png') }}" alt = "Image"
height="20" width="20"> Image
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of videos in the responses in this node" >
< img src = "{{ url_for('static', filename='video.png') }}" alt = "Video"
height="20" width="20"> Video
< / div >
2019-06-28 12:08:35 +02:00
2021-12-22 14:44:32 +01:00
< div title = "Number of unknown resources in the responses in this node" >
< img src = "{{ url_for('static', filename='wtf.png') }}" alt = "Content type not set/unknown"
height="20" width="20"> Unknown content
< / div >
2019-06-28 12:08:35 +02:00
< / div >
2021-12-22 14:44:32 +01:00
2020-07-30 17:45:07 +02:00
< div style = "width: 70px; float: right;" >
2020-07-29 13:35:43 +02:00
< center >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-link" data-bs-toggle = "collapse" data-bs-target = "#legend" >
2020-11-03 12:54:42 +01:00
< img src = "{{ url_for('static', filename='up.jpg') }}" alt = "Maximize legend" height = "40" width = "40" title = "Expand" >
2020-07-27 18:37:22 +02:00
< b > Legend< / b >
2020-07-29 13:35:43 +02:00
< / button >
< / center >
2019-06-28 12:08:35 +02:00
< / div >
2017-09-25 15:11:01 +02:00
< / div >
2019-04-18 17:34:36 +02:00
2021-03-25 18:32:48 +01:00
<!-- Modals -->
< div class = "modal fade" id = "detailsModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
2021-04-28 18:12:17 +02:00
< h5 class = "modal-title" id = "detailsModalLabel" > Details of the capture at the time it happened< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-07-29 13:35:43 +02:00
< / div >
2021-03-25 18:32:48 +01:00
< div class = "modal-body" >
< dl class = "row" >
< dt class = "col-sm-2" > URL captured< / dt >
2022-12-07 14:32:13 +01:00
< dd class = "col-sm-10" > {{ shorten_string(info.url, 1000) }}< / dd >
2021-03-25 18:32:48 +01:00
< dt class = "col-sm-2" > Page title< / dt >
2022-12-07 14:32:13 +01:00
< dd class = "col-sm-10" > {{ info.title }}< / dd >
2021-03-25 18:32:48 +01:00
< dt class = "col-sm-2" > Capture time< / dt >
< dd class = "col-sm-10" id = "start_time" > < / dd >
< dt class = "col-sm-2" > User Agent< / dt >
2022-12-07 14:32:13 +01:00
< dd class = "col-sm-10" > {{ info.user_agent }}< / dd >
2021-03-25 18:32:48 +01:00
2022-12-07 14:32:13 +01:00
{% if info.referer %}
2021-06-23 01:47:03 +02:00
< dt class = "col-sm-2" > Referer< / dt >
2022-12-07 14:32:13 +01:00
< dd class = "col-sm-10" > {{ info.referer }}< / dd >
2021-06-23 01:47:03 +02:00
{%endif%}
2021-03-25 18:32:48 +01:00
{% if meta %}
{% for k, v in meta.items() if k not in ['user_agent'] %}
< dt class = "col-sm-2" > {{k.title()}}< / dt >
< dd class = "col-sm-10" > {{ v }}< / dd >
{% endfor %}
{%endif%}
2023-05-15 16:33:43 +02:00
{% if capture_settings %}
{% for k, v in capture_settings.items() if v and k in ['proxy']%}
< dt class = "col-sm-2" > {{k.title()}}< / dt >
< dd class = "col-sm-10" > {{ v }}< / dd >
{% endfor %}
{%endif%}
2021-03-25 18:32:48 +01:00
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2021-03-25 18:32:48 +01:00
< / div >
2020-07-29 13:35:43 +02:00
< / div >
2020-07-27 18:37:22 +02:00
< / div >
2017-09-25 15:11:01 +02:00
< / div >
2020-05-13 17:31:27 +02:00
< div class = "modal fade" id = "statsModal" tabindex = "-1" role = "dialog" >
2020-07-27 18:37:22 +02:00
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
2020-10-28 18:49:15 +01:00
< h5 class = "modal-title" id = "statsModalLabel" > Statistics< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-07-27 18:37:22 +02:00
< / div >
< div class = "modal-body" >
... loading statistics ...
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2021-02-04 19:51:43 +01:00
< / div >
< / div >
< / div >
< / div >
2022-08-01 17:51:43 +02:00
< div class = "modal fade" id = "bodyHashesModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "bodyHashesModalLabel" > Ressources in tree< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2022-08-01 17:51:43 +02:00
< / div >
< div class = "modal-body" >
... loading ressources ...
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
< / div >
< / div >
< / div >
< / div >
2021-02-04 19:51:43 +01:00
< div class = "modal fade" id = "mispPushModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "mispPushModalLabel" > MISP Push< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2021-02-04 19:51:43 +01:00
< / div >
< div class = "modal-body" >
... loading MISP Push view ...
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2020-07-27 18:37:22 +02:00
< / div >
< / div >
< / div >
< / div >
2021-06-02 00:31:14 +02:00
< div class = "modal fade" id = "mispLookupModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "mispLookupModalLabel" > MISP Lookup< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2021-06-02 00:31:14 +02:00
< / div >
< div class = "modal-body" >
... loading MISP Lookup view ...
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2021-06-02 00:31:14 +02:00
< / div >
< / div >
< / div >
< / div >
2020-07-27 18:37:22 +02:00
< div class = "modal fade" id = "screenshotModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
2020-10-28 18:49:15 +01:00
< h5 class = "modal-title" id = "screenshotModalLabel" > Screenshot< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-07-27 18:37:22 +02:00
< / div >
< div class = "modal-body" >
2020-08-13 15:56:46 +02:00
< center >
2021-04-28 18:12:17 +02:00
{% set screenshot_too_big = screenshot_size > 10 * 1024 * 1024 %}
{% if screenshot_too_big %}
Image too big ({{ sizeof_fmt(screenshot_size) }}) to display in the browser, the screenshot below is cropped.
2021-01-13 14:33:20 +01:00
< / br >
2020-08-13 15:56:46 +02:00
{% endif %}
2021-04-28 18:12:17 +02:00
{% if blur_screenshot %}
2022-03-18 10:48:09 +01:00
< button type = "button" class = "btn btn-primary" onclick = "$('#screenshot').removeClass('blur')" > Unblur< / button >
2021-04-28 18:12:17 +02:00
{% endif %}
2022-03-18 10:48:09 +01:00
< a href = "{{ url_for('image', tree_uuid=tree_uuid) }}" role = "button" class = "btn btn-primary" > Download< / a >
2021-04-28 18:12:17 +02:00
< / br >
< / br >
< img src = "{{ url_for('image', tree_uuid=tree_uuid, width=1024 if screenshot_too_big else '') }}" class = "img-fluid {{ 'blur' if blur_screenshot else '' }}" id = "screenshot" / >
< / br >
2020-08-13 15:56:46 +02:00
< / center >
2020-05-13 17:31:27 +02:00
< / div >
2020-07-27 18:37:22 +02:00
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2020-07-27 18:37:22 +02:00
< / div >
< / div >
< / div >
2020-05-13 17:31:27 +02:00
< / div >
2020-04-20 16:41:42 +02:00
< div class = "modal fade" id = "modulesModal" tabindex = "-1" role = "dialog" >
2020-07-27 18:37:22 +02:00
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
2021-08-11 15:26:12 +02:00
< h4 class = "modal-title" id = "modulesModalLabel" >
Reports from 3rd party services
< / h4 >
< / br >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-07-27 18:37:22 +02:00
< / div >
2021-08-11 15:26:12 +02:00
< / br >
< center > < h5 > Note that if you get an error when you click on a
link below, it probably means the capture is still ongoing.
Try reloading the page after a few seconds.< / h5 > < / center >
2020-07-27 18:37:22 +02:00
< div class = "modal-body" >
... loading results from 3rd party modules ...
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-success modulesForceRefresh" > Re-run all modules< / button >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2020-07-27 18:37:22 +02:00
< / div >
< / div >
< / div >
2020-04-20 16:41:42 +02:00
< / div >
2022-07-15 18:53:49 +02:00
< div class = "modal fade" id = "historyModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "historyModalLabel" >
Historical data and contex about this capture
< / h4 >
< / br >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2022-07-15 18:53:49 +02:00
< / div >
< / br >
< div class = "modal-body" >
... loading results historical context ...
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
< / div >
< / div >
< / div >
< / div >
2022-11-23 14:09:00 +01:00
< div class = "modal fade" id = "downloadModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "downloadModalLabel" >
Download specific elements of the capture.
< / h4 >
< / br >
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
< / div >
< / br >
< div class = "modal-body" >
< ul >
< li >
< a href = "{{ url_for('image', tree_uuid=tree_uuid) }}" role = "button" > Download screenshot< / a >
< / li >
< li >
< a href = "{{ url_for('cookies', tree_uuid=tree_uuid) }}" role = "button" > Download cookiejar< / a >
< / li >
< li >
< a href = "{{ url_for('hashes_tree', tree_uuid=tree_uuid) }}" role = "button" > Download hashes for all the resources< / a >
< / li >
< li >
< a href = "{{ url_for('export', tree_uuid=tree_uuid) }}" role = "button" > Download full capture< / a >
< / li >
{% if has_redirects %}
< li >
< a href = "{{ url_for('redirects', tree_uuid=tree_uuid) }}" role = "button" > Download redirects< / a >
< / li >
{% endif %}
< / ul >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
< / div >
< / div >
< / div >
< / div >
2023-03-29 15:15:17 +02:00
< div class = "modal fade" id = "adminModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "adminModalLabel" >
RUn admin only tasks on the capture
< / h4 >
< / br >
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
< / div >
< / br >
< div class = "modal-body" >
< ul >
< li >
< a href = "{{ url_for('rebuild_tree', tree_uuid=tree_uuid) }}" role = "button" > Rebuild capture< / a >
< / li >
< li >
< a href = "{{ url_for('hide_capture', tree_uuid=tree_uuid) }}" role = "button" > Hide capture< / a >
< / li >
< li >
< a href = "{{ url_for('logout') }}" role = "button" > Logout< / a >
< / li >
< / ul >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
< / div >
< / div >
< / div >
< / div >
2021-11-30 14:59:48 +01:00
< div class = "modal fade" id = "hashlookupModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "hashlookupModalLabel" >
Hits in Hashlookup
< / h4 >
< / br >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2021-11-30 14:59:48 +01:00
< / div >
< / br >
< div class = "modal-body" >
... loading results from hashlookup ...
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2021-11-30 14:59:48 +01:00
< / div >
< / div >
< / div >
< / div >
2020-11-05 15:38:34 +01:00
{% if enable_context_by_users %}
2020-10-28 18:49:15 +01:00
< div class = "modal fade" id = "categoriesModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "categoriesModalLabel" > Categorize the capture< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-10-28 18:49:15 +01:00
< / div >
< div class = "modal-body" >
... loading the categorization options ...
< / div >
< p >
< form id = searchCategories >
2022-01-14 15:58:06 +01:00
< label for = "query" class = "form-label" > Category to search< / label >
2020-10-28 18:49:15 +01:00
< input type = "text" class = "form-control" name = "query" id = "query" placeholder = "Query" >
< button type = "submit" class = "btn btn-success" > Search< / button >
< / form >
< / p >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2020-10-28 18:49:15 +01:00
< / div >
< / div >
< / div >
< / div >
2020-11-05 15:38:34 +01:00
{% endif %}
2020-10-28 18:49:15 +01:00
2023-02-23 18:37:40 +01:00
{% if enable_monitoring %}
< div class = "modal fade" id = "monitoringModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< form role = "form" action = "{{ tree_uuid }}/monitor" method = post enctype = multipart/form-data >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "monitorModalLabel" > Monitor capture< / h5 >
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
< / div >
< div class = "modal-body" >
2023-02-27 16:01:46 +01:00
{% if monitoring_settings["force_expire"] %}
< div class = "alert alert-warning" role = "alert" >
The monitoring instance is configured to automatically expire what you want to
monitor after < b > {{monitoring_settings["max_captures"]}} captures< / b > .
< / br >
Keep that in mind when you select the frequency.
< / div >
{% endif %}
2023-02-23 18:37:40 +01:00
< p > The capture will be submitted to the monitoring interface.< / p >
< div class = "mb-3" >
2023-02-27 16:01:46 +01:00
< label for = frequency" class = "form-label" > Frequency (must be higher than {{monitoring_settings["min_frequency"]}} seconds)< / label >
< select name = "frequency" id = "frequency" class = "form-select" aria-label = "Select a frequency for the monitoring" required >
2023-02-23 18:37:40 +01:00
< option value = "hourly" selected > Hourly< / option >
< option value = "daily" > Daily< / option >
< / select >
<!-- boat fields -->
< label class = "boatymcboat form-label" for = "name" > Your Name< / label >
< input class = "boatymcboat" autocomplete = "off" type = "text" id = "name" name = "name"
placeholder="Your fav boat name here">
2023-02-27 16:01:46 +01:00
<!-- end -->
< / div >
< div class = "mb-3" >
< label for = "expire_at" class = "form-label" > Expire< / label >
< input type = "date" class = "form-control" name = "expire_at" id = "expire_at"
value="" />
{% if monitoring_settings["force_expire"] %}
< div class = "alert alert-warning" role = "alert" >
The expire date will be ignored if the max amount of captures ({{monitoring_settings["max_captures"]}}) is reached first.
< / div >
{% endif %}
2023-02-23 18:37:40 +01:00
< / div >
< div class = "mb-3" >
2023-03-02 20:51:14 +01:00
{% if monitoring_collections %}
< label for = "collection" class = "form-label" > Pick a collection.< / label >
< input type = "text" class = "form-control" list = "collections" id = "collection" name = "collection" placeholder = "Type a collection name, or select an existing one (arrow down to see them)" >
< datalist id = "collections" >
{% for name in monitoring_collections %}
< option value = "{{name}}" > {{name}}< / option >
{% endfor %}
< / datalist >
{%else%}
< label for = collection" class = "form-label" > Add to a collection.< / label >
2023-02-23 18:37:40 +01:00
< input type = "text" class = "form-control" name = "collection" id = "collection" placeholder = "Name of the collection" >
2023-03-02 20:51:14 +01:00
{% endif %}
2023-02-23 18:37:40 +01:00
< / div >
2023-05-11 16:04:06 +02:00
< div class = "mb-3" >
< label for = notification" class = "form-label" > Get notified when the capture changes (WiP)< / label >
< input type = "email" class = "form-control" name = "notification" id = "notification" placeholder = "Email address to receive the notification" >
< / div >
2023-02-23 18:37:40 +01:00
< div class = "mb-3 form-check" >
2023-04-13 10:18:21 +02:00
< input class = "form-check-input" type = "checkbox" name = "confirm" onchange = "document.getElementById('btn-notification-monitoring').disabled = !this.checked;" > < / input >
2023-02-23 18:37:40 +01:00
< label for = "force_push" class = "form-check-label" > {{ confirm_message }}< / label >
< / div >
< / div >
< div class = "modal-footer" >
2023-04-13 10:18:21 +02:00
< button type = "submit" class = "btn btn-success" id = "btn-notification-monitoring" disabled = true > Send to monitoring< / button >
2023-02-23 18:37:40 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
< / div >
< / div >
< / form >
< / div >
< / div >
{% endif %}
2020-11-05 15:38:34 +01:00
{% if enable_mail_notification %}
2020-05-11 19:01:02 +02:00
< div class = "modal fade" id = "emailModal" tabindex = "-1" role = "dialog" >
2020-07-27 18:37:22 +02:00
< div class = "modal-dialog modal-xl" role = "document" >
< form role = "form" action = "{{ tree_uuid }}/send_mail" method = post enctype = multipart/form-data >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "emailModalLabel" > Notify by email< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2020-07-27 18:37:22 +02:00
< / div >
< div class = "modal-body" >
2020-11-05 15:38:34 +01:00
< p > A notification of this capture will be sent to the owners of this Lookyloo instance. They may or may not act on it.< / p >
2022-01-14 15:58:06 +01:00
< div class = "mb-3" >
< label for = "email" class = "form-label" > Email address - used to get back in touch with you if needed (optional)< / label >
2020-11-05 15:38:34 +01:00
< input type = "email" class = "form-control" name = "email" id = "email" placeholder = "Enter email" >
2021-05-25 22:20:24 +02:00
<!-- boat fields -->
2022-01-14 15:58:06 +01:00
< label class = "boatymcboat form-label" for = "name" > Your Name< / label >
2021-05-25 22:20:24 +02:00
< input class = "boatymcboat" autocomplete = "off" type = "text" id = "name" name = "name"
placeholder="Your fav boat name here">
2020-11-05 15:38:34 +01:00
< / div >
2022-01-14 15:58:06 +01:00
< div class = "mb-3" >
< label for = "comment" class = "form-label" > Please write a comment (optional)< / label >
2020-11-05 15:38:34 +01:00
< textarea class = "form-control" name = "comment" id = comment rows = "3" > < / textarea >
< / div >
2022-01-14 15:58:06 +01:00
< div class = "mb-3 form-check" >
2023-04-13 10:18:21 +02:00
< input class = "form-check-input" type = "checkbox" name = "confirm" onchange = "document.getElementById('btn-notification-report').disabled = !this.checked;" > < / input >
2021-05-26 21:07:47 +02:00
< label for = "force_push" class = "form-check-label" > {{ confirm_message }}< / label >
< / div >
2020-07-27 18:37:22 +02:00
< / div >
< div class = "modal-footer" >
2023-04-13 10:18:21 +02:00
< button type = "submit" class = "btn btn-success" id = "btn-notification-report" disabled = true > Send email< / button >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2020-07-27 18:37:22 +02:00
< / div >
< / div >
< / form >
< / div >
2020-05-11 19:01:02 +02:00
< / div >
2020-11-05 15:38:34 +01:00
{% endif %}
2021-03-19 17:51:25 +01:00
< div class = "modal fade" id = "urlsInPageModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog modal-xl" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "urlsInPageModalLabel" > URLs in the rendered page< / h5 >
2022-11-21 15:02:12 +01:00
< button type = "button" class = "btn btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2021-03-19 17:51:25 +01:00
< / div >
< div class = "modal-body" >
... loading URLs in rendered page ...
< / div >
< div class = "modal-footer" >
2022-01-14 15:58:06 +01:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" > Close< / button >
2021-03-19 17:51:25 +01:00
< / div >
< / div >
< / div >
< / div >
2017-09-25 15:11:01 +02:00
{% endblock content %}