diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 00:29:51 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 00:29:51 +0200 |
commit | 854f3bb476a3cb7cf370c0f7690d9a376d219609 (patch) | |
tree | 2d5a213e317f887d9503fe9d75077673b1b6242d /eurephiadm | |
parent | fb2e02fdcbc30ecf05601c127eb31239b3419f85 (diff) | |
download | eurephia-854f3bb476a3cb7cf370c0f7690d9a376d219609.tar.gz eurephia-854f3bb476a3cb7cf370c0f7690d9a376d219609.tar.xz eurephia-854f3bb476a3cb7cf370c0f7690d9a376d219609.zip |
Modified eurephiadm and eurephia_init programs to use the new eDBadminAccessLevel() function
Diffstat (limited to 'eurephiadm')
-rw-r--r-- | eurephiadm/commands/adminaccess.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/eurephiadm/commands/adminaccess.c b/eurephiadm/commands/adminaccess.c index 05a1ee3..d8082a7 100644 --- a/eurephiadm/commands/adminaccess.c +++ b/eurephiadm/commands/adminaccess.c @@ -143,7 +143,7 @@ int help_AdminAccess2(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *c int list_adminaccess(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *list_xml = NULL, *srch_xml = NULL; xmlNode *srch_n = NULL, *tmp_n = NULL; - int i = 0; + int i = 0, rc = -1; char *uid = NULL, *username = NULL, *intf = NULL, *acl = NULL; e_options listargs[] = { @@ -185,6 +185,7 @@ int list_adminaccess(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf // Build up search XML eurephiaXML_CreateDoc(ctx, 1, "admin_access", &srch_xml, &srch_n); assert( (srch_xml != NULL) && (srch_n != NULL) ); + xmlNewProp(srch_n, (xmlChar *) "mode", (xmlChar *) "list"); tmp_n = xmlNewChild(srch_n, NULL, (xmlChar *) "fieldMapping", NULL); xmlNewProp(tmp_n, (xmlChar *) "table", (xmlChar *) "eurephia_adminaccess"); @@ -202,16 +203,26 @@ int list_adminaccess(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf xmlNewChild(tmp_n, NULL, (xmlChar *) "accesslevel", (xmlChar *) acl); } - list_xml = eDBadminGetAdminAccess(ctx, srch_xml); + list_xml = eDBadminAccessLevel(ctx, srch_xml); xmlFreeDoc(srch_xml); if( list_xml == NULL ) { fprintf(stderr, "%s: Error retrieving user access list\n", MODULE); return 1; } - xslt_print_xmldoc(stdout, cfg, list_xml, "adminaccess.xsl", NULL); + tmp_n = eurephiaXML_getRoot(ctx, list_xml, NULL, 1); + if( tmp_n == NULL ) { + fprintf(stderr, "%s: Error retrieving user access list results\n", MODULE); + rc = 1; + } else if( xmlStrcmp(tmp_n->name, (xmlChar *) "Error") != 0 ) { + xslt_print_xmldoc(stdout, cfg, list_xml, "adminaccess.xsl", NULL); + rc = 0; + } else { + fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(tmp_n)); + rc = 1; + } xmlFreeDoc(list_xml); - return 0; + return rc; } @@ -227,7 +238,7 @@ int list_adminaccess(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf * @return returns 0 on success, otherwise 1. */ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { - xmlDoc *upd_xml = NULL; + xmlDoc *upd_xml = NULL, *res_xml = NULL; xmlNode *root_n = NULL, *fmap_n = NULL; char actmode = '-', *actmode_str = NULL; int i = 0, rc = 0; @@ -243,7 +254,7 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i assert( (ctx != NULL) && (ctx->dbc != NULL) && (ctx->dbc->config != NULL)); - eurephiaXML_CreateDoc(ctx, 1, "edit_admin_access", &upd_xml, &root_n); + eurephiaXML_CreateDoc(ctx, 1, "admin_access", &upd_xml, &root_n); fmap_n = xmlNewChild(root_n, NULL, (xmlChar *) "fieldMapping", NULL); xmlNewProp(fmap_n, (xmlChar *) "table", (xmlChar *) "eurephia_adminaccess"); @@ -307,16 +318,30 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i } if( f_intf == 0 ) { + // Default interface value, if not set. xmlNewChild(fmap_n, NULL, (xmlChar *) "interface", (xmlChar *) "C"); } - if( eDBadminEditAdminAccess(ctx, upd_xml) < 1 ) { + res_xml = eDBadminAccessLevel(ctx, upd_xml); + if( res_xml == NULL ) { fprintf(stderr, "%s: Failed to update the access level\n", MODULE); rc = 1; } else { - printf("%s: Access level %s\n", MODULE, actmode_str); - printf("\n"); - rc = 0; + root_n = eurephiaXML_getRoot(ctx, res_xml, NULL, 1); + if( root_n == NULL ) { + fprintf(stderr, "%s: Failed to update the access level. No results returned\n", + MODULE); + rc = 1; + } else { + if( xmlStrcmp(root_n->name, (xmlChar *) "Error") == 0 ) { + fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(root_n)); + rc = 1; + } else { + fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(root_n)); + rc = 0; + } + } + xmlFreeDoc(res_xml); } xmlFreeDoc(upd_xml); return rc; |