diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2008-09-15 23:51:42 +0200 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-09-15 23:51:42 +0200 |
| commit | f62f5ce8cb676304ea4d4304fcb40ec6745d3903 (patch) | |
| tree | e2648877afbd1260a85b76b8f4c2351ff6503cba /database/sqlite/eurephiadb-sqlite.c | |
| parent | ab726a0092fc2f41c347fa86c48fb5bd4e27fa89 (diff) | |
| download | eurephia-f62f5ce8cb676304ea4d4304fcb40ec6745d3903.tar.gz eurephia-f62f5ce8cb676304ea4d4304fcb40ec6745d3903.tar.xz eurephia-f62f5ce8cb676304ea4d4304fcb40ec6745d3903.zip | |
- Renamed eDBget_sessionkey(...) to eDBget_sessionkey_seed(...)
- Added eDBget_sessionkey_macaddr(...) to retrieve sessionkey based on MAC address
- Changed eDBdestroy_session(...) to use eurephiaSESSION instead of MAC address string
Diffstat (limited to 'database/sqlite/eurephiadb-sqlite.c')
| -rw-r--r-- | database/sqlite/eurephiadb-sqlite.c | 63 |
1 files changed, 31 insertions, 32 deletions
diff --git a/database/sqlite/eurephiadb-sqlite.c b/database/sqlite/eurephiadb-sqlite.c index 3562452..512bd57 100644 --- a/database/sqlite/eurephiadb-sqlite.c +++ b/database/sqlite/eurephiadb-sqlite.c @@ -595,9 +595,10 @@ int eDBregister_logout(eurephiaCTX *ctx, eurephiaSESSION *skey, return 1; } + // Retrieve a session key from openvpn_sessionkeys if it is a current session. Session seed is used // as criteria -char *eDBget_sessionkey(eurephiaCTX *ctx, const char *sessionseed) { +char *eDBget_sessionkey_seed(eurephiaCTX *ctx, const char *sessionseed) { dbresult *res = NULL; char *skey = NULL; @@ -624,6 +625,26 @@ char *eDBget_sessionkey(eurephiaCTX *ctx, const char *sessionseed) { return skey; } +char *eDBget_sessionkey_macaddr(eurephiaCTX *ctx, const char *macaddr) { + dbresult *res = NULL; + char *skey = NULL; + + // Find sessionkey from MAC address + res = sqlite_query(ctx, + "SELECT sessionkey " + " FROM openvpn_sessions " + " WHERE datakey = 'macaddr' AND dataval = '%q'", macaddr); + if( res == NULL ) { + eurephia_log(ctx, LOG_CRITICAL, 0, + "Could not remove session from database (MAC addr: %s)", macaddr); + return 0; + } + skey = strdup_nullsafe(sqlite_get_value(res, 0, 0)); + sqlite_free_results(res); + + return skey; +} + // Function returns true(1) if session key is unique int eDBcheck_sessionkey_uniqueness(eurephiaCTX *ctx, const char *seskey) { @@ -783,30 +804,13 @@ int eDBstore_session_value(eurephiaCTX *ctx, eurephiaSESSION *session, int mode, // Delete session information from openvpn_sessions and update openvpn_lastlog with status -int eDBdestroy_session(eurephiaCTX *ctx, const char *macaddr) -{ +int eDBdestroy_session(eurephiaCTX *ctx, eurephiaSESSION *session) { dbresult *res = NULL; - char *skey = NULL; - eurephia_log(ctx, LOG_DEBUG, 10, "Function call: eDBdestroy_session(ctx, '%s')", macaddr); + eurephia_log(ctx, LOG_DEBUG, 10, "Function call: eDBdestroy_session(ctx, '%s')", session->sessionkey); - // Find sessionkey from MAC address - res = sqlite_query(ctx, - "SELECT sessionkey " - " FROM openvpn_sessions " - " WHERE datakey = 'macaddr' AND dataval = '%q'", macaddr); - if( res == NULL ) { - eurephia_log(ctx, LOG_CRITICAL, 0, - "Could not remove session from database (MAC addr: %s)", macaddr); - return 0; - } - - skey = strdup_nullsafe(sqlite_get_value(res, 0, 0)); - sqlite_free_results(res); - - if( skey == NULL ) { - eurephia_log(ctx, LOG_INFO, 0, - "Could not find any sessions connected to MAC addr '%s')", macaddr); + if( (session == NULL) || (session->sessionkey == NULL) ) { + eurephia_log(ctx, LOG_ERROR, 1, "No active session given to be destroyed"); return 1; } @@ -814,32 +818,27 @@ int eDBdestroy_session(eurephiaCTX *ctx, const char *macaddr) res = sqlite_query(ctx, "UPDATE openvpn_lastlog " " SET sessionstatus = 4, session_del = CURRENT_TIMESTAMP " - " WHERE sessionkey = '%q' AND sessionstatus = 3", skey); + " WHERE sessionkey = '%q' AND sessionstatus = 3", session->sessionkey); if( res == NULL ) { eurephia_log(ctx, LOG_CRITICAL, 0, - "Could not update session status in lastlog (%s/%s))", skey, macaddr); - free_nullsafe(skey); + "Could not update session status in lastlog (%s))", session->sessionkey); return 0; } sqlite_free_results(res); // Delete session variables - res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", skey); + res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", session->sessionkey); if( res == NULL ) { eurephia_log(ctx, LOG_CRITICAL, 0, - "Could not delete session variables (%s/%s))", skey, macaddr); - free_nullsafe(skey); + "Could not delete session variables (%s))", session->sessionkey); return 0; } sqlite_free_results(res); // Remove the sessionkey from openvpn_sessions - if( eDBremove_sessionkey(ctx, skey) == 0 ) { - free_nullsafe(skey); + if( eDBremove_sessionkey(ctx, session->sessionkey) == 0 ) { return 0; } - - free_nullsafe(skey); return 1; } |
