1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-03 00:07:05 +00:00
mailinabox/management/reporting/capture/logs/DateParser.py
2022-09-19 14:45:11 -04:00

43 lines
1.2 KiB
Python

#####
##### This file is part of Mail-in-a-Box-LDAP which is released under the
##### terms of the GNU Affero General Public License as published by the
##### Free Software Foundation, either version 3 of the License, or (at
##### your option) any later version. See file LICENSE or go to
##### https://github.com/downtownallday/mailinabox-ldap for full license
##### details.
#####
import datetime
import pytz
rsyslog_traditional_regexp = '^(.{15})'
with open('/etc/timezone') as fp:
timezone_id = fp.read().strip()
def rsyslog_traditional(str):
# Handles the default timestamp in rsyslog
# (RSYSLOG_TraditionalFileFormat)
#
# eg: "Dec 6 06:25:04" (always 15 characters)
#
# the date string is in local time
#
d = datetime.datetime.strptime(str, '%b %d %H:%M:%S')
# since the log date has no year, use the current year
today = datetime.date.today()
year = today.year
if d.month == 12 and today.month == 1:
year -= 1
d = d.replace(year=year)
# convert to UTC
if timezone_id == 'Etc/UTC':
return d
local_tz = pytz.timezone(timezone_id)
return local_tz.localize(d, is_dst=None).astimezone(pytz.utc)