summaryrefslogtreecommitdiffstats
path: root/eurephiadm
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-21 00:29:51 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-21 00:29:51 +0200
commit854f3bb476a3cb7cf370c0f7690d9a376d219609 (patch)
tree2d5a213e317f887d9503fe9d75077673b1b6242d /eurephiadm
parentfb2e02fdcbc30ecf05601c127eb31239b3419f85 (diff)
downloadeurephia-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.c45
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;