summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/eurephia_admin_common.c69
-rw-r--r--common/eurephia_admin_common.h92
-rw-r--r--common/eurephia_admin_struct.h7
-rw-r--r--database/eurephiadb_mapping.c41
-rw-r--r--database/eurephiadb_mapping.h1
-rw-r--r--database/sqlite/CMakeLists.txt2
-rw-r--r--database/sqlite/administration.c3
-rw-r--r--database/sqlite/fieldmapping.h15
8 files changed, 54 insertions, 176 deletions
diff --git a/common/eurephia_admin_common.c b/common/eurephia_admin_common.c
index 8b62779..8a51ca4 100644
--- a/common/eurephia_admin_common.c
+++ b/common/eurephia_admin_common.c
@@ -27,76 +27,9 @@
#include <passwd.h>
#define EUREPHIA_ADMIN_COMMON_C
+#include "eurephia_admin_struct.h"
#include "eurephia_admin_common.h"
-eFieldMap *eAdminGetTableMap(int table) {
- eFieldMap *map;
-
- switch( table ) {
- case TABLE_USERS:
- map = eSortkeys_user;
- break;
-
- case TABLE_CERTS:
- map = eSortkeys_certificates;
- break;
-
- case TABLE_LASTLOG:
- map = eSortkeys_lastlog;
-
- case TABLE_ATTEMPTS:
- map = eSortkeys_attempts;
-
- case TABLE_BLACKLIST:
- map = eSortkeys_blacklist;
-
- default:
- map = NULL;
- }
- return map;
-}
-
-
-char *eAdminConvertSortKeys(eFieldMap *tfmap, const char *skeys_str) {
- eFieldMap *sk_map = NULL;
- int i, j;
- char *cp = NULL, *tok = NULL, *delims = ",";
- static char sortkeys[8194];
-
- if( skeys_str == NULL ) {
- return NULL;
- }
-
- // Make sure we have table field map
- assert( tfmap != NULL );
-
- // Get the correct table mapping for user input
- sk_map = eAdminGetTableMap(tfmap[0].tableid);
- assert( sk_map != NULL );
-
- // Split up the skeys_str (sort keys string) and build up a map
- cp = strdup_nullsafe(skeys_str);
- tok = strtok(cp, delims);
- memset(&sortkeys, 0, 8194);
- while( tok != NULL ) {
- for( i = 0; sk_map[i].fieldname != NULL; i++ ) {
- // If we find the the field in the unified mapping table ...
- if( strcmp(tok, sk_map[i].fieldname) == 0 ) {
- // look up the proper field name for the current database
- for( j = 0; tfmap[j].fieldname != 0; j++ ) {
- if( (sk_map[i].sortkeyid & tfmap[j].sortkeyid) == sk_map[i].sortkeyid ) {
- strncat(sortkeys, tfmap[j].fieldname, (8192-strlen(sortkeys)));
- strcat(sortkeys,",");
- }
- }
- }
- }
- tok = strtok(NULL, delims);
- }
- free_nullsafe(cp);
- sortkeys[strlen(sortkeys)-1] = '\0';
- return sortkeys;
-}
eurephiaUSERINFO *eAdminPopulateUSERINFO(int uid, const char *uname, const char *pwd,
const char *activated, const char *deactivd, const char *lastacc)
diff --git a/common/eurephia_admin_common.h b/common/eurephia_admin_common.h
index aa6a989..58bbd96 100644
--- a/common/eurephia_admin_common.h
+++ b/common/eurephia_admin_common.h
@@ -21,98 +21,6 @@
#ifndef EUREPHIA_ADMIN_COMMON_H_
# define EUREPHIA_ADMIN_COMMON_H_
-#include <eurephia_admin_struct.h>
-
-#define TABLE_USERS 0x01
-#define TABLE_CERTS 0x02
-#define TABLE_LASTLOG 0x03
-#define TABLE_ATTEMPTS 0x04
-#define TABLE_BLACKLIST 0x05
-
-#define SORTKEY_NONE 0x00000
-#define SORTKEY_RECID 0x00001 // Primary keys
-#define SORTKEY_UID 0x00002
-#define SORTKEY_CERTID 0x00004
-#define SORTKEY_UNAME 0x00008
-#define SORTKEY_ACTIVATED 0x00010
-#define SORTKEY_DEACTIVATED 0x00020
-#define SORTKEY_LASTACCESS 0x00040
-
-#define SORTKEY_CERTDEPTH 0x00080
-#define SORTKEY_CNAME 0x00100
-#define SORTKEY_EMAIL 0x00200
-#define SORTKEY_ORG 0x00400
-#define SORTKEY_REGISTERED 0x00800
-
-#define SORTKEY_REMOTEIP 0x01000
-#define SORTKEY_VPNIP 0x02000
-#define SORTKEY_ATTEMPTS 0x04000
-#define SORTKEY_LASTATTEMPT 0x08000
-
-#define SORTKEY_SESSTATUS 0x10000
-#define SORTKEY_LOGIN 0x20000
-#define SORTKEY_LOGOUT 0x40000
-
-#ifdef EUREPHIA_ADMIN_COMMON_C
-eFieldMap eSortkeys_user[] = {
- {TABLE_USERS, SORTKEY_RECID, "recid"},
- {TABLE_USERS, SORTKEY_RECID, "uid"},
- {TABLE_USERS, SORTKEY_UNAME, "username"},
- {TABLE_USERS, SORTKEY_ACTIVATED, "activated"},
- {TABLE_USERS, SORTKEY_DEACTIVATED, "deactivated"},
- {TABLE_USERS, SORTKEY_LASTACCESS, "lastaccess"},
- {TABLE_USERS, SORTKEY_NONE, NULL}
-};
-
-eFieldMap eSortkeys_certificates[] = {
- {TABLE_CERTS, SORTKEY_RECID, "recid"},
- {TABLE_CERTS, SORTKEY_RECID, "certid"},
- {TABLE_CERTS, SORTKEY_CERTDEPTH, "depth"},
- {TABLE_CERTS, SORTKEY_CNAME, "name"},
- {TABLE_CERTS, SORTKEY_ORG, "org"},
- {TABLE_CERTS, SORTKEY_EMAIL, "email"},
- {TABLE_CERTS, SORTKEY_REGISTERED, "registered"},
- {TABLE_CERTS, SORTKEY_NONE, NULL}
-};
-
-eFieldMap eSortkeys_lastlog[] = {
- {TABLE_LASTLOG, SORTKEY_UID, "uid"},
- {TABLE_LASTLOG, SORTKEY_CERTID, "certid"},
- {TABLE_LASTLOG, SORTKEY_REMOTEIP, "ip"},
- {TABLE_LASTLOG, SORTKEY_VPNIP, "vpnip"},
- {TABLE_LASTLOG, SORTKEY_SESSTATUS, "status"},
- {TABLE_LASTLOG, SORTKEY_LOGIN, "login"},
- {TABLE_LASTLOG, SORTKEY_LOGOUT, "logout"},
- {TABLE_LASTLOG, SORTKEY_RECID, "recid"},
- {TABLE_LASTLOG, SORTKEY_NONE, NULL}
-};
-
-eFieldMap eSortkeys_attempts[] = {
- {TABLE_ATTEMPTS, SORTKEY_UNAME, "username"},
- {TABLE_ATTEMPTS, SORTKEY_REMOTEIP, "ip"},
- {TABLE_ATTEMPTS, SORTKEY_ATTEMPTS, "attempts"},
- {TABLE_ATTEMPTS, SORTKEY_REGISTERED, "registered"},
- {TABLE_ATTEMPTS, SORTKEY_LASTATTEMPT, "lastattempt"},
- {TABLE_ATTEMPTS, SORTKEY_RECID, "recid"},
- {TABLE_ATTEMPTS, SORTKEY_NONE, NULL}
-};
-
-eFieldMap eSortkeys_blacklist[] = {
- {TABLE_BLACKLIST, SORTKEY_UNAME, "username"},
- {TABLE_BLACKLIST, SORTKEY_REMOTEIP, "ip"},
- {TABLE_BLACKLIST, SORTKEY_REGISTERED, "registered"},
- {TABLE_BLACKLIST, SORTKEY_LASTACCESS, "lastattempt"},
- {TABLE_BLACKLIST, SORTKEY_LASTACCESS, "lastaccessed"},
- {TABLE_BLACKLIST, SORTKEY_RECID, "recid"},
- {TABLE_BLACKLIST, SORTKEY_NONE, NULL}
-};
-
-#endif // #ifdef EUREPHIA_ADMIN_COMMON_C
-
-
-eFieldMap *eAdminGetTableMap(int table);
-char *eAdminConvertSortKeys(eFieldMap *, const char *);
-
eurephiaUSERINFO *eAdminPopulateUSERINFO(int uid, const char *uname, const char *pwd,
const char *activated, const char *deactivd, const char *lastacc);
diff --git a/common/eurephia_admin_struct.h b/common/eurephia_admin_struct.h
index 9f962bf..5a13a1f 100644
--- a/common/eurephia_admin_struct.h
+++ b/common/eurephia_admin_struct.h
@@ -71,11 +71,4 @@ typedef struct {
int maxlen_header;
} eurephiaLOGLIST;
-
-typedef struct {
- int tableid;
- long sortkeyid;
- char *fieldname;
-} eFieldMap;
-
#endif
diff --git a/database/eurephiadb_mapping.c b/database/eurephiadb_mapping.c
index f7bd979..a12a863 100644
--- a/database/eurephiadb_mapping.c
+++ b/database/eurephiadb_mapping.c
@@ -64,3 +64,44 @@ char *eDBgetTableField(eDBfieldMap *dbmap, int field) {
}
return NULL;
}
+
+char *eDBmkSortKeyString(eDBfieldMap *tfmap, const char *skeys_str) {
+ eDBfieldMap *sk_map = NULL;
+ int i, j;
+ char *cp = NULL, *tok = NULL, *delims = ",";
+ static char sortkeys[8194];
+
+ if( skeys_str == NULL ) {
+ return NULL;
+ }
+
+ // Make sure we have table field map
+ assert( tfmap != NULL );
+
+ // Get the correct table mapping for user input
+ sk_map = eDBgetTableFieldMapping(tfmap[0].tableid);
+ assert( sk_map != NULL );
+
+ // Split up the skeys_str (sort keys string) and build up a map
+ cp = strdup_nullsafe(skeys_str);
+ tok = strtok(cp, delims);
+ memset(&sortkeys, 0, 8194);
+ while( tok != NULL ) {
+ for( i = 0; sk_map[i].field_id != FIELD_NONE; i++ ) {
+ // If we find the the field in the unified mapping table ...
+ if( strcmp(tok, sk_map[i].field_name) == 0 ) {
+ // look up the proper field name for the current database
+ for( j = 0; tfmap[j].field_name != 0; j++ ) {
+ if( sk_map[i].field_id == tfmap[j].field_id ) {
+ strncat(sortkeys, tfmap[j].field_name, (8192-strlen(sortkeys)-2));
+ strcat(sortkeys,",");
+ }
+ }
+ }
+ }
+ tok = strtok(NULL, delims);
+ }
+ free_nullsafe(cp);
+ sortkeys[strlen(sortkeys)-1] = '\0';
+ return sortkeys;
+}
diff --git a/database/eurephiadb_mapping.h b/database/eurephiadb_mapping.h
index 1f04e6a..768510b 100644
--- a/database/eurephiadb_mapping.h
+++ b/database/eurephiadb_mapping.h
@@ -121,5 +121,6 @@ static eDBfieldMap eTblMap_blacklist[] = {
#endif // #ifdef EUREPHIADB_MAPPING_C
char *eDBgetTableField(eDBfieldMap *dbmap, int field);
+char *eDBmkSortKeyString(eDBfieldMap *tfmap, const char *skeys_str);
#endif // !EUREPHIADB_MAPPING_H
diff --git a/database/sqlite/CMakeLists.txt b/database/sqlite/CMakeLists.txt
index f1d5fef..2a4771b 100644
--- a/database/sqlite/CMakeLists.txt
+++ b/database/sqlite/CMakeLists.txt
@@ -8,10 +8,10 @@ SET(edb_sqlite_SRC
administration.c
)
SET(COMMON
+ ../eurephiadb_mapping.c
../../common/eurephia_log.c
../../common/eurephiadb_session_common.c
../../common/eurephia_values.c
- ../../common/eurephia_admin_common.c
../../common/passwd.c
../../common/sha512.c
)
diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c
index 037f52d..8e2c513 100644
--- a/database/sqlite/administration.c
+++ b/database/sqlite/administration.c
@@ -16,6 +16,7 @@
#include <eurephia_log.h>
#include <eurephia_values.h>
#include <eurephiadb_session_struct.h>
+#include <eurephiadb_mapping.h>
#include <passwd.h>
#include "sqlite.h"
@@ -339,7 +340,7 @@ eurephiaUSERLIST *eDBadminGetUserList(eurephiaCTX *ctx, const char *sortkeys) {
assert((ctx != NULL) && (ctx->dbc != 0));
// Convert the input sort keys to the proper database field names
- dbsort = eAdminConvertSortKeys(tbl_sqlite_user, sortkeys);
+ dbsort = eDBmkSortKeyString(tbl_sqlite_users, sortkeys);
// Query database for all users
res = sqlite_query(ctx,
diff --git a/database/sqlite/fieldmapping.h b/database/sqlite/fieldmapping.h
index 227b50b..3037f3d 100644
--- a/database/sqlite/fieldmapping.h
+++ b/database/sqlite/fieldmapping.h
@@ -22,13 +22,14 @@
#ifndef FIELDMAPPING_H_
# define FIELDMAPPING_H_
-eFieldMap tbl_sqlite_user[] = {
- {TABLE_USERS, SORTKEY_RECID, "uid"},
- {TABLE_USERS, SORTKEY_UNAME, "username"},
- {TABLE_USERS, SORTKEY_ACTIVATED, "activated"},
- {TABLE_USERS, SORTKEY_DEACTIVATED, "deactivated"},
- {TABLE_USERS, SORTKEY_LASTACCESS, "last_accessed"},
- {TABLE_USERS, SORTKEY_NONE, NULL}
+static eDBfieldMap tbl_sqlite_users[] = {
+ {TABLE_USERS, FIELD_RECID, "uid", NULL, NULL},
+ {TABLE_USERS, FIELD_UNAME, "username", NULL, NULL},
+ {TABLE_USERS, FIELD_PASSWD, "password", NULL, NULL},
+ {TABLE_USERS, FIELD_ACTIVATED, "activated", NULL, NULL},
+ {TABLE_USERS, FIELD_DEACTIVATED, "deactivated", NULL, NULL},
+ {TABLE_USERS, FIELD_LASTACCESS, "last_accessed", NULL, NULL},
+ {TABLE_USERS, FIELD_NONE, NULL, NULL, NULL}
};
#endif /* !FIELDMAPPING_H_ */