mirror of https://github.com/CIRCL/AIL-framework
chg: [chats explorer] show chats/subchannels creation date
parent
3fb1d0ad74
commit
4cc9608a3f
|
@ -173,7 +173,7 @@ class ChatServiceInstance:
|
||||||
if 'chats' in options:
|
if 'chats' in options:
|
||||||
meta['chats'] = []
|
meta['chats'] = []
|
||||||
for chat_id in self.get_chats():
|
for chat_id in self.get_chats():
|
||||||
meta['chats'].append(Chats.Chat(chat_id, self.uuid).get_meta({'nb_subchannels'}))
|
meta['chats'].append(Chats.Chat(chat_id, self.uuid).get_meta({'created_at', 'nb_subchannels'}))
|
||||||
return meta
|
return meta
|
||||||
|
|
||||||
def get_nb_chats(self):
|
def get_nb_chats(self):
|
||||||
|
@ -297,7 +297,7 @@ def api_get_chat(chat_id, chat_instance_uuid):
|
||||||
chat = Chats.Chat(chat_id, chat_instance_uuid)
|
chat = Chats.Chat(chat_id, chat_instance_uuid)
|
||||||
if not chat.exists():
|
if not chat.exists():
|
||||||
return {"status": "error", "reason": "Unknown chat"}, 404
|
return {"status": "error", "reason": "Unknown chat"}, 404
|
||||||
meta = chat.get_meta({'img', 'info', 'subchannels', 'username'})
|
meta = chat.get_meta({'created_at', 'img', 'info', 'subchannels', 'username'})
|
||||||
if meta['subchannels']:
|
if meta['subchannels']:
|
||||||
meta['subchannels'] = get_subchannels_meta_from_global_id(meta['subchannels'])
|
meta['subchannels'] = get_subchannels_meta_from_global_id(meta['subchannels'])
|
||||||
else:
|
else:
|
||||||
|
@ -308,7 +308,7 @@ def api_get_subchannel(chat_id, chat_instance_uuid):
|
||||||
subchannel = ChatSubChannels.ChatSubChannel(chat_id, chat_instance_uuid)
|
subchannel = ChatSubChannels.ChatSubChannel(chat_id, chat_instance_uuid)
|
||||||
if not subchannel.exists():
|
if not subchannel.exists():
|
||||||
return {"status": "error", "reason": "Unknown chat"}, 404
|
return {"status": "error", "reason": "Unknown chat"}, 404
|
||||||
meta = subchannel.get_meta({'chat', 'img', 'nb_messages'})
|
meta = subchannel.get_meta({'chat', 'created_at', 'img', 'nb_messages'})
|
||||||
if meta['chat']:
|
if meta['chat']:
|
||||||
meta['chat'] = get_chat_meta_from_global_id(meta['chat'])
|
meta['chat'] = get_chat_meta_from_global_id(meta['chat'])
|
||||||
meta['messages'], meta['tags_messages'] = subchannel.get_messages()
|
meta['messages'], meta['tags_messages'] = subchannel.get_messages()
|
||||||
|
|
|
@ -86,6 +86,8 @@ class ChatSubChannel(AbstractChatObject):
|
||||||
meta['img'] = self.get_img()
|
meta['img'] = self.get_img()
|
||||||
if 'nb_messages':
|
if 'nb_messages':
|
||||||
meta['nb_messages'] = self.get_nb_messages()
|
meta['nb_messages'] = self.get_nb_messages()
|
||||||
|
if 'created_at':
|
||||||
|
meta['created_at'] = self.get_created_at(date=True)
|
||||||
return meta
|
return meta
|
||||||
|
|
||||||
def get_misp_object(self):
|
def get_misp_object(self):
|
||||||
|
|
|
@ -84,6 +84,8 @@ class Chat(AbstractChatObject):
|
||||||
meta['subchannels'] = self.get_subchannels()
|
meta['subchannels'] = self.get_subchannels()
|
||||||
if 'nb_subchannels':
|
if 'nb_subchannels':
|
||||||
meta['nb_subchannels'] = self.get_nb_subchannels()
|
meta['nb_subchannels'] = self.get_nb_subchannels()
|
||||||
|
if 'created_at':
|
||||||
|
meta['created_at'] = self.get_created_at(date=True)
|
||||||
return meta
|
return meta
|
||||||
|
|
||||||
def get_misp_object(self):
|
def get_misp_object(self):
|
||||||
|
|
|
@ -94,8 +94,12 @@ class AbstractChatObject(AbstractSubtypeObject, ABC):
|
||||||
threads.append(obj_global_id)
|
threads.append(obj_global_id)
|
||||||
return threads
|
return threads
|
||||||
|
|
||||||
def get_created_at(self):
|
def get_created_at(self, date=False):
|
||||||
return self._get_field('created_at')
|
created_at = self._get_field('created_at')
|
||||||
|
if date and created_at:
|
||||||
|
created_at = datetime.fromtimestamp(float(created_at))
|
||||||
|
created_at = created_at.isoformat(' ')
|
||||||
|
return created_at
|
||||||
|
|
||||||
def set_created_at(self, timestamp):
|
def set_created_at(self, timestamp):
|
||||||
self._set_field('created_at', timestamp)
|
self._set_field('created_at', timestamp)
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
{# <th>Chat Instance</th>#}
|
<th>Created at</th>
|
||||||
<th>First seen</th>
|
<th>First seen</th>
|
||||||
<th>Last seen</th>
|
<th>Last seen</th>
|
||||||
<th>Username</th>
|
<th>Username</th>
|
||||||
|
@ -73,9 +73,9 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{# {{ subchannel["subtype"] }}#}
|
|
||||||
{{ subchannel['name'] }}
|
{{ subchannel['name'] }}
|
||||||
</td>
|
</td>
|
||||||
|
<td>{{ subchannel["created_at"] }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if subchannel['first_seen'] %}
|
{% if subchannel['first_seen'] %}
|
||||||
{{ subchannel['first_seen'][0:4] }}-{{ subchannel['first_seen'][4:6] }}-{{ subchannel['first_seen'][6:8] }}
|
{{ subchannel['first_seen'][0:4] }}-{{ subchannel['first_seen'][4:6] }}-{{ subchannel['first_seen'][6:8] }}
|
||||||
|
|
|
@ -67,9 +67,10 @@
|
||||||
<th>Icon</th>
|
<th>Icon</th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>ID</th>
|
<th>ID</th>
|
||||||
|
<th>Created at</th>
|
||||||
<th>First Seen</th>
|
<th>First Seen</th>
|
||||||
<th>Last Seen</th>
|
<th>Last Seen</th>
|
||||||
<th>NB Chats</th>
|
<th>NB SubChannels</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody style="font-size: 15px;">
|
<tbody style="font-size: 15px;">
|
||||||
|
@ -78,8 +79,9 @@
|
||||||
<td>
|
<td>
|
||||||
<img src="{{ url_for('static', filename='image/ail-icon.png') }}" class="rounded-circle mr-1" alt="{{ chat['id'] }}" width="40" height="40">
|
<img src="{{ url_for('static', filename='image/ail-icon.png') }}" class="rounded-circle mr-1" alt="{{ chat['id'] }}" width="40" height="40">
|
||||||
</td>
|
</td>
|
||||||
<td>{{ chat['name'] }}</td>
|
<td><b>{{ chat['name'] }}</b></td>
|
||||||
<td><a href="{{ url_for('chats_explorer.chats_explorer_chat') }}?uuid={{ chat_instance['uuid'] }}&id={{ chat['id'] }}">{{ chat['id'] }}</a></td>
|
<td><a href="{{ url_for('chats_explorer.chats_explorer_chat') }}?uuid={{ chat_instance['uuid'] }}&id={{ chat['id'] }}">{{ chat['id'] }}</a></td>
|
||||||
|
<td>{{ chat['created_at'] }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if chat['first_seen'] %}
|
{% if chat['first_seen'] %}
|
||||||
{{ chat['first_seen'][0:4] }}-{{ chat['first_seen'][4:6] }}-{{ chat['first_seen'][6:8] }}
|
{{ chat['first_seen'][0:4] }}-{{ chat['first_seen'][4:6] }}-{{ chat['first_seen'][6:8] }}
|
||||||
|
@ -109,7 +111,7 @@
|
||||||
$('#tablechats').DataTable({
|
$('#tablechats').DataTable({
|
||||||
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
||||||
"iDisplayLength": 10,
|
"iDisplayLength": 10,
|
||||||
"order": [[ 4, "desc" ]]
|
"order": [[ 5, "desc" ]]
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
<th>Icon</th>
|
<th>Icon</th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>ID</th>
|
<th>ID</th>
|
||||||
|
<th>Created at</th>
|
||||||
<th>First Seen</th>
|
<th>First Seen</th>
|
||||||
<th>Last Seen</th>
|
<th>Last Seen</th>
|
||||||
<th>NB Sub-Channels</th>
|
<th>NB Sub-Channels</th>
|
||||||
|
@ -70,6 +71,7 @@
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>{{ chat['name'] }}</td>
|
<td>{{ chat['name'] }}</td>
|
||||||
<td>{{ chat['id'] }}</td>
|
<td>{{ chat['id'] }}</td>
|
||||||
|
<td>{{ chat['created_at'] }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if chat['first_seen'] %}
|
{% if chat['first_seen'] %}
|
||||||
{{ chat['first_seen'][0:4] }}-{{ chat['first_seen'][4:6] }}-{{ chat['first_seen'][6:8] }}
|
{{ chat['first_seen'][0:4] }}-{{ chat['first_seen'][4:6] }}-{{ chat['first_seen'][6:8] }}
|
||||||
|
@ -107,6 +109,7 @@
|
||||||
<th>Icon</th>
|
<th>Icon</th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>ID</th>
|
<th>ID</th>
|
||||||
|
<th>Created at</th>
|
||||||
<th>First Seen</th>
|
<th>First Seen</th>
|
||||||
<th>Last Seen</th>
|
<th>Last Seen</th>
|
||||||
<th>NB Messages</th>
|
<th>NB Messages</th>
|
||||||
|
@ -120,6 +123,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td><b>{{ meta['name'] }}</b></td>
|
<td><b>{{ meta['name'] }}</b></td>
|
||||||
<td><a href="{{ url_for('chats_explorer.objects_subchannel_messages') }}?uuid={{ meta['subtype'] }}&id={{ meta['id'] }}">{{ meta['id'] }}</a></td>
|
<td><a href="{{ url_for('chats_explorer.objects_subchannel_messages') }}?uuid={{ meta['subtype'] }}&id={{ meta['id'] }}">{{ meta['id'] }}</a></td>
|
||||||
|
<td>{{ meta['created_at'] }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if meta['first_seen'] %}
|
{% if meta['first_seen'] %}
|
||||||
{{ meta['first_seen'][0:4] }}-{{ meta['first_seen'][4:6] }}-{{ meta['first_seen'][6:8] }}
|
{{ meta['first_seen'][0:4] }}-{{ meta['first_seen'][4:6] }}-{{ meta['first_seen'][6:8] }}
|
||||||
|
@ -220,7 +224,7 @@
|
||||||
$('#tablesubchannels').DataTable({
|
$('#tablesubchannels').DataTable({
|
||||||
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
"aLengthMenu": [[5, 10, 15, -1], [5, 10, 15, "All"]],
|
||||||
"iDisplayLength": 10,
|
"iDisplayLength": 10,
|
||||||
"order": [[ 4, "desc" ]]
|
"order": [[ 5, "desc" ]]
|
||||||
});
|
});
|
||||||
{% endif %}
|
{% endif %}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue