openvpn: Store connection times in ASCII timestamps

This format seems to be a lot easier to handle in SQLite queries.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Michael Tremer
2020-04-13 11:50:18 +00:00
committed by Arne Fitzenreiter
parent 708f2b7368
commit 616de0b48c

View File

@@ -114,8 +114,8 @@ class OpenVPNMetrics(object):
db.executescript("""
CREATE TABLE IF NOT EXISTS sessions(
common_name TEXT NOT NULL,
connected_at INTEGER NOT NULL,
duration INTEGER,
connected_at TEXT NOT NULL,
disconnected_at TEXT,
bytes_received INTEGER,
bytes_sent INTEGER
);
@@ -144,7 +144,7 @@ class OpenVPNMetrics(object):
c = self.db.cursor()
c.execute("INSERT INTO sessions(common_name, connected_at) \
VALUES(?, ?)", (common_name, time_unix))
VALUES(?, DATETIME(?, 'unixepoch'))", (common_name, time_unix))
self.db.commit()
def client_disconnect(self, args):
@@ -159,8 +159,9 @@ class OpenVPNMetrics(object):
% (common_name, duration, bytes_received, bytes_sent))
c = self.db.cursor()
c.execute("UPDATE sessions SET duration = ?, bytes_received = ?, \
bytes_sent = ? WHERE common_name = ? AND duration IS NULL",
c.execute("UPDATE sessions SET disconnected_at = DATETIME(connected_at, '+' || ? || ' seconds'), \
bytes_received = ?, bytes_sent = ? \
WHERE common_name = ? AND disconnected_at IS NULL",
(duration, bytes_received, bytes_sent, common_name))
self.db.commit()