Skip to content

Commit 8f433a1

Browse files
committed
Fix merge conflicts with master
2 parents 8922323 + 9b43a7f commit 8f433a1

23 files changed

+163
-100
lines changed

app/objects/c_agent.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22
from base64 import b64decode
3-
from datetime import datetime
3+
from datetime import datetime, timezone
44
from urllib.parse import urlparse
55

66
import marshmallow as ma
@@ -113,7 +113,7 @@ def __init__(self, sleep_min=30, sleep_max=60, watchdog=0, platform='unknown', s
113113
self.pid = pid
114114
self.ppid = ppid
115115
self.trusted = trusted
116-
self.created = datetime.now()
116+
self.created = datetime.now(timezone.utc)
117117
self.last_seen = self.created
118118
self.last_trusted_seen = self.created
119119
self.executors = executors
@@ -189,7 +189,7 @@ async def get_preferred_executor(self, ability):
189189
return potential_executors[0]
190190

191191
async def heartbeat_modification(self, **kwargs):
192-
now = datetime.now()
192+
now = datetime.now(timezone.utc)
193193
self.last_seen = now
194194
if self.trusted:
195195
self.last_trusted_seen = now

app/objects/c_operation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import uuid
66
from collections import defaultdict
77
from copy import deepcopy
8-
from datetime import datetime
8+
from datetime import datetime, timezone
99
from enum import Enum
1010
from importlib import import_module
1111

@@ -145,7 +145,7 @@ def store(self, ram):
145145

146146
def set_start_details(self):
147147
self.id = self.id if self.id else str(uuid.uuid4())
148-
self.start = datetime.now()
148+
self.start = datetime.now(timezone.utc)
149149

150150
def add_link(self, link):
151151
self.chain.append(link)

app/objects/secondclass/c_fact.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime
1+
from datetime import datetime, timezone
22
from enum import Enum
33

44
import marshmallow as ma
@@ -109,7 +109,7 @@ def __init__(self, trait, value=None, score=1, source=None, origin_type=None, li
109109
super().__init__()
110110
self.trait = trait
111111
self.value = value
112-
self.created = datetime.now()
112+
self.created = datetime.now(timezone.utc)
113113
self.score = score
114114
self.source = source
115115
self.origin_type = origin_type

app/objects/secondclass/c_link.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import logging
33
import uuid
44
from base64 import b64decode
5-
from datetime import datetime
5+
from datetime import datetime, timezone
66
from importlib import import_module
77

88
import marshmallow as ma
@@ -31,14 +31,14 @@ class Meta:
3131
status = ma.fields.Integer(missing=-3)
3232
score = ma.fields.Integer(missing=0)
3333
jitter = ma.fields.Integer(missing=0)
34-
decide = ma.fields.DateTime(format='%Y-%m-%d %H:%M:%S')
34+
decide = ma.fields.DateTime(format=BaseObject.TIME_FORMAT)
3535
pin = ma.fields.Integer(missing=0)
3636
pid = ma.fields.String()
3737
facts = ma.fields.List(ma.fields.Nested(FactSchema()))
3838
relationships = ma.fields.List(ma.fields.Nested(RelationshipSchema()))
3939
used = ma.fields.List(ma.fields.Nested(FactSchema()))
4040
unique = ma.fields.String()
41-
collect = ma.fields.DateTime(format='%Y-%m-%d %H:%M:%S', default='')
41+
collect = ma.fields.DateTime(format=BaseObject.TIME_FORMAT, default='')
4242
finish = ma.fields.String()
4343
ability = ma.fields.Nested(AbilitySchema())
4444
executor = ma.fields.Nested(ExecutorSchema())
@@ -47,7 +47,7 @@ class Meta:
4747
host = ma.fields.String(missing=None)
4848
output = ma.fields.String()
4949
deadman = ma.fields.Boolean()
50-
agent_reported_time = ma.fields.DateTime(format='%Y-%m-%d %H:%M:%S', missing=None)
50+
agent_reported_time = ma.fields.DateTime(format=BaseObject.TIME_FORMAT, missing=None)
5151

5252
@ma.pre_load()
5353
def fix_ability(self, link, **_):
@@ -165,7 +165,7 @@ def __init__(self, command='', paw='', ability=None, executor=None, status=-3, s
165165
self.status = status
166166
self.score = score
167167
self.jitter = jitter
168-
self.decide = datetime.now()
168+
self.decide = datetime.now(timezone.utc)
169169
self.pid = None
170170
self.collect = None
171171
self.finish = None

app/objects/secondclass/c_result.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class ResultSchema(ma.Schema):
88
output = ma.fields.String()
99
pid = ma.fields.String()
1010
status = ma.fields.String()
11-
agent_reported_time = ma.fields.DateTime(format='%Y-%m-%d %H:%M:%S', missing=None)
11+
agent_reported_time = ma.fields.DateTime(format=BaseObject.TIME_FORMAT, missing=None)
1212

1313
@ma.post_load
1414
def build_result(self, data, **_):

app/service/app_svc.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import os
77
import time
88
from collections import namedtuple
9-
from datetime import datetime, date
9+
from datetime import datetime, timezone
1010
from importlib import import_module
1111

1212
import aiohttp_jinja2
@@ -42,7 +42,7 @@ async def start_sniffer_untrusted_agents(self):
4242
trusted_agents = await self.get_service('data_svc').locate('agents', match=dict(trusted=1))
4343
next_check = self.get_config(name='agents', prop='untrusted_timer')
4444
for a in trusted_agents:
45-
silence_time = (datetime.now() - a.last_trusted_seen).total_seconds()
45+
silence_time = (datetime.now(timezone.utc) - a.last_trusted_seen).total_seconds()
4646
if silence_time > (self.get_config(name='agents', prop='untrusted_timer') + int(a.sleep_max)):
4747
self.log.debug('Agent (%s) now untrusted. Last seen %s sec ago' % (a.paw, int(silence_time)))
4848
a.trusted = 0
@@ -75,8 +75,9 @@ async def run_scheduler(self):
7575
while True:
7676
interval = 60
7777
for s in await self.get_service('data_svc').locate('schedules'):
78-
now = datetime.now().time()
79-
diff = datetime.combine(date.today(), now) - datetime.combine(date.today(), s.schedule)
78+
now = datetime.now(timezone.utc).time()
79+
today_utc = datetime.now(timezone.utc).date()
80+
diff = datetime.combine(today_utc, now) - datetime.combine(today_utc, s.schedule)
8081
if interval > diff.total_seconds() > 0:
8182
self.log.debug('Pulling %s off the scheduler' % s.name)
8283
sop = copy.deepcopy(s.task)

app/service/contact_svc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import re
33
from collections import defaultdict
4-
from datetime import datetime
4+
from datetime import datetime, timezone
55
from base64 import b64decode
66

77
from app.objects.c_agent import Agent
@@ -162,7 +162,7 @@ async def _get_instructions(self, agent):
162162

163163
@staticmethod
164164
def _convert_link_to_instruction(link):
165-
link.collect = datetime.now()
165+
link.collect = datetime.now(timezone.utc)
166166
payloads = [] if link.cleanup else link.executor.payloads
167167
uploads = [] if link.cleanup else link.executor.uploads
168168
return Instruction(id=link.unique,

app/service/event_svc.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import asyncio
2-
import datetime
32
import json
43
import websockets
54

5+
from datetime import datetime, timezone
6+
67
from app.service.interfaces.i_event_svc import EventServiceInterface
78
from app.utility.base_service import BaseService
89

@@ -72,7 +73,7 @@ async def fire_event(self, exchange=None, queue=None, timestamp=True, **callback
7273
queue = queue or self.default_queue
7374
metadata = {}
7475
if timestamp:
75-
metadata.update(dict(timestamp=datetime.datetime.now().timestamp()))
76+
metadata.update(dict(timestamp=datetime.now(timezone.utc).timestamp()))
7677
callback_kwargs.update(dict(metadata=metadata))
7778
uri = '/'.join([self.ws_uri, exchange, queue])
7879
if self.global_listeners:

app/utility/base_world.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import subprocess
77
import distutils.version
88
from base64 import b64encode, b64decode
9-
from datetime import datetime
9+
from datetime import datetime, timezone
1010
from importlib import import_module
1111
from random import randint, choice
1212
from enum import Enum
@@ -23,7 +23,7 @@ class BaseWorld:
2323
_app_configuration = dict()
2424

2525
re_base64 = re.compile('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}', flags=re.DOTALL)
26-
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
26+
TIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
2727

2828
@staticmethod
2929
def apply_config(name, config):
@@ -80,7 +80,7 @@ def prepend_to_file(filename, line):
8080

8181
@staticmethod
8282
def get_current_timestamp(date_format=TIME_FORMAT):
83-
return datetime.now().strftime(date_format)
83+
return datetime.now(timezone.utc).strftime(date_format)
8484

8585
@staticmethod
8686
def get_timestamp_from_string(datetime_str, date_format=TIME_FORMAT):

static/css/core.css

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ body {
3737
border-radius: 50%;
3838
}
3939

40+
.is-underlined {
41+
text-decoration: underline;
42+
}
43+
4044
main.main {
4145
min-height: 100%;
4246
width: 100%;
@@ -53,7 +57,12 @@ main.main {
5357
padding-bottom: 20px;
5458
}
5559

56-
.menu-label {
60+
.menu-label.nav-header {
61+
cursor: default;
62+
background: none !important;
63+
border-bottom: 2px solid #8B0000;
64+
font-size: 0.75em;
65+
letter-spacing: 0.1em;
5766
color: white !important;
5867
padding: 8px;
5968
border-radius: 4px;
@@ -109,10 +118,6 @@ main.main {
109118
background-color: #060606;
110119
}
111120

112-
.nav-header {
113-
cursor: default;
114-
}
115-
116121
.nav-item.disabled {
117122
color: #a0a0a0;
118123
}

static/css/lib/custom-bulma-blue.css

Lines changed: 13 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/css/lib/custom-bulma-blue.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)