diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 19:28:43 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 19:28:43 +0200 |
commit | 69c7a7552a3019ce4f412f2e00f5293e83edb2e5 (patch) | |
tree | ea612d80cf09cfc8e40e52c42413168f4dd57232 /eurephiadm | |
parent | 8fc41296cd27af9757f571627f7fd16befc9b8aa (diff) | |
download | eurephia-69c7a7552a3019ce4f412f2e00f5293e83edb2e5.tar.gz eurephia-69c7a7552a3019ce4f412f2e00f5293e83edb2e5.tar.xz eurephia-69c7a7552a3019ce4f412f2e00f5293e83edb2e5.zip |
Rewritten most of the eurephiadm commands to use eurephiaXML_ParseResultMsg()
Commands not covered yet are users and certs commands
Diffstat (limited to 'eurephiadm')
-rw-r--r-- | eurephiadm/commands/adminaccess.c | 18 | ||||
-rw-r--r-- | eurephiadm/commands/attempts.c | 14 | ||||
-rw-r--r-- | eurephiadm/commands/blacklist.c | 14 | ||||
-rw-r--r-- | eurephiadm/commands/edit_config.c | 15 | ||||
-rw-r--r-- | eurephiadm/commands/fwprofiles.c | 22 | ||||
-rw-r--r-- | eurephiadm/commands/usercerts.c | 117 |
6 files changed, 110 insertions, 90 deletions
diff --git a/eurephiadm/commands/adminaccess.c b/eurephiadm/commands/adminaccess.c index d8082a7..6aa4e9a 100644 --- a/eurephiadm/commands/adminaccess.c +++ b/eurephiadm/commands/adminaccess.c @@ -214,12 +214,15 @@ int list_adminaccess(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf 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 ) { + } else if( xmlStrcmp(tmp_n->name, (xmlChar *) "admin_access_list") == 0 ) { xslt_print_xmldoc(stdout, cfg, list_xml, "adminaccess.xsl", NULL); rc = 0; } else { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(tmp_n)); + eurephiaRESULT *res = eurephiaXML_ParseResultMsg(ctx, list_xml); + assert( res != NULL ); + fprintf(stderr, "%s: %s\n", MODULE, res->message); rc = 1; + free_nullsafe(ctx, res); } xmlFreeDoc(list_xml); return rc; @@ -327,20 +330,21 @@ int grant_revoke(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, i fprintf(stderr, "%s: Failed to update the access level\n", MODULE); rc = 1; } else { - root_n = eurephiaXML_getRoot(ctx, res_xml, NULL, 1); - if( root_n == NULL ) { + eurephiaRESULT *res = eurephiaXML_ParseResultMsg(ctx, res_xml); + if( res == 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)); + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); rc = 1; } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(root_n)); + fprintf(stdout, "%s: %s\n", MODULE, res->message); rc = 0; } } + free_nullsafe(ctx, res); xmlFreeDoc(res_xml); } xmlFreeDoc(upd_xml); diff --git a/eurephiadm/commands/attempts.c b/eurephiadm/commands/attempts.c index dccb3e8..4d6ec5d 100644 --- a/eurephiadm/commands/attempts.c +++ b/eurephiadm/commands/attempts.c @@ -225,7 +225,8 @@ int list_attempts(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int modify_attempts(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *result_xml = NULL, *upd_xml = NULL; - xmlNode *fmap_n = NULL, *res_n = NULL, *upd_n = NULL; + xmlNode *fmap_n = NULL, *upd_n = NULL; + eurephiaRESULT *res = NULL; int i = 0, rc = 1, mode = 0; e_options modeargs[] = { @@ -287,20 +288,21 @@ int modify_attempts(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg return 1; } - res_n = eurephiaXML_getRoot(ctx, result_xml, NULL, 1); - if( res_n == NULL ) { + res = eurephiaXML_ParseResultMsg(ctx, result_xml); + if( res == NULL ) { fprintf(stderr, "%s: Error during modifying attempts register. No results returned.\n", MODULE); return 1; } - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); rc = 1; } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + fprintf(stdout, "%s: %s\n", MODULE, res->message); rc = 0; } + free_nullsafe(ctx, res); xmlFreeDoc(result_xml); return rc; diff --git a/eurephiadm/commands/blacklist.c b/eurephiadm/commands/blacklist.c index 5883ed4..5235d60 100644 --- a/eurephiadm/commands/blacklist.c +++ b/eurephiadm/commands/blacklist.c @@ -225,7 +225,8 @@ int list_blacklist(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int modify_blacklist(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *result_xml = NULL, *upd_xml = NULL; - xmlNode *fmap_n = NULL, *res_n = NULL, *upd_n = NULL; + xmlNode *fmap_n = NULL, *upd_n = NULL; + eurephiaRESULT *res = NULL; int i = 0, rc = 1, mode = 0; e_options modeargs[] = { @@ -287,20 +288,21 @@ int modify_blacklist(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf return 1; } - res_n = eurephiaXML_getRoot(ctx, result_xml, NULL, 1); - if( res_n == NULL ) { + res = eurephiaXML_ParseResultMsg(ctx, result_xml); + if( res == NULL ) { fprintf(stderr, "%s: Error updating the blacklist. No results returned.\n", MODULE); return 1; } - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); rc = 1; } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + fprintf(stdout, "%s: %s\n", MODULE, res->message); rc = 0; } + free_nullsafe(ctx, res); xmlFreeDoc(result_xml); return rc; diff --git a/eurephiadm/commands/edit_config.c b/eurephiadm/commands/edit_config.c index cb12cb1..fcfbeeb 100644 --- a/eurephiadm/commands/edit_config.c +++ b/eurephiadm/commands/edit_config.c @@ -90,7 +90,7 @@ int cmd_ShowCfg(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, in int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { int rc = 0, i = 0; xmlDoc *cfgxml = NULL, *resxml = NULL; - xmlNode *cfg_n = NULL, *res_n = NULL; + xmlNode *cfg_n = NULL; e_options editargs[] = { {"--set", "-s", 2}, @@ -144,21 +144,24 @@ int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, fprintf(stderr, "No config action performed\n"); rc = 1; } else if( resxml != NULL ) { - res_n = eurephiaXML_getRoot(ctx, resxml, NULL, 1); - if( res_n == NULL ) { + eurephiaRESULT *res = NULL; + + res = eurephiaXML_ParseResultMsg(ctx, resxml); + if( res == NULL ) { fprintf(stderr, "%s: Error updating the configuration. No results returned.\n", MODULE); return rc = 1; } - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); rc = 1; } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + fprintf(stdout, "%s: %s\n", MODULE, res->message); rc = 0; } xmlFreeDoc(resxml); + free_nullsafe(ctx, res); } else { fprintf(stderr, "Unexpected error while performing configuration changes\n"); rc = 1; diff --git a/eurephiadm/commands/fwprofiles.c b/eurephiadm/commands/fwprofiles.c index 3f79017..e864dfc 100644 --- a/eurephiadm/commands/fwprofiles.c +++ b/eurephiadm/commands/fwprofiles.c @@ -246,7 +246,8 @@ int list_profiles(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int addelete_profile(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *result_xml = NULL, *srch_xml = NULL; - xmlNode *fmap_n = NULL, *res_n = NULL, *srch_n = NULL; + xmlNode *fmap_n = NULL, *srch_n = NULL; + eurephiaRESULT *res = NULL; int i = 0, rc = 1, mode = 0; e_options addargs[] = { @@ -314,20 +315,21 @@ int addelete_profile(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf return 1; } - res_n = eurephiaXML_getRoot(ctx, result_xml, NULL, 1); - if( res_n == NULL ) { + res = eurephiaXML_ParseResultMsg(ctx, result_xml); + if( res == NULL ) { fprintf(stderr, "%s: Error registering firewall profiles. No results returned\n", MODULE); return 1; - } - - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); - rc = 1; } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); - rc = 0; + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); + rc = 1; + } else { + fprintf(stdout, "%s: %s\n", MODULE, res->message); + rc = 0; + } } + free_nullsafe(ctx, res); xmlFreeDoc(result_xml); return rc; diff --git a/eurephiadm/commands/usercerts.c b/eurephiadm/commands/usercerts.c index c7babad..60590be 100644 --- a/eurephiadm/commands/usercerts.c +++ b/eurephiadm/commands/usercerts.c @@ -232,7 +232,8 @@ int list_usercerts(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, */ int add_del_usercert(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *usercert_xml = NULL, *resxml = NULL; - xmlNode *usercert_n = NULL, *res_n = NULL; + xmlNode *usercert_n = NULL; + eurephiaRESULT *res = NULL; int i = 0, rc = 0, actmode = 0; char *certid = NULL, *uid = NULL, *uicid = NULL, *actmode_str = NULL, *accessprofile = NULL; @@ -269,20 +270,20 @@ int add_del_usercert(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf case 'i': if( atoi_nullsafe(optargs[0]) < 1 ) { fprintf(stderr, "%s: User ID must be a positive number (>0)\n", MODULE); - rc = 1; - goto exit; + rc = 1; + goto exit; } - xmlNewChild(usercert_n, NULL, (xmlChar *) "uid", (xmlChar *) optargs[0]); + xmlNewChild(usercert_n, NULL, (xmlChar *) "uid", (xmlChar *) optargs[0]); uid = optargs[0]; break; case 'c': if( atoi_nullsafe(optargs[0]) < 1 ) { fprintf(stderr,"%s: Certificate ID must be a positive number (>0)\n",MODULE); - rc = 1; - goto exit; + rc = 1; + goto exit; } - xmlNewChild(usercert_n, NULL, (xmlChar *) "certid", (xmlChar *) optargs[0]); + xmlNewChild(usercert_n, NULL, (xmlChar *) "certid", (xmlChar *) optargs[0]); certid = optargs[0]; break; @@ -290,73 +291,79 @@ int add_del_usercert(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cf case 'a': if( atoi_nullsafe(optargs[0]) < 1 ) { fprintf(stderr, "%s: Firewall profile ID must be a positive number (>0)\n", - MODULE); - rc = 1; - goto exit; + MODULE); + rc = 1; + goto exit; } - xmlNewChild(usercert_n, NULL, (xmlChar *) "accessprofile", (xmlChar *) optargs[0]); + xmlNewChild(usercert_n, NULL, (xmlChar *) "accessprofile", (xmlChar *) optargs[0]); accessprofile = optargs[0]; break; #endif case 'n': if( actmode != 'D' ) { fprintf(stderr, "%s: --uicid cannot be used with --add\n", MODULE); - rc = 1; - goto exit; + rc = 1; + goto exit; } if( atoi_nullsafe(optargs[0]) < 1 ) { fprintf(stderr, "%s: uicid must be a positive number (>0)\n", - MODULE); - rc = 1; - goto exit; + MODULE); + rc = 1; + goto exit; } - xmlNewChild(usercert_n, NULL, (xmlChar *) "uicid", (xmlChar *) optargs[0]); + xmlNewChild(usercert_n, NULL, (xmlChar *) "uicid", (xmlChar *) optargs[0]); uicid = optargs[0]; break; case 'h': display_usercerts_help(actmode); - rc = 0; - goto exit; + rc = 0; + goto exit; default: - rc = 1; - goto exit; + rc = 1; + goto exit; } } if( (actmode == 'A') && ((certid == NULL) || (uid == NULL)) ) { fprintf(stderr, "%s: You must provide both a user ID (--uid) and " - "a certificate ID (--certid)\n", MODULE); - rc = 1; - goto exit; + "a certificate ID (--certid)\n", MODULE); + rc = 1; + goto exit; } if( (actmode == 'D') && (certid == NULL) && (uid == NULL) - && (uicid == NULL) && (accessprofile == NULL)) { + && (uicid == NULL) && (accessprofile == NULL)) { fprintf(stderr, "%s: You must provide at least --uid, --certid, " - "--uicid or --accessprofile\n", MODULE); - rc = 1; - goto exit; + "--uicid or --accessprofile\n", MODULE); + rc = 1; + goto exit; } - resxml = eDBadminUserCertsLink(ctx, usercert_xml); + resxml = eDBadminUserCertsLink(ctx, usercert_xml); if( resxml == NULL ) { fprintf(stderr, "%s: Failed to update user <-> certificate link\n", MODULE); rc = 1; - goto exit; - } + goto exit; + } - res_n = eurephiaXML_getRoot(ctx, resxml, NULL, 1); - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); - rc = 1; + res = eurephiaXML_ParseResultMsg(ctx, resxml); + if( res == NULL ) { + fprintf(stderr, "%s: Failed to update user <-> certificate link. No result available.", + MODULE); } else { - fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); - rc = 0; + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); + rc = 1; + } else { + fprintf(stdout, "%s: %s\n", MODULE, res->message); + rc = 0; + } } - xmlFreeDoc(resxml); + free_nullsafe(ctx, res); + xmlFreeDoc(resxml); exit: xmlFreeDoc(usercert_xml); @@ -403,11 +410,11 @@ int set_fwprofile(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, case 'a': if( atoi_nullsafe(optargs[0]) < 1 ) { fprintf(stderr, "%s: Firewall profile ID must be a positive number (>0)\n", - MODULE); - rc = 1; - goto exit; + MODULE); + rc = 1; + goto exit; } - xmlNewChild(fmap_n, NULL, (xmlChar *) "accessprofile", (xmlChar *) optargs[0]); + xmlNewChild(fmap_n, NULL, (xmlChar *) "accessprofile", (xmlChar *) optargs[0]); accprf = 1; // Access profile is set break; @@ -418,46 +425,46 @@ int set_fwprofile(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, uicid = atoi_nullsafe(optargs[0]); if( uicid < 1 ) { fprintf(stderr, "%s: uicid must be a positive number (>0)\n", - MODULE); - rc = 1; - goto exit; + MODULE); + rc = 1; + goto exit; } xmlNewProp(usercert_n, (xmlChar *) "uicid", (xmlChar *) optargs[0]); break; case 'h': display_usercerts_help('S'); - rc = 0; - goto exit; + rc = 0; + goto exit; default: - rc = 1; - goto exit; + rc = 1; + goto exit; } } if( (uicid < 1) || (accprf != 1) ) { fprintf(stderr, "%s: You must provide --uicid and --accessprofile\n", MODULE); - rc = 1; - goto exit; + rc = 1; + goto exit; } res_xml = eDBadminUserCertsLink(ctx, usercert_xml); if( res_xml == NULL ) { fprintf(stderr, "%s: Failed to update firewall access profile for user-cert link\n", MODULE); rc = 1; - goto exit; - } + goto exit; + } res_n = eurephiaXML_getRoot(ctx, res_xml, NULL, 1); - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { + if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); rc = 1; } else { fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); rc = 0; } - xmlFreeDoc(res_xml); + xmlFreeDoc(res_xml); exit: xmlFreeDoc(usercert_xml); |