chg: Improve hostnode popup

pull/1019/head
Raphaël Vinot 2024-12-17 16:10:14 +01:00
parent 9fbac8a6a1
commit df433ddede
No known key found for this signature in database
GPG Key ID: 32E4E1C133B3792F
2 changed files with 102 additions and 78 deletions

View File

@ -50,7 +50,7 @@
<div class="accordion-item"> <div class="accordion-item">
<h2 class="accordion-header"> <h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDNS" aria-expanded="false" aria-controls="collapseDNS"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDNS" aria-expanded="false" aria-controls="collapseDNS">
Show DNS details from standalone queries DNS details from standalone queries
</button> </button>
</h2> </h2>
<div id="collapseDNS" class="accordion-collapse collapse" data-bs-parent="#accordionDNS"> <div id="collapseDNS" class="accordion-collapse collapse" data-bs-parent="#accordionDNS">
@ -157,11 +157,11 @@
</div> </div>
{% endif %} {% endif %}
{% if url['url_object'].security_details %} {% if url['url_object'].security_details %}
<div class="accordion accordion-flush" id="accordionTLS_{{url['url_object'].uuid}}"> <div class="accordion accordion" id="accordionTLS_{{url['url_object'].uuid}}">
<div class="accordion-item"> <div class="accordion-item">
<h2 class="accordion-header"> <h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTLS_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseTLS"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTLS_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseTLS">
Show certificate details TLS certificate
</button> </button>
</h2> </h2>
<div id="collapseTLS_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionTLS_{{url['url_object'].uuid}}"> <div id="collapseTLS_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionTLS_{{url['url_object'].uuid}}">
@ -177,41 +177,53 @@
</div> </div>
{% endif %} {% endif %}
<ul class="list-group"> <ul class="list-group">
{% if url['url_object'].posted_data or url['cookies_sent'] %}
<li class="list-group-item"> <li class="list-group-item">
<p class="h4">Request {{ request_cookies_icon(url['url_object'], tree_uuid) }}</p> <p class="h4">Request ({{url['url_object'].request.get('method')}}) {{ request_cookies_icon(url['url_object'], tree_uuid) }}</p>
<hr> <hr>
<div class="accordion accordion" id="accordionRequest_{{url['url_object'].uuid}}">
<div class="d-grid gap-2"> <div class="accordion-item">
{% if url['url_object'].posted_data %} <h2 class="accordion-header">
<div> <button class="accordion-button" type="button btn-sm" data-bs-toggle="collapse" data-bs-target="#collapseRequestHeaders_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseRequestHeaders">
<a href="{{ url_for('urlnode_post_request', tree_uuid=tree_uuid, node_uuid=url['url_object'].uuid) }}"> HTTP Headers
Download posted data
</a><br>
{% if url['url_object'].posted_data is string %}
Posted data size: {{ sizeof_fmt(url['url_object'].posted_data|length) }}
{% endif %}
</div>
{% endif %}
{% if url['cookies_sent'] %}
<div>
<p>
<button class="btn btn-primary btn-sm collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#request_cookies_full_list_{{ url['url_object'].uuid }}" aria-expanded="false" aria-controls="collapseExample">
<span class="if-collapsed">Show cookies sent.</span>
<span class="if-not-collapsed">Hide cookies sent.</span>
</button> </button>
</p> </h2>
<div class="collapse" id="request_cookies_full_list_{{ url['url_object'].uuid }}"> <div id="collapseRequestHeaders_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionRequest_{{url['url_object'].uuid}}">
<div class="card card-body"> <div class="accordion-body">
<ul>
{% for h in url['url_object'].request['headers'] %}
<li><b>{{h['name']}}</b>: {{h['value']}}</li>
{% endfor%}
</ul>
</div>
</div>
</div>
{% if url['cookies_sent'] %}
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#accordionRequestCookies_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseRequestCookies">
Cookies sent
</button>
</h2>
<div id="accordionRequestCookies_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionRequest_{{url['url_object'].uuid}}">
<div class="accordion-body">
{{ indexed_cookies("List of cookies sent in the request", "Node setting this cookie", url['cookies_sent']) }} {{ indexed_cookies("List of cookies sent in the request", "Node setting this cookie", url['cookies_sent']) }}
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
</div> </div>
</li>
{% if url['url_object'].posted_data %}
<div>This is a POST request,
<a href="{{ url_for('urlnode_post_request', tree_uuid=tree_uuid, node_uuid=url['url_object'].uuid) }}">
download content
</a><br>
{% if url['url_object'].posted_data is string %}
Posted data size: {{ sizeof_fmt(url['url_object'].posted_data|length) }}
{% endif %} {% endif %}
</div>
{% endif %}
</li>
<li class="list-group-item"> <li class="list-group-item">
{# Details of the response #} {# Details of the response #}
@ -267,25 +279,17 @@
</div> </div>
{% endif%} {% endif%}
{% if url['url_object'].hhhash %} <div class="accordion accordion" id="accordionResponse_{{url['url_object'].uuid}}">
<p>
<a href="{{ url_for('hhh_detail', hhh=url['url_object'].hhhash, from_popup=True) }}">
Show other captures with the same HTTP Headers Hash
</a>
</p>
{% endif %}
<div class="d-grid gap-2">
{% if url['embedded_ressources'] %} {% if url['embedded_ressources'] %}
{# Details on embedded resources #} {# Details on embedded resources #}
<div> <div class="accordion-item">
<button class="btn btn-primary btn-sm collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#embedded_full_list_{{ url['url_object'].uuid }}" aria-expanded="false" aria-controls="collapseExample"> <h2 class="accordion-header">
<span class="if-collapsed">Show embedded resources.</span> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#accordionEmbedded_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseEmbedded">
<span class="if-not-collapsed">Hide embedded resources.</span> Embedded resources
</button> </button>
</div> </h2>
<div class="collapse" id="embedded_full_list_{{ url['url_object'].uuid }}"> <div id="accordionEmbedded_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionResponse_{{url['url_object'].uuid}}">
<div class="card card-body"> <div class="accordion-body">
{% for hash, details in url['embedded_ressources'].items() %} {% for hash, details in url['embedded_ressources'].items() %}
<div> <div>
{{hash_info(tree_uuid, url['url_object'].uuid, details['type'], hash, {{hash_info(tree_uuid, url['url_object'].uuid, details['type'], hash,
@ -300,18 +304,40 @@
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
</div>
{% endif %} {% endif %}
<div class="accordion-item">
{% if url['cookies_received'] %} <h2 class="accordion-header">
<div> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseResponseHeaders_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseResponseHeaders">
<p> HTTP Headers
<button class="btn btn-primary btn-sm collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#response_cookies_full_list_{{ url['url_object'].uuid }}" aria-expanded="false" aria-controls="collapseExample">
<span class="if-collapsed">Show cookies received.</span>
<span class="if-not-collapsed">Hide cookies received.</span>
</button> </button>
</h2>
<div id="collapseResponseHeaders_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionResponse_{{url['url_object'].uuid}}">
<div class="accordion-body">
{% if url['url_object'].hhhash %}
<p>
<a href="{{ url_for('hhh_detail', hhh=url['url_object'].hhhash, from_popup=True) }}">
Show other captures with the same HTTP Headers Hash
</a>
</p> </p>
<div class="collapse" id="response_cookies_full_list_{{ url['url_object'].uuid }}"> {% endif %}
<div class="card card-body"> <ul>
{% for h in url['url_object'].response['headers'] %}
<li><b>{{h['name']}}</b>: {{h['value']}}</li>
{% endfor%}
</ul>
</div>
</div>
</div>
{% if url['cookies_received'] %}
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#accordionResponseCookies_{{url['url_object'].uuid}}" aria-expanded="false" aria-controls="collapseResponseCookies">
Cookies received
</button>
</h2>
<div id="accordionResponseCookies_{{url['url_object'].uuid}}" class="accordion-collapse collapse" data-bs-parent="#accordionResponse_{{url['url_object'].uuid}}">
<div class="accordion-body">
{{ indexed_cookies("This response contains 3rd party cookies:", "Node sending this cookie", url['cookies_received']['3rd_party']) }} {{ indexed_cookies("This response contains 3rd party cookies:", "Node sending this cookie", url['cookies_received']['3rd_party']) }}
{{ indexed_cookies("Cookies, sent somewhere in the capture", "Node sending this cookie", url['cookies_received']['sent']) }} {{ indexed_cookies("Cookies, sent somewhere in the capture", "Node sending this cookie", url['cookies_received']['sent']) }}
{{ indexed_cookies("Cookies, never sent", "", url['cookies_received']['not_sent']) }} {{ indexed_cookies("Cookies, never sent", "", url['cookies_received']['not_sent']) }}
@ -319,7 +345,7 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
<div> </div>
</li> </li>
</ul> </ul>
</li> </li>

View File

@ -249,12 +249,10 @@
</p> </p>
</div> </div>
{% endif %} {% endif %}
{% if has_pandora %} {% if has_pandora %}
{{ pandora_submit(tree_uuid, urlnode_uuid, hash) }} {{ pandora_submit(tree_uuid, urlnode_uuid, hash) }}
<br> <br>
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
{% macro hash_icon(tree_uuid, urlnode_uuid, mimetype, hash) %} {% macro hash_icon(tree_uuid, urlnode_uuid, mimetype, hash) %}