summaryrefslogtreecommitdiffstats
path: root/eurephiadm
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-21 19:28:43 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-21 19:28:43 +0200
commit69c7a7552a3019ce4f412f2e00f5293e83edb2e5 (patch)
treeea612d80cf09cfc8e40e52c42413168f4dd57232 /eurephiadm
parent8fc41296cd27af9757f571627f7fd16befc9b8aa (diff)
downloadeurephia-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.c18
-rw-r--r--eurephiadm/commands/attempts.c14
-rw-r--r--eurephiadm/commands/blacklist.c14
-rw-r--r--eurephiadm/commands/edit_config.c15
-rw-r--r--eurephiadm/commands/fwprofiles.c22
-rw-r--r--eurephiadm/commands/usercerts.c117
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);