summaryrefslogtreecommitdiffstats
path: root/database/sqlite
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-11 14:16:56 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-11 14:16:56 +0100
commit5875ca215d75d2a5e2c3ca147b19a5197bcb2dbf (patch)
treeb7e33d4dc30acfa170840d4da9acfeb3b8d73b1c /database/sqlite
parentc132838440c3f602283bf92146433800ee1bf9b2 (diff)
downloadeurephia-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.c22
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);