diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-11 14:16:56 +0100 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-11 14:16:56 +0100 |
| commit | 5875ca215d75d2a5e2c3ca147b19a5197bcb2dbf (patch) | |
| tree | b7e33d4dc30acfa170840d4da9acfeb3b8d73b1c /database/sqlite | |
| parent | c132838440c3f602283bf92146433800ee1bf9b2 (diff) | |
| download | eurephia-5875ca215d75d2a5e2c3ca147b19a5197bcb2dbf.tar.gz eurephia-5875ca215d75d2a5e2c3ca147b19a5197bcb2dbf.tar.xz eurephia-5875ca215d75d2a5e2c3ca147b19a5197bcb2dbf.zip | |
Added logincount and setting user account flags
Diffstat (limited to 'database/sqlite')
| -rw-r--r-- | database/sqlite/administration.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c index b7d09ef..6eb1205 100644 --- a/database/sqlite/administration.c +++ b/database/sqlite/administration.c @@ -415,12 +415,19 @@ int eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, eurephiaUSERINFO *user) { dbresult *uinf = NULL, *certinf = NULL; eDBfieldMap *uinfo_map = NULL; - uinfo_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, user); + uinfo_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, "u", user); // Query the database, find the user defined in the user map uinf = sqlite_query_mapped(ctx, SQL_SELECT, - "SELECT username, activated, deactivated, last_accessed, uid" - " FROM openvpn_users", NULL, uinfo_map); + "SELECT u.username, u.activated, u.deactivated, u.last_accessed, u.uid," + " (bl.username IS NOT NULL), opensess, logincount" + " FROM openvpn_users u" + " LEFT JOIN openvpn_blacklist bl USING(username)" + " LEFT JOIN (SELECT uid, count(*) AS logincount FROM openvpn_lastlog) lc" + " ON (lc.uid = u.uid)" + " LEFT JOIN (SELECT uid, count(*)>0 AS opensess FROM openvpn_lastlog) os" + " ON (os.uid = u.uid) ", + NULL, uinfo_map); if( uinf == NULL ) { eurephia_log(ctx, LOG_ERROR, 0, "Error querying the database for a user"); @@ -437,6 +444,10 @@ int eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, eurephiaUSERINFO *user) { free_nullsafe(user->username); user->username = strdup_nullsafe(sqlite_get_value(uinf, 0, 0)); user->uid = atoi_nullsafe(sqlite_get_value(uinf, 0, 4)); + user->account_flags = ((sqlite_get_value(uinf, 0, 3) == NULL) ? ACCFLAG_NEVERUSED : 0); + user->account_flags|= ((sqlite_get_value(uinf, 0, 2) != NULL) ? ACCFLAG_DEACTIVATED : 0); + user->account_flags|= ((atoi(sqlite_get_value(uinf, 0, 5)) == 1) ? ACCFLAG_BLACKLISTED : 0); + user->account_flags|= ((atoi_nullsafe(sqlite_get_value(uinf, 0, 6))==1) ? ACCFLAG_BLACKLISTED : 0); if( (getInfo & USERINFO_user) == USERINFO_user ) { free_nullsafe(user->password); @@ -447,6 +458,7 @@ int eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, eurephiaUSERINFO *user) { user->activated = strdup_nullsafe(sqlite_get_value(uinf, 0, 1)); user->deactivated = strdup_nullsafe(sqlite_get_value(uinf, 0, 2)); user->last_accessed = strdup_nullsafe(sqlite_get_value(uinf, 0, 3)); + user->logincount = atoi_nullsafe(sqlite_get_value(uinf, 0, 7)); sqlite_free_results(uinf); } @@ -519,9 +531,9 @@ int eDBadminUpdateUser(eurephiaCTX *ctx, const int uid, eurephiaUSERINFO *usrinf assert( (ctx != NULL) && (uid == usrinf->uid) ); srch = eAdminPopulateUSERINFO(uid, NULL, NULL, NULL, NULL, NULL); - srch_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, srch); + srch_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, NULL, srch); - data_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, usrinf); + data_map = eDBmkMapping_USERINFO(ctx, tbl_sqlite_users, NULL, usrinf); // Query the database, find the user defined in the user map uinf = sqlite_query_mapped(ctx, SQL_UPDATE, "UPDATE openvpn_users", data_map, srch_map); |
