mirror of
https://github.com/ail-project/ail-framework.git
synced 2024-11-26 15:57:16 +00:00
chg: [image object] add default + basic card
This commit is contained in:
parent
8483272ee0
commit
e92bf72f64
7 changed files with 189 additions and 4 deletions
|
@ -49,9 +49,9 @@ class UserAccount(AbstractSubtypeObject):
|
||||||
|
|
||||||
def get_link(self, flask_context=False):
|
def get_link(self, flask_context=False):
|
||||||
if flask_context:
|
if flask_context:
|
||||||
url = url_for('correlation.show_correlation', type=self.type, subtype=self.subtype, id=self.id)
|
url = url_for('chats_explorer.objects_user_account', type=self.type, subtype=self.subtype, id=self.id)
|
||||||
else:
|
else:
|
||||||
url = f'{baseurl}/correlation/show?type={self.type}&subtype={self.subtype}&id={self.id}'
|
url = f'{baseurl}/objects/user-account?&subtype={self.subtype}&id={self.id}'
|
||||||
return url
|
return url
|
||||||
|
|
||||||
def get_svg_icon(self): # TODO change icon/color
|
def get_svg_icon(self): # TODO change icon/color
|
||||||
|
@ -127,6 +127,13 @@ class UserAccount(AbstractSubtypeObject):
|
||||||
def update_username_timeline(self, username_global_id, timestamp):
|
def update_username_timeline(self, username_global_id, timestamp):
|
||||||
self._get_timeline_username().add_timestamp(timestamp, username_global_id)
|
self._get_timeline_username().add_timestamp(timestamp, username_global_id)
|
||||||
|
|
||||||
|
def get_messages(self):
|
||||||
|
messages = []
|
||||||
|
for mess in self.get_correlation('message'):
|
||||||
|
messages.append(f'message:{mess}')
|
||||||
|
return messages
|
||||||
|
|
||||||
|
|
||||||
def get_messages_by_chat_obj(self, chat_obj):
|
def get_messages_by_chat_obj(self, chat_obj):
|
||||||
messages = []
|
messages = []
|
||||||
for mess in self.get_correlation_iter_obj(chat_obj, 'message'):
|
for mess in self.get_correlation_iter_obj(chat_obj, 'message'):
|
||||||
|
|
|
@ -190,8 +190,11 @@ def show_correlation():
|
||||||
else:
|
else:
|
||||||
dict_object["subtype"] = ''
|
dict_object["subtype"] = ''
|
||||||
dict_object["metadata_card"] = ail_objects.get_object_card_meta(obj_type, subtype, obj_id, related_btc=related_btc)
|
dict_object["metadata_card"] = ail_objects.get_object_card_meta(obj_type, subtype, obj_id, related_btc=related_btc)
|
||||||
|
dict_object["metadata_card"]['tags_safe'] = True
|
||||||
return render_template("show_correlation.html", dict_object=dict_object, bootstrap_label=bootstrap_label,
|
return render_template("show_correlation.html", dict_object=dict_object, bootstrap_label=bootstrap_label,
|
||||||
tags_selector_data=Tag.get_tags_selector_data())
|
tags_selector_data=Tag.get_tags_selector_data(),
|
||||||
|
meta=dict_object["metadata_card"],
|
||||||
|
ail_tags=dict_object["metadata_card"]["add_tags_modal"])
|
||||||
|
|
||||||
@correlation.route('/correlation/get/description')
|
@correlation.route('/correlation/get/description')
|
||||||
@login_required
|
@login_required
|
||||||
|
|
57
var/www/templates/chats_explorer/basic_card_image.html
Normal file
57
var/www/templates/chats_explorer/basic_card_image.html
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<style>
|
||||||
|
.object_image {
|
||||||
|
filter: blur(5px);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="text-secondary">
|
||||||
|
<svg height="30" width="30">
|
||||||
|
<g class="nodes">
|
||||||
|
<circle cx="15" cy="15" r="15" fill="{{ meta["icon"]["color"] }}"></circle>
|
||||||
|
<text x="15" y="15" text-anchor="middle" dominant-baseline="central" class="{{ meta["icon"]["style"] }}" font-size="16px">{{ meta["icon"]["icon"] }}</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
{{ meta["id"] }} :
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body pt-0">
|
||||||
|
<div class="text-center">
|
||||||
|
{% if meta["tags_safe"] %}
|
||||||
|
<img class="object_image mb-1" src="{{ url_for('objects_image.image', filename=meta['id'])}}" style="max-height: 500px">
|
||||||
|
{% else %}
|
||||||
|
<span class="my-2 fa-stack fa-8x">
|
||||||
|
<i class="fas fa-stack-1x fa-image"></i>
|
||||||
|
<i class="fas fa-stack-2x fa-ban" style="color:Red"></i>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="badge badge-dark">
|
||||||
|
<span data-toggle="tooltip" data-placement="top" title="Tooltip on top">
|
||||||
|
<span class="badge badge-info" style="font-size: 0.8rem;">
|
||||||
|
<i class="fas fa-hourglass-start"></i>
|
||||||
|
</span>
|
||||||
|
{{meta["first_seen"]}}
|
||||||
|
</span>
|
||||||
|
<span class="badge badge-light mx-1" style="font-size: 1rem;">
|
||||||
|
<i class="far fa-calendar-alt"></i>
|
||||||
|
</span>
|
||||||
|
{{meta["last_seen"]}}
|
||||||
|
<span class="badge badge-secondary" style="font-size: 0.8rem;">
|
||||||
|
<i class="fas fa-hourglass-end"></i>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
{% for tag in meta['tags'] %}
|
||||||
|
<span class="badge badge-{{ bootstrap_label[loop.index0 % 5] }}">{{ tag }}</span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{% include 'objects/block_object_footer_small.html' %}
|
||||||
|
</div>
|
104
var/www/templates/chats_explorer/card_image.html
Normal file
104
var/www/templates/chats_explorer/card_image.html
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
<link href="{{ url_for('static', filename='css/tags.css') }}" rel="stylesheet" type="text/css" />
|
||||||
|
<script src="{{ url_for('static', filename='js/tags.js') }}"></script>
|
||||||
|
|
||||||
|
{% with modal_add_tags=ail_tags %}
|
||||||
|
{% include 'modals/add_tags.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
{% include 'modals/edit_tag.html' %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.object_image {
|
||||||
|
filter: blur(5px);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="text-secondary">{{ meta["id"] }} :</h4>
|
||||||
|
<ul class="list-group mb-2">
|
||||||
|
<li class="list-group-item py-0">
|
||||||
|
<table class="table">
|
||||||
|
<thead class="">
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th>First Seen</th>
|
||||||
|
<th>Last Seen</th>
|
||||||
|
<th>NB</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody style="font-size: 15px;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<svg height="26" width="26">
|
||||||
|
<g class="nodes">
|
||||||
|
<circle cx="13" cy="13" r="13" fill="orange"></circle>
|
||||||
|
<text x="13" y="13" text-anchor="middle" dominant-baseline="central" class="graph_node_icon {{ meta["icon"]["style"] }}" font-size="16px">{{ meta["icon"]["icon"] }}</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
{{ meta['type'] }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ meta['first_seen'][0:4] }}-{{ meta['first_seen'][4:6] }}-{{ meta['first_seen'][6:8] }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ meta['last_seen'][0:4] }}-{{ meta['last_seen'][4:6] }}-{{ meta['last_seen'][6:8] }}
|
||||||
|
</td>
|
||||||
|
<td>{{ meta['nb_seen'] }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item py-0">
|
||||||
|
<div id="accordion_image" class="my-3">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header py-1" id="headingImage">
|
||||||
|
<button class="btn w-100 collapsed rotate" data-toggle="collapse" data-target="#collapseImage" aria-expanded="false" aria-controls="collapseImage">
|
||||||
|
<span class="row text-left">
|
||||||
|
<div class="col-11">
|
||||||
|
<span class="mt-2">
|
||||||
|
<i class="far fa-image"></i> Show Image
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 text-primary">
|
||||||
|
<i class="fas fa-chevron-circle-down"></i>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div id="collapseImage" class="collapse show" aria-labelledby="headingImage" data-parent="#accordion_image">
|
||||||
|
<div class="card-body text-center">
|
||||||
|
{% include 'objects/image/block_blur_img_slider.html' %}
|
||||||
|
<img class="object_image mb-1" src="{{ url_for('objects_image.image', filename=meta['id'])}}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="list-group-item py-0">
|
||||||
|
<div class="my-2">
|
||||||
|
Tags:
|
||||||
|
{% for tag in meta['tags'] %}
|
||||||
|
<button class="btn btn-{{ bootstrap_label[loop.index0 % 5] }}"
|
||||||
|
data-toggle="modal" data-target="#edit_tags_modal"
|
||||||
|
data-tagid="{{ tag }}" data-objtype="{{ meta['type'] }}" data-objsubtype="" data-objid="{{ meta["id"] }}">
|
||||||
|
{{ tag }}
|
||||||
|
</button>
|
||||||
|
{% endfor %}
|
||||||
|
<button type="button" class="btn btn-light" data-toggle="modal" data-target="#add_tags_modal">
|
||||||
|
<i class="far fa-plus-square"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% with obj_type='image', obj_id=meta['id'], obj_subtype='' %}
|
||||||
|
{% include 'modals/investigations_register_obj.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#investigations_register_obj_modal">
|
||||||
|
<i class="fas fa-microscope"></i> Investigations
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -121,6 +121,8 @@
|
||||||
{% include 'correlation/metadata_card_etag.html' %}
|
{% include 'correlation/metadata_card_etag.html' %}
|
||||||
{% elif dict_object["object_type"] == "hhhash" %}
|
{% elif dict_object["object_type"] == "hhhash" %}
|
||||||
{% include 'correlation/metadata_card_hhhash.html' %}
|
{% include 'correlation/metadata_card_hhhash.html' %}
|
||||||
|
{% elif dict_object["object_type"] == "image" %}
|
||||||
|
{% include 'chats_explorer/card_image.html' %}
|
||||||
{% elif dict_object["object_type"] == "item" %}
|
{% elif dict_object["object_type"] == "item" %}
|
||||||
{% include 'correlation/metadata_card_item.html' %}
|
{% include 'correlation/metadata_card_item.html' %}
|
||||||
{% elif dict_object["object_type"] == "favicon" %}
|
{% elif dict_object["object_type"] == "favicon" %}
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
<span class="badge badge-light mx-1" style="font-size: 1rem;">
|
<span class="badge badge-light mx-1" style="font-size: 1rem;">
|
||||||
<i class="far fa-calendar-alt"></i>
|
<i class="far fa-calendar-alt"></i>
|
||||||
</span>
|
</span>
|
||||||
{{dict_domain["first_seen"]}}
|
{{dict_domain["last_seen"]}}
|
||||||
<span class="badge badge-secondary" style="font-size: 0.8rem;">
|
<span class="badge badge-secondary" style="font-size: 0.8rem;">
|
||||||
<i class="fas fa-hourglass-end"></i>
|
<i class="fas fa-hourglass-end"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
12
var/www/templates/objects/block_object_footer_small.html
Normal file
12
var/www/templates/objects/block_object_footer_small.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<div class="d-flex flex-row-reverse bd-highlight">
|
||||||
|
{# <div>#}
|
||||||
|
{# <a class="btn" target="_blank" href="{{ url_for('import_export.add_object_id_to_export')}}?type={{ meta['type'] }}{% if meta['subtype'] %}&subtype={{ meta['subtype'] }}{%endif%}&id={{ meta['id'] }}&lvl=0">#}
|
||||||
|
{# <img id="misp-logo" src="{{ url_for('static', filename='image/misp-logo.png')}}" height="25">#}
|
||||||
|
{# </a>#}
|
||||||
|
{# </div>#}
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-outline-light" href="{{ url_for('correlation.show_correlation')}}?type={{ meta['type'] }}{% if meta['subtype'] %}&subtype={{ meta['subtype'] }}{%endif%}&id={{ meta['id'] }}" target="_blank" style="font-size: 15px">
|
||||||
|
<i class="fas fa-project-diagram text-secondary"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
Reference in a new issue