diff options
Diffstat (limited to 'database/sqlite')
| -rw-r--r-- | database/sqlite/eurephiadb-sqlite.c | 19 | ||||
| -rw-r--r-- | database/sqlite/sql-schema.sql | 42 |
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, |
