summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-19 12:42:19 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-19 12:42:19 +0100
commit7a61aea700649c48c087d89425acca65a6f9b839 (patch)
tree46d91f8cead669c09f4b1c9fb78bb2a0fd193e89
parenta755481dbe8946a168988ed00561e153fecc8636 (diff)
downloadeurephia-7a61aea700649c48c087d89425acca65a6f9b839.tar.gz
eurephia-7a61aea700649c48c087d89425acca65a6f9b839.tar.xz
eurephia-7a61aea700649c48c087d89425acca65a6f9b839.zip
sqlite - admin: Added fetching login attempt for user. Fixed a memory leak and removed XML dump for debug
-rw-r--r--database/sqlite/administration.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c
index 389f446..079e49c 100644
--- a/database/sqlite/administration.c
+++ b/database/sqlite/administration.c
@@ -426,6 +426,7 @@ xmlDoc *eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, xmlDoc *srch) {
dbresult *uinf = NULL, *qres = NULL;
eDBfieldMap *uinfo_map = NULL;
int flag = 0, uid = 0;
+ char *username = NULL;
xmlDoc *doc = NULL;
xmlNode *root_n = NULL, *info_n = NULL, *fieldmap = NULL;
@@ -465,10 +466,11 @@ xmlDoc *eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, xmlDoc *srch) {
case 1:
uid = atoi_nullsafe(sqlite_get_value(uinf, 0, 4));
+ username = sqlite_get_value(uinf, 0, 0);
eurephiaXML_CreateDoc(ctx, 1, "user", &doc, &root_n);
- sqlite_xml_value(root_n, XML_ATTR, "uid", uinf, 0, 4);
sqlite_xml_value(root_n, XML_NODE, "username", uinf, 0, 0);
+ sqlite_xml_value(root_n, XML_ATTR, "uid", uinf, 0, 4);
if( (getInfo & USERINFO_user) == USERINFO_user ) {
info_n = xmlNewChild(root_n, NULL, (xmlChar *) "flags", NULL);
@@ -500,8 +502,6 @@ xmlDoc *eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, xmlDoc *srch) {
sqlite_xml_value(root_n, XML_NODE, "deactivated", uinf, 0, 2);
info_n = sqlite_xml_value(root_n, XML_NODE, "last_accessed", uinf, 0, 3);
sqlite_xml_value(info_n, XML_ATTR, "logincount", uinf, 0, 7);
-
- sqlite_free_results(uinf);
}
if( (getInfo & USERINFO_certs) == USERINFO_certs ) {
@@ -601,9 +601,35 @@ xmlDoc *eDBadminGetUserInfo(eurephiaCTX *ctx, int getInfo, xmlDoc *srch) {
sqlite_xml_value(tmp2, XML_ATTR, "accessprofile", qres, i, 17);
sqlite_xml_value(tmp2, XML_ATTR, "fwdestination", qres, i, 19);
}
- xmlSaveFormatFileEnc("-", doc, "UTF-8", 1);
+ sqlite_free_results(qres);
}
+ if( (getInfo & USERINFO_attempts) == USERINFO_attempts ) {
+ xmlNode *atmpt = NULL;
+
+ qres = sqlite_query(ctx,
+ "SELECT attempts, registered, last_attempt, atpid"
+ " FROM openvpn_attempts "
+ " WHERE username = '%q'", username);
+
+ if( (qres == NULL) || (sqlite_get_numtuples(qres) > 1) ) {
+ eurephia_log(ctx, LOG_ERROR, 0, "Quering for login attempts failed");
+ sqlite_free_results(qres);
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+
+ atmpt = xmlNewChild(root_n, NULL, (xmlChar *) "attempts", NULL);
+ if( sqlite_get_numtuples(qres) == 1 ) {
+ sqlite_xml_value(atmpt, XML_ATTR, "atpid", qres, 0, 3);
+ sqlite_xml_value(atmpt, XML_ATTR, "attempts", qres, 0, 0);
+ sqlite_xml_value(atmpt, XML_NODE, "first_attempt", qres, 0, 1);
+ sqlite_xml_value(atmpt, XML_NODE, "last_attempt", qres, 0, 2);
+ }
+ sqlite_free_results(qres);
+ }
+
+ sqlite_free_results(uinf);
return doc;
default:
sqlite_free_results(uinf);