From 83cf679350af54916bfb9e017cc36a3b3ef6ff01 Mon Sep 17 00:00:00 2001 From: Alex Van Brunt Date: Tue, 19 Mar 2024 12:12:03 -0600 Subject: [PATCH] Fix utc for datetime.now --- requirements.txt | 2 +- src/cbc_syslog/core.py | 7 ++++--- src/cbc_syslog/util/output.py | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index e6774f3..140fa7e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,4 @@ flake8==5.0.4 flake8-colors==0.1.9 flake8-docstrings==1.7.0 pre-commit>=2.15.0 -freezegun==1.2.2 +freezegun==1.4.0 diff --git a/src/cbc_syslog/core.py b/src/cbc_syslog/core.py index 68104ea..916a9da 100644 --- a/src/cbc_syslog/core.py +++ b/src/cbc_syslog/core.py @@ -17,7 +17,7 @@ import pathlib from configparser import ConfigParser, NoSectionError -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from cbc_syslog.util import CarbonBlackCloud, Transform, Output from cbc_syslog.util.example import (EXAMPLE_ALERT_CEF_TEMPLATE, EXAMPLE_ALERT_LEEF_TEMPLATE, @@ -61,11 +61,12 @@ def poll(config): previous_state = {} # Use last end_time unless no state is available use 90s ago - new_start_time_str = previous_state.get("end_time", (datetime.now() - timedelta(seconds=90)).strftime(TIME_FORMAT)) + new_start_time_str = previous_state.get("end_time", (datetime.now(timezone.utc) - timedelta(seconds=90)).strftime(TIME_FORMAT)) new_start_time = datetime.strptime(new_start_time_str, TIME_FORMAT) + new_start_time = new_start_time.replace(tzinfo=timezone.utc) # Should stay behind 30s to ensure backend data is available - end_time = datetime.now() - timedelta(seconds=30) + end_time = datetime.now(timezone.utc) - timedelta(seconds=30) if end_time < new_start_time: log.error("Unable to fetch data please wait a minimum of 60s before next poll") diff --git a/src/cbc_syslog/util/output.py b/src/cbc_syslog/util/output.py index 4013974..22ca469 100644 --- a/src/cbc_syslog/util/output.py +++ b/src/cbc_syslog/util/output.py @@ -20,7 +20,7 @@ import ssl import traceback -from datetime import datetime +from datetime import datetime, timezone log = logging.getLogger(__name__) @@ -113,7 +113,7 @@ def send(self, data): elif type == "file": try: - encoded = base64.b64encode(datetime.now().strftime('%Y-%m-%dT%H:%M:00.000Z').encode("ascii")) + encoded = base64.b64encode(datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:00.000Z').encode("ascii")) file_name = f"{encoded.decode('ascii')}.txt" new_file_path = pathlib.Path(self.output_params.get("file_path")).joinpath(file_name) with open(new_file_path, "a") as new_file: