mirror of https://github.com/CIRCL/lookyloo
chg: Improve UI (index and menu)
parent
4847fdb670
commit
81acc8e2d5
|
@ -20,17 +20,9 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu_container {
|
/* menu vertical */
|
||||||
position: fixed;
|
|
||||||
top: 5px;
|
|
||||||
left: 5px;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-right: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu {
|
#menu_vertical {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
left: 5px;
|
left: 5px;
|
||||||
|
@ -42,30 +34,78 @@
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu_container .menu-header {
|
#menu_container_vertical {
|
||||||
width: 200px;
|
position: fixed;
|
||||||
height: 110px;
|
top: 5px;
|
||||||
resize: both;
|
left: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu_container ul.components {
|
#menu_container_vertical .menu-header {
|
||||||
padding: 20px 0;
|
width: 200px;
|
||||||
|
height: 110px;
|
||||||
|
resize: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu_container ul li a {
|
#menu_container_vertical ul.components {
|
||||||
padding: 10px;
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu_container_vertical ul li a {
|
||||||
|
padding: 5px;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu_container ul li a:hover {
|
#menu_container_vertical ul li a:hover {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blur {
|
/* menu horizontal */
|
||||||
filter: blur(10px);
|
|
||||||
|
#menu_horizontal {
|
||||||
|
position: fixed;
|
||||||
|
top: 5px;
|
||||||
|
left: 222px;
|
||||||
|
background: white;
|
||||||
|
border: 2px solid;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#menu_container_horizontal {
|
||||||
|
position: fixed;
|
||||||
|
top: 5px;
|
||||||
|
left: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu_container_horizontal .container {
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu_container_horizontal ul.components {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu_container_horizontal ul li a {
|
||||||
|
padding: 1px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu_container_horizontal ul li a:hover {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* legend */
|
||||||
|
|
||||||
#legend_container {
|
#legend_container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 5px;
|
bottom: 5px;
|
||||||
|
@ -155,6 +195,18 @@ hr {
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr.vertical {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
border-color: black;
|
||||||
|
border-style: inset;
|
||||||
|
border-width: 1px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
|
@ -175,3 +227,46 @@ table td p {
|
||||||
#screenshot_thumbnail {
|
#screenshot_thumbnail {
|
||||||
scroll-margin: 50px;
|
scroll-margin: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.blur {
|
||||||
|
filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-down {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-right {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-left {
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
a.new-capture-button {
|
||||||
|
width: 160px;
|
||||||
|
height: 60px;
|
||||||
|
font-size: 25px;
|
||||||
|
letter-spacing: 2.5px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #0000ff;
|
||||||
|
border: 10px;
|
||||||
|
border-radius: 50px;
|
||||||
|
box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||||
|
transition: all 0.3s ease 0s;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
padding-right: 15px;
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.new-capture-button:hover {
|
||||||
|
background-color: #007070;
|
||||||
|
box-shadow: 0px 15px 20px rgba(0, 0, 0, 0.1);
|
||||||
|
color: #fff;
|
||||||
|
transform: translateY(-7px);
|
||||||
|
}
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
|
|
||||||
// Set the dimensions and margins of the diagram
|
// Set the dimensions and margins of the diagram
|
||||||
let margin = {
|
let margin = {
|
||||||
top: 20,
|
top: 110,
|
||||||
right: 200,
|
right: 200,
|
||||||
bottom: 10,
|
bottom: 10,
|
||||||
left: 90
|
left: 90
|
||||||
};
|
};
|
||||||
|
|
||||||
let menuHeight = document.getElementById('menu').clientHeight;
|
let menuHeight = document.getElementById('menu_vertical').clientHeight;
|
||||||
let width = 960 - margin.left - margin.right;
|
let width = 960 - margin.left - margin.right;
|
||||||
let height = menuHeight * 2;
|
let height = menuHeight * 2;
|
||||||
|
|
||||||
|
|
|
@ -76,10 +76,10 @@
|
||||||
<h3>{{ hostnode.name }}</h3>
|
<h3>{{ hostnode.name }}</h3>
|
||||||
<button type="button" class="btn btn-info" onclick="whereAmI('{{ hostnode_uuid }}')">Locate in tree</button>
|
<button type="button" class="btn btn-info" onclick="whereAmI('{{ hostnode_uuid }}')">Locate in tree</button>
|
||||||
<a href="{{ url_for('urls_hostnode', tree_uuid=tree_uuid, node_uuid=hostnode_uuid) }}" class="btn btn-info" role="button">
|
<a href="{{ url_for('urls_hostnode', tree_uuid=tree_uuid, node_uuid=hostnode_uuid) }}" class="btn btn-info" role="button">
|
||||||
Download URLs as text
|
Download all URLs as text
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ url_for('hashes_hostnode', tree_uuid=tree_uuid, node_uuid=hostnode_uuid) }}" class="btn btn-info" role="button">
|
<a href="{{ url_for('hashes_hostnode', tree_uuid=tree_uuid, node_uuid=hostnode_uuid) }}" class="btn btn-info" role="button">
|
||||||
Download Hashes as text
|
Download all Hashes as text
|
||||||
</a>
|
</a>
|
||||||
</center>
|
</center>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -70,7 +70,9 @@ $(document).ready(function () {
|
||||||
</a>
|
</a>
|
||||||
</center>
|
</center>
|
||||||
<center>
|
<center>
|
||||||
<h2><a href="{{ url_for('capture_web') }}">Start a new capture</a></h2>
|
<h4>Web forensics tool</h4>
|
||||||
|
</br>
|
||||||
|
<a href="{{ url_for('capture_web') }}" class="new-capture-button" > Start a new capture </a>
|
||||||
<br><br>
|
<br><br>
|
||||||
{{ render_messages(container=True, dismissible=True) }}
|
{{ render_messages(container=True, dismissible=True) }}
|
||||||
</center>
|
</center>
|
||||||
|
|
|
@ -121,22 +121,20 @@
|
||||||
|
|
||||||
<!-- Containers -->
|
<!-- Containers -->
|
||||||
|
|
||||||
<div id="menu_container" class="tree-panel-container">
|
<div id="menu_container_vertical" class="tree-panel-container">
|
||||||
<div id=menu>
|
<div id=menu_vertical>
|
||||||
<div class="menu_header">
|
<div class="menu_vertical_header">
|
||||||
<a href="{{ url_for('index') }}" title="Back to captures">
|
<a href="{{ url_for('index') }}" title="Back to captures">
|
||||||
<img src="{{ url_for('static', filename='lookyloo.jpeg') }}" alt="Lookyloo icon" height="110">
|
<img src="{{ url_for('static', filename='lookyloo.jpeg') }}" alt="Lookyloo icon"
|
||||||
|
height="110">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<center>
|
<center>
|
||||||
<div style="display: inline">
|
<div>
|
||||||
<b>Menu</b>
|
<button type="button" class="btn btn-link" data-toggle="collapse" data-target="#menu_vertical_content">
|
||||||
</div>
|
|
||||||
<div style="display: inline;">
|
|
||||||
<button type="button" class="btn btn-link" data-toggle="collapse" data-target="#menu_content">
|
|
||||||
<span class="if-collapsed">
|
<span class="if-collapsed">
|
||||||
<img src="{{ url_for('static', filename='down.jpg') }}" alt="Maximize menu" height="25" width="25" title="Expand">
|
<img src="{{ url_for('static', filename='up.jpg') }}" class="arrow-down" alt="Maximize menu" height="25" width="25" title="Expand">
|
||||||
</span>
|
</span>
|
||||||
<span class="if-not-collapsed">
|
<span class="if-not-collapsed">
|
||||||
<img src="{{ url_for('static', filename='up.jpg') }}" alt="Minimize menu" height="25" width="25" title="Collapse">
|
<img src="{{ url_for('static', filename='up.jpg') }}" alt="Minimize menu" height="25" width="25" title="Collapse">
|
||||||
|
@ -145,58 +143,11 @@
|
||||||
</div>
|
</div>
|
||||||
</center>
|
</center>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div id=menu_content class="collapse show">
|
<div id=menu_vertical_content class="collapse show">
|
||||||
<ul class="list-unstyled components">
|
<ul class="list-unstyled components">
|
||||||
<li>
|
<li>
|
||||||
<a href="#detailsModal" data-toggle="modal" data-target="#detailsModal" role="button">Capture Details</a>
|
<a href="#detailsModal" data-toggle="modal" data-target="#detailsModal" role="button">Capture Details</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a href="#screenshotModal" data-toggle="modal" data-target="#screenshotModal" role="button">Page Screenshot</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#statsModal" data-remote="{{ url_for('stats', tree_uuid=tree_uuid) }}"
|
|
||||||
data-toggle="modal" data-target="#statsModal" role="button">Tree Statistics</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#modulesModal" data-remote="{{ url_for('trigger_modules', tree_uuid=tree_uuid, force=False) }}"
|
|
||||||
data-toggle="modal" data-target="#modulesModal" role="button">Third Party Reports</a>
|
|
||||||
</li>
|
|
||||||
{% if has_redirects %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ url_for('redirects', tree_uuid=tree_uuid) }}" role="button">Download Redirects list</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if enable_mail_notification %}
|
|
||||||
<li>
|
|
||||||
<a href="#emailModal" data-toggle="modal" data-target="#emailModal" role="button">Contact Local Administrator</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
|
||||||
<a href="#urlsInPageModal" data-remote="{{ url_for('urls_rendered_page', tree_uuid=tree_uuid) }}"
|
|
||||||
data-toggle="modal" data-target="#urlsInPageModal" role="button">Run Subsequent Captures</a>
|
|
||||||
</li>
|
|
||||||
{% if enable_categorization %}
|
|
||||||
<li>
|
|
||||||
<a href="#categoriesModal" data-remote="{{ url_for('categories_capture', tree_uuid=tree_uuid) }}"
|
|
||||||
data-toggle="modal" data-target="#categoriesModal" role="button">Manage categories</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if current_user.is_authenticated and misp_push%}
|
|
||||||
<li>
|
|
||||||
<a href="#mispPushModal" data-remote="{{ url_for('web_misp_push_view', tree_uuid=tree_uuid) }}"
|
|
||||||
data-toggle="modal" data-target="#mispPushModal" role="button">Prepare push to MISP</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if enable_bookmark %}
|
|
||||||
<li>
|
|
||||||
<a href="#/" role="button" onclick="UnbookmarkAllNodes();">Unbookmark all nodes</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if enable_context_by_users %}
|
|
||||||
<li>
|
|
||||||
<a href="#/" role="button" onclick="MarkAsKnown('{{ tree_uuid }}');">Mark all the captures' entries as known</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li>
|
<li>
|
||||||
<a href="https://www.lookyloo.eu/docs/main/usage.html#_investigate_a_capture" role="button">Lookyloo Manual</a>
|
<a href="https://www.lookyloo.eu/docs/main/usage.html#_investigate_a_capture" role="button">Lookyloo Manual</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -208,6 +159,87 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="menu_container_horizontal" class="tree-panel-container">
|
||||||
|
<div id=menu_horizontal class="media">
|
||||||
|
<button type="button" class="btn btn-link mr-3 align-self-center" data-toggle="collapse" data-target="#menu_horizontal_content">
|
||||||
|
<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>
|
||||||
|
</button>
|
||||||
|
<div id="menu_horizontal_content" class="collapse show media-body mt-0 container">
|
||||||
|
<div class="row">
|
||||||
|
<hr class="vertical">
|
||||||
|
<div class="col-sm">
|
||||||
|
<ul class="list-unstyled components">
|
||||||
|
<li>
|
||||||
|
<a href="#screenshotModal" data-toggle="modal" data-target="#screenshotModal" role="button">Page Screenshot</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#statsModal" data-remote="{{ url_for('stats', tree_uuid=tree_uuid) }}"
|
||||||
|
data-toggle="modal" data-target="#statsModal" role="button">Tree Statistics</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#modulesModal" data-remote="{{ url_for('trigger_modules', tree_uuid=tree_uuid, force=False) }}"
|
||||||
|
data-toggle="modal" data-target="#modulesModal" role="button">Third Party Reports</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<hr class="vertical">
|
||||||
|
<div class="col-sm">
|
||||||
|
<ul class="list-unstyled components">
|
||||||
|
<li>
|
||||||
|
<a href="#urlsInPageModal" data-remote="{{ url_for('urls_rendered_page', tree_uuid=tree_uuid) }}"
|
||||||
|
data-toggle="modal" data-target="#urlsInPageModal" role="button">Run Subsequent Captures</a>
|
||||||
|
</li>
|
||||||
|
{% if has_redirects %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ url_for('redirects', tree_uuid=tree_uuid) }}" role="button">Download Redirects list</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if enable_mail_notification %}
|
||||||
|
<li>
|
||||||
|
<a href="#emailModal" data-toggle="modal" data-target="#emailModal" role="button">Contact Local Administrator</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{%if enable_categorization or (current_user.is_authenticated and misp_push) or enable_bookmark or enable_context_by_users %}
|
||||||
|
<hr class="vertical">
|
||||||
|
<div class="col-sm">
|
||||||
|
<ul class="list-unstyled components">
|
||||||
|
{% if enable_categorization %}
|
||||||
|
<li>
|
||||||
|
<a href="#categoriesModal" data-remote="{{ url_for('categories_capture', tree_uuid=tree_uuid) }}"
|
||||||
|
data-toggle="modal" data-target="#categoriesModal" role="button">Manage categories</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if current_user.is_authenticated and misp_push%}
|
||||||
|
<li>
|
||||||
|
<a href="#mispPushModal" data-remote="{{ url_for('web_misp_push_view', tree_uuid=tree_uuid) }}"
|
||||||
|
data-toggle="modal" data-target="#mispPushModal" role="button">Prepare push to MISP</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if enable_bookmark %}
|
||||||
|
<li>
|
||||||
|
<a href="#/" role="button" onclick="UnbookmarkAllNodes();">Unbookmark all nodes</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if enable_context_by_users %}
|
||||||
|
<li>
|
||||||
|
<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>
|
||||||
|
|
||||||
<div id="legend_container" class="tree-panel-container">
|
<div id="legend_container" class="tree-panel-container">
|
||||||
<div id=legend class="collapse show">
|
<div id=legend class="collapse show">
|
||||||
<center>
|
<center>
|
||||||
|
|
Loading…
Reference in New Issue