summaryrefslogtreecommitdiffstats
path: root/database/sqlite
diff options
context:
space:
mode:
Diffstat (limited to 'database/sqlite')
-rw-r--r--database/sqlite/eurephiadb-sqlite.c19
-rw-r--r--database/sqlite/sql-schema.sql42
2 files changed, 41 insertions, 20 deletions
diff --git a/database/sqlite/eurephiadb-sqlite.c b/database/sqlite/eurephiadb-sqlite.c
index 512bd57..1abcfeb 100644
--- a/database/sqlite/eurephiadb-sqlite.c
+++ b/database/sqlite/eurephiadb-sqlite.c
@@ -550,6 +550,15 @@ int eDBregister_vpnmacaddr(eurephiaCTX *ctx, eurephiaSESSION *session, const cha
return 0;
}
+ // Register MAC address into history table
+ res = sqlite_query(ctx, "INSERT INTO openvpn_macaddr_history (sessionkey, macaddr) VALUES ('%q','%q')",
+ session->sessionkey, macaddr);
+ if( res == NULL ) {
+ eurephia_log(ctx, LOG_CRITICAL, 0, "Failed to log new MAC address for session");
+ return 0;
+ }
+
+ // Update lastlog to reflect last used MAC address for the session
res = sqlite_query(ctx,
"UPDATE openvpn_lastlog SET sessionstatus = 2, macaddr = '%q' "
" WHERE sessionkey = '%q' AND sessionstatus = 1", macaddr, session->sessionkey);
@@ -569,9 +578,10 @@ int eDBregister_vpnmacaddr(eurephiaCTX *ctx, eurephiaSESSION *session, const cha
return 1;
}
+
// Register the user as logged out
int eDBregister_logout(eurephiaCTX *ctx, eurephiaSESSION *skey,
- const char *bytes_sent, const char *bytes_received)
+ const char *bytes_sent, const char *bytes_received, const char *duration)
{
dbresult *res = NULL;
@@ -582,9 +592,10 @@ int eDBregister_logout(eurephiaCTX *ctx, eurephiaSESSION *skey,
res = sqlite_query(ctx,
"UPDATE openvpn_lastlog "
" SET sessionstatus = 3, logout = CURRENT_TIMESTAMP, "
- " bytes_sent = '%i', bytes_received = '%i' "
+ " bytes_sent = '%i', bytes_received = '%i', session_duration = '%i' "
" WHERE sessionkey = '%q' AND sessionstatus = 2",
- atoi_nullsafe(bytes_sent), atoi_nullsafe(bytes_received), skey->sessionkey);
+ atoi_nullsafe(bytes_sent), atoi_nullsafe(bytes_received),
+ atoi_nullsafe(duration), skey->sessionkey);
if( res == NULL ) {
eurephia_log(ctx, LOG_CRITICAL, 0, "Could not update lastlog with logout information (%s)",
skey->sessionkey);
@@ -817,7 +828,7 @@ int eDBdestroy_session(eurephiaCTX *ctx, eurephiaSESSION *session) {
// Update session status
res = sqlite_query(ctx,
"UPDATE openvpn_lastlog "
- " SET sessionstatus = 4, session_del = CURRENT_TIMESTAMP "
+ " SET sessionstatus = 4, session_deleted = CURRENT_TIMESTAMP "
" WHERE sessionkey = '%q' AND sessionstatus = 3", session->sessionkey);
if( res == NULL ) {
eurephia_log(ctx, LOG_CRITICAL, 0,
diff --git a/database/sqlite/sql-schema.sql b/database/sqlite/sql-schema.sql
index a8f9168..b677554 100644
--- a/database/sqlite/sql-schema.sql
+++ b/database/sqlite/sql-schema.sql
@@ -36,25 +36,35 @@ CREATE TABLE openvpn_accesses (
);
CREATE TABLE openvpn_lastlog (
- uid integer ,
- certid integer ,
- protocol varchar(4) NOT NULL,
- remotehost varchar(128) NOT NULL,
- remoteport integer NOT NULL,
- macaddr varchar(20) ,
- vpnipaddr varchar(32) NOT NULL,
- vpnipmask varchar(32) NOT NULL,
- sessionstatus integer NOT NULL DEFAULT 0,
- sessionkey varchar(128) ,
- login timestamp ,
- logout timestamp ,
- session_del timestamp ,
- bytes_sent integer ,
- bytes_received integer ,
- llid integer PRIMARY KEY AUTOINCREMENT
+ uid integer ,
+ certid integer ,
+ protocol varchar(4) NOT NULL,
+ remotehost varchar(128) NOT NULL,
+ remoteport integer NOT NULL,
+ macaddr varchar(20) ,
+ vpnipaddr varchar(32) NOT NULL,
+ vpnipmask varchar(32) NOT NULL,
+ sessionstatus integer NOT NULL DEFAULT 0,
+ sessionkey varchar(128) ,
+ login timestamp ,
+ logout timestamp ,
+ session_deleted timestamp ,
+ session_duration timestamp,
+ bytes_sent integer ,
+ bytes_received integer ,
+ llid integer PRIMARY KEY AUTOINCREMENT
);
CREATE UNIQUE INDEX openvpn_lastlog_sessionkey ON openvpn_lastlog(sessionkey);
+CREATE TABLE openvpn_macaddr_history (
+ sessionkey varchar(64) NOT NULL,
+ macaddr varchar(20) NOT NULL,
+ registered timestamp DEFAULT CURRENT_TIMESTAMP,
+ semaid integer PRIMARY KEY AUTOINCREMENT
+);
+CREATE INDEX openvpn_macaddr_hist_sessionkey ON openvpn_macaddr_history(sessionkey);
+CREATE INDEX openvpn_macaddr_hist_macaddr ON openvpn_macaddr_history(macaddr);
+
CREATE TABLE openvpn_sessions (
sessionkey varchar(128) NOT NULL,
datakey varchar(256) NOT NULL,