diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-03 16:26:26 +0100 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-03 16:26:26 +0100 |
| commit | 7cff27198ea8787e4f3de1dda63290b30603abc0 (patch) | |
| tree | 58751bb5afc54da01b11eb6967bb49fdb360cfea /database/sqlite | |
| parent | 8ebfae3aad720f9e9678bb8f595020c26db94444 (diff) | |
| download | eurephia-7cff27198ea8787e4f3de1dda63290b30603abc0.tar.gz eurephia-7cff27198ea8787e4f3de1dda63290b30603abc0.tar.xz eurephia-7cff27198ea8787e4f3de1dda63290b30603abc0.zip | |
Moved administration functions (eDBadmin*) into adminstration.c
Diffstat (limited to 'database/sqlite')
| -rw-r--r-- | database/sqlite/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | database/sqlite/administration.c | 374 | ||||
| -rw-r--r-- | database/sqlite/edb-sqlite.c | 370 |
3 files changed, 381 insertions, 364 deletions
diff --git a/database/sqlite/CMakeLists.txt b/database/sqlite/CMakeLists.txt index 4a39644..bed0559 100644 --- a/database/sqlite/CMakeLists.txt +++ b/database/sqlite/CMakeLists.txt @@ -5,6 +5,7 @@ SET(SQLITE3PREFIX "/etc/openvpn" CACHE STRING "Install prefix for the eurephia S SET(edb_sqlite_SRC sqlite.c edb-sqlite.c + administration.c ) SET(COMMON ../../common/eurephia_log.c diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c new file mode 100644 index 0000000..7e0e943 --- /dev/null +++ b/database/sqlite/administration.c @@ -0,0 +1,374 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> + +#ifndef DRIVERAPIVERSION +# define DRIVERAPIVERSION 2 +#endif + +#include <sqlite3.h> + +#include <eurephia_nullsafe.h> +#include <eurephia_context.h> +#include <eurephia_admin_struct.h> +#include <eurephia_log.h> +#include <eurephia_values.h> +#include <eurephiadb_session_struct.h> +#include <passwd.h> +#include "sqlite.h" + +#if DRIVERAPIVERSION > 1 +/* + * API Version 2 functions + * + */ + +// Authenticate admin user against user database +int eDBadminAuth(eurephiaCTX *ctx, const char *req_access, const char *uname, const char *pwd) { + dbresult *res = NULL; + char *crpwd = NULL; + char *activated = NULL, *deactivated = NULL, *blid = NULL; + int uid = -1, pwok = 0, access = 0; + char interface; + + assert(ctx != NULL); + + switch( ctx->context_type ) { + case ECTX_ADMIN_CONSOLE: + interface = 'C'; + break; + case ECTX_ADMIN_WEB: + interface = 'W'; + break; + default: + eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); + return 0; + } + + if( (strlen_nullsafe(uname) < 4) || (strlen_nullsafe(pwd) < 4) ) { + eurephia_log(ctx, LOG_WARNING, 0, "User name and/or password is either null or less than 4 bytes"); + return 0; + } + + // + // Authenticate user and password + // + crpwd = passwdhash(pwd); + assert(crpwd != NULL); + res = sqlite_query(ctx, + "SELECT activated, deactivated, bl.blid, " + " (password = '%q') AS pwok, uid " + " FROM openvpn_users ou" + " LEFT JOIN openvpn_blacklist bl USING (username)" + " WHERE ou.username = '%q'", + crpwd, uname); + memset(crpwd, 0, strlen_nullsafe(crpwd)); + free_nullsafe(crpwd); + + if( res == NULL ) { + eurephia_log(ctx, LOG_FATAL, 0, "Could not authenticate user against the database"); + return 0; + } + + if( sqlite_get_numtuples(res) == 1 ) { + activated = sqlite_get_value(res, 0, 0); + deactivated = sqlite_get_value(res, 0, 1); + blid = sqlite_get_value(res, 0, 2); + pwok = atoi_nullsafe(sqlite_get_value(res, 0, 3)); + uid = atoi_nullsafe(sqlite_get_value(res, 0, 4)); + sqlite_free_results(res); + + if( blid != NULL ) { + eurephia_log(ctx, LOG_WARNING, 0, + "Your user account is BLACKLISTED. You have no access."); + sqlite_free_results(res); + return 0; + } + + if( activated == NULL ) { + eurephia_log(ctx, LOG_WARNING, 0, "Your user account is not yet activated."); + sqlite_free_results(res); + return 0; + } + + if( deactivated != NULL ) { + eurephia_log(ctx, LOG_WARNING, 0, "Your user account is deactivated."); + sqlite_free_results(res); + return 0; + } + + if( pwok != 1 ) { + eurephia_log(ctx, LOG_WARNING, 0, "Authentication failed,"); + sqlite_free_results(res); + return 0; + } + + // Check if access level is granted + // (SQLite do not handle advanced joins so well, so we need to + // do this check with an extra query) + res = sqlite_query(ctx, + "SELECT (count(*) = 1) AS access " + " FROM eurephia_adminaccess" + " WHERE uid = '%i' AND interface = '%c' AND access = '%q'", + uid, interface, req_access); + if( res == NULL ) { + eurephia_log(ctx, LOG_FATAL, 0, "Could not check access level"); + return 0; + } + access = atoi_nullsafe(sqlite_get_value(res, 0, 0)); + sqlite_free_results(res); + + if( access == 0 ) { + eurephia_log(ctx, LOG_WARNING, 0, "Your account is lacking privileges for this operation"); + return 0; + } + } else { + eurephia_log(ctx, LOG_WARNING, 0, "Authentication failed. No unique records found."); + sqlite_free_results(res); + return 0; + } + + // If we reach this place, authentication was successful. Return users uid + return uid; +} + +int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *req_access) { + dbresult *res = NULL; + int valid = 0, access = 0, expire_time = 0; + char interface; + + assert( (ctx != NULL) && (sesskey != NULL) ); + + switch( ctx->context_type ) { + case ECTX_ADMIN_CONSOLE: + interface = 'C'; + break; + case ECTX_ADMIN_WEB: + interface = 'W'; + break; + default: + eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); + return 0; + } + + // Check if the session is still valid (not expired) and that this session are allowed to access + // the requested access level. + expire_time = (60 * atoi_nullsafe(defaultValue(eGet_value(ctx->dbc->config, "eurephiadmin_autologout"), + "10") + ) + ); + res = sqlite_query(ctx, + "SELECT (strftime('%%s',CURRENT_TIMESTAMP)-strftime('%%s',last_action)) > %i AS exp," + " (access IS NOT NULL) AS access" + " FROM eurephia_adminlog" + " LEFT JOIN eurephia_adminaccess USING(uid,interface)" + " WHERE status IN (1,2)" + " AND sessionkey = '%q'" + " AND access = '%q'", + expire_time, sesskey, req_access); + + if( (res == NULL) ) { + eurephia_log(ctx, LOG_FATAL, 0, "Could not validate session"); + return 0; + } + + valid = (atoi_nullsafe(sqlite_get_value(res, 0, 0)) == 0); + access = (atoi_nullsafe(sqlite_get_value(res, 0, 1)) == 1); + sqlite_free_results(res); + + // If still valid, update last_action + if( valid && access ) { + res = sqlite_query(ctx, + "UPDATE eurephia_adminlog" + " SET last_action = CURRENT_TIMESTAMP, status = 2" + " WHERE sessionkey = '%q'", sesskey); + if( res == NULL ) { + eurephia_log(ctx, LOG_ERROR, 0, "Could not register session activity"); + } + sqlite_free_results(res); + + } else { + // If not valid, register session as auto-logged out + + res = sqlite_query(ctx, + "UPDATE eurephia_adminlog" + " SET logout = CURRENT_TIMESTAMP, status = %i" + " WHERE sessionkey = '%q'", + (access ? 4 : 5), sesskey); + if( res == NULL ) { + eurephia_log(ctx, LOG_ERROR, 0, "Could not register old session as logged out"); + } + sqlite_free_results(res); + + // Delete session variables + res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", + sesskey); + if( res == NULL ) { + eurephia_log(ctx, LOG_ERROR, 0, + "Could not delete session variables (%s))", sesskey); + return 0; + } + sqlite_free_results(res); + + if( !access ) { + eurephia_log(ctx, LOG_WARNING, 0, "Your user account is lacking privileges"); + } + + } + return (valid && access); +} + +int eDBadminRegisterLogin(eurephiaCTX *ctx, eurephiaSESSION *session) { + dbresult *res = NULL; + char interface; + int uid; + + assert((ctx != NULL) && (session != NULL)); + + switch( ctx->context_type ) { + case ECTX_ADMIN_CONSOLE: + interface = 'C'; break; + case ECTX_ADMIN_WEB: + interface = 'W'; break; + default: + eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); + return 0; + } + + // Register login into eurephia_adminlog ... uid, login, interface, sessionkey + uid = atoi_nullsafe(eGet_value(session->sessvals, "uid")); + res = sqlite_query(ctx, + "INSERT INTO eurephia_adminlog " + " (uid, interface, status, login, last_action, sessionkey) " + "VALUES ('%i','%c',1,CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '%q')", + uid, interface, session->sessionkey); + if( !res ) { + eurephia_log(ctx, LOG_FATAL, 0, "Could not manage to register the session in the database"); + return 0; + } + sqlite_free_results(res); + return 1; +} + +int eDBadminLogout(eurephiaCTX *ctx, const char *sessionkey) { + dbresult *res = NULL; + + assert((ctx != NULL) && (sessionkey != NULL)); + + // Update session as logged out + res = sqlite_query(ctx, + "UPDATE eurephia_adminlog " + " SET logout = CURRENT_TIMESTAMP, status = 3" + " WHERE sessionkey = '%q'", + sessionkey); + if( !res ) { + eurephia_log(ctx, LOG_FATAL, 0, "Could not manage to register the session as logged out"); + return 0; + } + sqlite_free_results(res); + + // Delete session variables + res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", sessionkey); + if( res == NULL ) { + eurephia_log(ctx, LOG_ERROR, 0, + "Could not delete session variables (%s))", sessionkey); + return 0; + } + sqlite_free_results(res); + + return 1; +} + +int eDBadminConfigSet(eurephiaCTX *ctx, const char *key, const char *val) { + dbresult *res = NULL; + int found = 0; + + assert((ctx != NULL) && (ctx->dbc != NULL)); + + res = sqlite_query(ctx, "SELECT count(*) FROM openvpn_config WHERE datakey = '%q'", key); + if( !res ) { + eurephia_log(ctx, LOG_ERROR, 0, "Could not query configuration table"); + return 0; + } + found = atoi_nullsafe(sqlite_get_value(res, 0, 0)); + sqlite_free_results(res); + + if( found == 0 ) { + res = sqlite_query(ctx, + "INSERT INTO openvpn_config (datakey, dataval) VALUES ('%q','%q')", + key, val); + } else { + res = sqlite_query(ctx, "UPDATE openvpn_config SET dataval = '%q' WHERE datakey = '%q'", + val, key); + } + + if( res == NULL ) { + eurephia_log(ctx, LOG_ERROR, 0, "Could not register configuration entry (%s = '%s'", key, val); + return 0; + } + sqlite_free_results(res); + eAdd_value(ctx, ctx->dbc->config, key, val); + return 1; +} + +int eDBadminConfigDelete(eurephiaCTX *ctx, const char *key) { + dbresult *res = NULL; + + assert((ctx != NULL) && (ctx->dbc != NULL)); + + res = sqlite_query(ctx, "DELETE FROM openvpn_config WHERE datakey = '%q'", key); + if( !res ) { + eurephia_log(ctx, LOG_ERROR, 0, "Could delete config configuration entry (%s)", key); + return 0; + } + sqlite_free_results(res); + return 1; +} + +eurephiaUSERLIST *eDBgetUserList(eurephiaCTX *ctx, const int sortkey) { + return NULL; +} + +eurephiaUSERINFO *eDBgetUserInfo(eurephiaCTX *ctx, eurephiaUSERINFO *srchkey) { + return NULL; +} + +int eDBaddUser(eurephiaCTX *ctx, eurephiaUSERINFO *usrinf) { + return 0; +} + +int eDBupdateUser(eurephiaCTX *ctx, const int uid, eurephiaUSERINFO *usrinf) { + return 0; +} + +int eDBdeleteUser(eurephiaCTX *ctx, const int uid, eurephiaUSERINFO *usrinf) { + return 0; +} + + +eurephiaCERTLIST *eDBgetCertificateList(eurephiaCTX *ctx, const int sortkey) { + return NULL; +} + +eurephiaCERTINFO *eDBgetCertificateInfo(eurephiaCTX *ctx, eurephiaCERTINFO *srchkey) { + return NULL; +} + +int eDBaddCertificate(eurephiaCTX *ctx, eurephiaCERTINFO *crtinf) { + return 0; +} + +int eDBdeleteCertificate(eurephiaCTX *ctx, const int uid, eurephiaCERTINFO *crtinf) { + return 0; +} + +eurephiaLOGLIST *eDBgetLastlog(eurephiaCTX *ctx, eurephiaUSERINFO *usersrch, eurephiaCERTINFO *certsrch) { + return NULL; +}; + +eurephiaLOGLIST *eDBgetAttemptsLog(eurephiaCTX *ctx, eurephiaUSERINFO *usersrch, eurephiaCERTINFO *certsrch) { + return NULL; +}; + +#endif diff --git a/database/sqlite/edb-sqlite.c b/database/sqlite/edb-sqlite.c index 60be1df..4f4e486 100644 --- a/database/sqlite/edb-sqlite.c +++ b/database/sqlite/edb-sqlite.c @@ -22,9 +22,13 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <dlfcn.h> #include <assert.h> +#define DRIVERVERSION "1.1" +#ifndef DRIVERAPIVERSION +# define DRIVERAPIVERSION 2 +#endif + #include <sqlite3.h> #include <eurephiadb_driver.h> @@ -34,16 +38,9 @@ #include <eurephiadb_session_common.h> #include <eurephiadb_session_struct.h> #include <passwd.h> -#include "sqlite.h" -#ifdef MEMWATCH -#include <memwatch.h> -#endif +#include "sqlite.h" -#define DRIVERVERSION "1.1" -#ifndef DRIVERAPIVERSION -# define DRIVERAPIVERSION 2 -#endif // Mapping table - mapping attempt types from .... to sqlite table fields typedef struct { @@ -923,358 +920,3 @@ eurephiaVALUES *eDBget_blacklisted_ip(eurephiaCTX *ctx) { return ret; } - -#if DRIVERAPIVERSION > 1 -/* - * API Version 2 functions - * - */ - -// Authenticate admin user against user database -int eDBadminAuth(eurephiaCTX *ctx, const char *req_access, const char *uname, const char *pwd) { - dbresult *res = NULL; - char *crpwd = NULL; - char *activated = NULL, *deactivated = NULL, *blid = NULL; - int uid = -1, pwok = 0, access = 0; - char interface; - - assert(ctx != NULL); - - switch( ctx->context_type ) { - case ECTX_ADMIN_CONSOLE: - interface = 'C'; - break; - case ECTX_ADMIN_WEB: - interface = 'W'; - break; - default: - eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); - return 0; - } - - if( (strlen_nullsafe(uname) < 4) || (strlen_nullsafe(pwd) < 4) ) { - eurephia_log(ctx, LOG_WARNING, 0, "User name and/or password is either null or less than 4 bytes"); - return 0; - } - - // - // Authenticate user and password - // - crpwd = passwdhash(pwd); - assert(crpwd != NULL); - res = sqlite_query(ctx, - "SELECT activated, deactivated, bl.blid, " - " (password = '%q') AS pwok, uid " - " FROM openvpn_users ou" - " LEFT JOIN openvpn_blacklist bl USING (username)" - " WHERE ou.username = '%q'", - crpwd, uname); - memset(crpwd, 0, strlen_nullsafe(crpwd)); - free_nullsafe(crpwd); - - if( res == NULL ) { - eurephia_log(ctx, LOG_FATAL, 0, "Could not authenticate user against the database"); - return 0; - } - - if( sqlite_get_numtuples(res) == 1 ) { - activated = sqlite_get_value(res, 0, 0); - deactivated = sqlite_get_value(res, 0, 1); - blid = sqlite_get_value(res, 0, 2); - pwok = atoi_nullsafe(sqlite_get_value(res, 0, 3)); - uid = atoi_nullsafe(sqlite_get_value(res, 0, 4)); - sqlite_free_results(res); - - if( blid != NULL ) { - eurephia_log(ctx, LOG_WARNING, 0, - "Your user account is BLACKLISTED. You have no access."); - sqlite_free_results(res); - return 0; - } - - if( activated == NULL ) { - eurephia_log(ctx, LOG_WARNING, 0, "Your user account is not yet activated."); - sqlite_free_results(res); - return 0; - } - - if( deactivated != NULL ) { - eurephia_log(ctx, LOG_WARNING, 0, "Your user account is deactivated."); - sqlite_free_results(res); - return 0; - } - - if( pwok != 1 ) { - eurephia_log(ctx, LOG_WARNING, 0, "Authentication failed,"); - sqlite_free_results(res); - return 0; - } - - // Check if access level is granted - // (SQLite do not handle advanced joins so well, so we need to - // do this check with an extra query) - res = sqlite_query(ctx, - "SELECT (count(*) = 1) AS access " - " FROM eurephia_adminaccess" - " WHERE uid = '%i' AND interface = '%c' AND access = '%q'", - uid, interface, req_access); - if( res == NULL ) { - eurephia_log(ctx, LOG_FATAL, 0, "Could not check access level"); - return 0; - } - access = atoi_nullsafe(sqlite_get_value(res, 0, 0)); - sqlite_free_results(res); - - if( access == 0 ) { - eurephia_log(ctx, LOG_WARNING, 0, "Your account is lacking privileges for this operation"); - return 0; - } - } else { - eurephia_log(ctx, LOG_WARNING, 0, "Authentication failed. No unique records found."); - sqlite_free_results(res); - return 0; - } - - // If we reach this place, authentication was successful. Return users uid - return uid; -} - -int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *req_access) { - dbresult *res = NULL; - int valid = 0, access = 0, expire_time = 0; - char interface; - - assert( (ctx != NULL) && (sesskey != NULL) ); - - switch( ctx->context_type ) { - case ECTX_ADMIN_CONSOLE: - interface = 'C'; - break; - case ECTX_ADMIN_WEB: - interface = 'W'; - break; - default: - eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); - return 0; - } - - // Check if the session is still valid (not expired) and that this session are allowed to access - // the requested access level. - expire_time = (60 * atoi_nullsafe(defaultValue(eGet_value(ctx->dbc->config, "eurephiadmin_autologout"), - "10") - ) - ); - res = sqlite_query(ctx, - "SELECT (strftime('%%s',CURRENT_TIMESTAMP)-strftime('%%s',last_action)) > %i AS exp," - " (access IS NOT NULL) AS access" - " FROM eurephia_adminlog" - " LEFT JOIN eurephia_adminaccess USING(uid,interface)" - " WHERE status IN (1,2)" - " AND sessionkey = '%q'" - " AND access = '%q'", - expire_time, sesskey, req_access); - - if( (res == NULL) ) { - eurephia_log(ctx, LOG_FATAL, 0, "Could not validate session"); - return 0; - } - - valid = (atoi_nullsafe(sqlite_get_value(res, 0, 0)) == 0); - access = (atoi_nullsafe(sqlite_get_value(res, 0, 1)) == 1); - sqlite_free_results(res); - - // If still valid, update last_action - if( valid && access ) { - res = sqlite_query(ctx, - "UPDATE eurephia_adminlog" - " SET last_action = CURRENT_TIMESTAMP, status = 2" - " WHERE sessionkey = '%q'", sesskey); - if( res == NULL ) { - eurephia_log(ctx, LOG_ERROR, 0, "Could not register session activity"); - } - sqlite_free_results(res); - - } else { - // If not valid, register session as auto-logged out - - res = sqlite_query(ctx, - "UPDATE eurephia_adminlog" - " SET logout = CURRENT_TIMESTAMP, status = %i" - " WHERE sessionkey = '%q'", - (access ? 4 : 5), sesskey); - if( res == NULL ) { - eurephia_log(ctx, LOG_ERROR, 0, "Could not register old session as logged out"); - } - sqlite_free_results(res); - - // Delete session variables - res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", - sesskey); - if( res == NULL ) { - eurephia_log(ctx, LOG_ERROR, 0, - "Could not delete session variables (%s))", sesskey); - return 0; - } - sqlite_free_results(res); - - if( !access ) { - eurephia_log(ctx, LOG_WARNING, 0, "Your user account is lacking privileges"); - } - - } - return (valid && access); -} - -int eDBadminRegisterLogin(eurephiaCTX *ctx, eurephiaSESSION *session) { - dbresult *res = NULL; - char interface; - int uid; - - assert((ctx != NULL) && (session != NULL)); - - switch( ctx->context_type ) { - case ECTX_ADMIN_CONSOLE: - interface = 'C'; break; - case ECTX_ADMIN_WEB: - interface = 'W'; break; - default: - eurephia_log(ctx, LOG_ERROR, 0, "Wrong eurephia context type (0x%04x)", ctx->context_type); - return 0; - } - - // Register login into eurephia_adminlog ... uid, login, interface, sessionkey - uid = atoi_nullsafe(eGet_value(session->sessvals, "uid")); - res = sqlite_query(ctx, - "INSERT INTO eurephia_adminlog " - " (uid, interface, status, login, last_action, sessionkey) " - "VALUES ('%i','%c',1,CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '%q')", - uid, interface, session->sessionkey); - if( !res ) { - eurephia_log(ctx, LOG_FATAL, 0, "Could not manage to register the session in the database"); - return 0; - } - sqlite_free_results(res); - return 1; -} - -int eDBadminLogout(eurephiaCTX *ctx, const char *sessionkey) { - dbresult *res = NULL; - - assert((ctx != NULL) && (sessionkey != NULL)); - - // Update session as logged out - res = sqlite_query(ctx, - "UPDATE eurephia_adminlog " - " SET logout = CURRENT_TIMESTAMP, status = 3" - " WHERE sessionkey = '%q'", - sessionkey); - if( !res ) { - eurephia_log(ctx, LOG_FATAL, 0, "Could not manage to register the session as logged out"); - return 0; - } - sqlite_free_results(res); - - // Delete session variables - res = sqlite_query(ctx, "DELETE FROM openvpn_sessions WHERE sessionkey = '%q'", sessionkey); - if( res == NULL ) { - eurephia_log(ctx, LOG_ERROR, 0, - "Could not delete session variables (%s))", sessionkey); - return 0; - } - sqlite_free_results(res); - - return 1; -} - -int eDBadminConfigSet(eurephiaCTX *ctx, const char *key, const char *val) { - dbresult *res = NULL; - int found = 0; - - assert((ctx != NULL) && (ctx->dbc != NULL)); - - res = sqlite_query(ctx, "SELECT count(*) FROM openvpn_config WHERE datakey = '%q'", key); - if( !res ) { - eurephia_log(ctx, LOG_ERROR, 0, "Could not query configuration table"); - return 0; - } - found = atoi_nullsafe(sqlite_get_value(res, 0, 0)); - sqlite_free_results(res); - - if( found == 0 ) { - res = sqlite_query(ctx, - "INSERT INTO openvpn_config (datakey, dataval) VALUES ('%q','%q')", - key, val); - } else { - res = sqlite_query(ctx, "UPDATE openvpn_config SET dataval = '%q' WHERE datakey = '%q'", - val, key); - } - - if( res == NULL ) { - eurephia_log(ctx, LOG_ERROR, 0, "Could not register configuration entry (%s = '%s'", key, val); - return 0; - } - sqlite_free_results(res); - eAdd_value(ctx, ctx->dbc->config, key, val); - return 1; -} - -int eDBadminConfigDelete(eurephiaCTX *ctx, const char *key) { - dbresult *res = NULL; - - assert((ctx != NULL) && (ctx->dbc != NULL)); - - res = sqlite_query(ctx, "DELETE FROM openvpn_config WHERE datakey = '%q'", key); - if( !res ) { - eurephia_log(ctx, LOG_ERROR, 0, "Could delete config configuration entry (%s)", key); - return 0; - } - sqlite_free_results(res); - return 1; -} - -eurephiaUSERLIST *eDBgetUserList(eurephiaCTX *ctx, const int sortkey) { - return NULL; -} - -eurephiaUSERINFO *eDBgetUserInfo(eurephiaCTX *ctx, eurephiaUSERINFO *srchkey) { - return NULL; -} - -int eDBaddUser(eurephiaCTX *ctx, eurephiaUSERINFO *usrinf) { - return 0; -} - -int eDBupdateUser(eurephiaCTX *ctx, const int uid, eurephiaUSERINFO *usrinf) { - return 0; -} - -int eDBdeleteUser(eurephiaCTX *ctx, const int uid, eurephiaUSERINFO *usrinf) { - return 0; -} - - -eurephiaCERTLIST *eDBgetCertificateList(eurephiaCTX *ctx, const int sortkey) { - return NULL; -} - -eurephiaCERTINFO *eDBgetCertificateInfo(eurephiaCTX *ctx, eurephiaCERTINFO *srchkey) { - return NULL; -} - -int eDBaddCertificate(eurephiaCTX *ctx, eurephiaCERTINFO *crtinf) { - return 0; -} - -int eDBdeleteCertificate(eurephiaCTX *ctx, const int uid, eurephiaCERTINFO *crtinf) { - return 0; -} - -eurephiaLOGLIST *eDBgetLastlog(eurephiaCTX *ctx, eurephiaUSERINFO *usersrch, eurephiaCERTINFO *certsrch) { - return NULL; -}; - -eurephiaLOGLIST *eDBgetAttemptsLog(eurephiaCTX *ctx, eurephiaUSERINFO *usersrch, eurephiaCERTINFO *certsrch) { - return NULL; -}; - -#endif |
