summaryrefslogtreecommitdiffstats
path: root/database/sqlite
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-09-15 23:51:42 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-09-15 23:51:42 +0200
commitf62f5ce8cb676304ea4d4304fcb40ec6745d3903 (patch)
treee2648877afbd1260a85b76b8f4c2351ff6503cba /database/sqlite
parentab726a0092fc2f41c347fa86c48fb5bd4e27fa89 (diff)
downloadeurephia-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')
-rw-r--r--database/sqlite/eurephiadb-sqlite.c63
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;
}