From 48aaf4ab4d5b726da5f53a55cf2b95cfe07fb149 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Oct 04 2011 17:35:53 +0000 Subject: - some cleanups to test with newer DogTag --- diff --git a/src/submit-d.c b/src/submit-d.c index 235b836..4d1fd60 100644 --- a/src/submit-d.c +++ b/src/submit-d.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Red Hat, Inc. + * Copyright (C) 2010,2011 Red Hat, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -77,10 +77,10 @@ cm_submit_d_xml_value(void *parent, const char *xml, const char *path) } if (node != NULL) { content = (const char *) node->content; - content = content + strspn(content, "\r\n"); + content = content + strspn(content, "\n"); i = strlen(content) - 1; while ((i > 0) && - (strchr("\r\n", content[i]) != NULL)) { + (strchr("\n", content[i]) != NULL)) { i--; } ret = talloc_strndup(parent, content, i + 1); @@ -92,293 +92,140 @@ cm_submit_d_xml_value(void *parent, const char *xml, const char *path) return ret; } -static char * -cm_submit_d_html_value(void *parent, const char *html, const char *value) -{ - /* Try to be scrape out the part we care about. */ - char *work, *p, *q, *var, *v, *ret; - int i, esc; - unsigned long acc; - work = talloc_strdup(parent, html); - /* Convert end-of-lines to newline. */ - for (i = 0; work[i] != '\0'; i++) { - if (work[i] == '\r') { - work[i] = '\n'; - } - } - for (i = 0; work[i] != '\0'; i++) { - if ((work[i] == '\n') && (work[i + 1] == '\n')) { - memmove(work + i, work + i + 1, strlen(work + i)); - i--; - } - } - /* Find the start and end of what might be the hard-coded part of the - * output. */ - p = strstr(work, "\n"); - if (q != NULL) { - var = talloc_asprintf(work, "\n%s = \"", value); - if (var != NULL) { - v = strstr(p, var); - if (v == NULL) { - var = talloc_asprintf(work, "\n%s=\"", - value); - v = strstr(p, var); - } - if (v != NULL) { - v += strlen(var); - /* Pull out the rest of the line. */ - ret = talloc_strndup(work, - v, - strcspn(v, - "\r\n")); - } - } - p = strstr(q, "\n"; - char *status, *error, *id; - printf("XML\n"); - status = cm_submit_d_req_status(NULL, reqxml); - if (status != NULL) { - printf("\t\"%s\"\n", status); - } - error = cm_submit_d_req_error(NULL, reqxml); - if (error != NULL) { - printf("\t\"%s\"\n", error); - } - id = cm_submit_d_req_requestid(NULL, reqxml); - if (id != NULL) { - printf("\t\"%s\" -> =%ld=\n", id, atol(id)); - } - printf("HTML\n"); - status = cm_submit_d_check_status(NULL, checkhtml); - if (status != NULL) { - printf("\t\"%s\"\n", status); - } - id = cm_submit_d_check_requestid(NULL, checkhtml); - if (id != NULL) { - printf("\t\"%s\" -> =%ld=\n", id, atol(id)); - } - id = cm_submit_d_check_serial(NULL, checkhtml); - if (id != NULL) { - printf("\t\"%s\" -> =%ld=\n", id, atol(id)); - } - id = cm_submit_d_html_value(NULL, checkhtml, "shemp"); - if (id != NULL) { - printf("\t\"%s\"\n", id); - } -} + * checkRequest: + HTTP/1.1 200 OK + Server: Apache-Coyote/1.1 + Content-Type: text/xml + Content-Length: 3011 + Date: Tue, 04 Oct 2011 08:29:56 GMT + + +
+ + complete + + + MIIH9gYJKoZIhvcNAQcCoIIH5zCCB+MCAQExADAPBgkqhkiG9w0BBwGgAgQAoIIHxzCCA78wggKnoAMCAQICAQEwDQYJKoZIhvcNAQELBQAwTTErMCkGA1UEChMiQ2F0cyBEb21haW4gSUkgLSBFbGVjdHJpYyBCb29nYWxvbzEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDYwOTE0MDIzMFoXDTEzMDUyOTE0MDIzMFowTTErMCkGA1UEChMiQ2F0cyBEb21haW4gSUkgLSBFbGVjdHJpYyBCb29nYWxvbzEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv7VNIj01c9eN5AjOfe8vGXFtdCdHNtO4SJPsvECURY5ZrDKvpJ0gir3bqi0PIgPwKAAJ2Bfc7aSpQRp4Nu5qov+CSmlvD6ao2kcYtSsm1r/aDRNnQ94dAagSyntVDpjYplk6LyVz/FCZY2UdVpY/qG97j2jHt1VDQsHEDBlgPhlgmFXW8if/FU9cjseOHe7ZgaT0Lz3rA/z/OgT7XjgYK/Mw1AjDqkcujFpIGW70H2L+cy5OeZ3NNkLh/VK/MR3yj4Zdo6DGJyQXpltJw7NdCE7D+QwR1B4YhugT0CRN030uxyAF4eiluz0zaM+2Arna9+8aEFmvEEx54qcea0+17wIDAQABo4GpMIGmMB8GA1UdIwQYMBaAFL3RrWFtetGh+N7ZM6jdH7bLJMGBMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBS90a1hbXrRofje2TOo3R+2yyTBgTBDBggrBgEFBQcBAQQ3MDUwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9jYXRzLmJvcy5yZWRoYXQuY29tOjkxODAvY2Evb2NzcDANBgkqhkiG9w0BAQsFAAOCAQEAPCpTh4EwdS8sf74KIid/erIxQkN6QJjNhnqoQz5abDbkDp6kINGW4ymfV+zMsZMFPsjPsSUMNWKLRYllZs6KrRb4RrYYUU3w7VVqizxgSjeMVLlCtuUieZ9WwMPIecNVLJSWTEkzv1uY9GBeYVXigYlxdSTGV1it0CUqfsYmRe/oRBjmwHHPVRbVmlvunPsSwRDl6V9MidNS2QFQEdhb5vbwQrysbEhW0dYp0bbCiLzj3cu7UCke/Mp44ji3vpP3kLRcQhxeX6C+KLqqK4FCypvzxpgBOdFbE8QvKAl5mSglCfPfgFSSPJIJiQEj9B1teOWaJ+XBw0QF99GwTHwCczCCBAAwggLooAMCAQICASswDQYJKoZIhvcNAQEFBQAwTTErMCkGA1UEChMiQ2F0cyBEb21haW4gSUkgLSBFbGVjdHJpYyBCb29nYWxvbzEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMTAwNDA4MjIyMloXDTEzMDUyOTE0MDIzMFowgZ4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTERMA8GA1UEBxMIV2VzdGZvcmQxEDAOBgNVBAoTB1JlZCBIYXQxFDASBgNVBAsTC0VuZ2luZWVyaW5nMR0wGwYDVQQDExRibGFkZS5ib3MucmVkaGF0LmNvbTEoMCYGCSqGSIb3DQEJARYZcm9vdEBibGFkZS5ib3MucmVkaGF0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOUrwRu55Ael5znbrKzHWrfUPA3R81a1KcFzSk9mP++aA/LbzbhLa97FlpN6BwaKCjiNmfgUbmBEIXMmatz5YWLnyALpBLhHX2TVkC4DU2qd6jSbGE6Xb79lk729vnO2uHb361g07vEe4EM8bolLYzkEh9gOW9PQm1rAevHDeQlsOMN5gYxT1YnwCBKMNbK4YxqxUTSlZ7L9TBjWYo9psBC9c2bLoMA4qTLOUVuMe9j4OR5sq6jPzIs18XSA2CVHUNPo6TqhRImTNqXGLAT+z514Ww5ltKgTwjB0wkUyR6gfex1vflaMa6cu1pAIKCAqw/uBnqxLhd6qHzL0U4MgTocCAwEAAaOBmDCBlTAfBgNVHSMEGDAWgBS90a1hbXrRofje2TOo3R+2yyTBgTBDBggrBgEFBQcBAQQ3MDUwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9jYXRzLmJvcy5yZWRoYXQuY29tOjkxODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQA16rkS9z7zvjC89Otj2Lmip/zez8ZGfobVOYMJPgE9OCCR6fM2Ygi/veMn7GCo2+lMpo+Up2OHQOeXmJMkIDN1Rjn4VuA9kIioupHCQ26vW51ghqRA2p+Mg1Ry49KIDUmUQMwcjvSdvagaNkHuoYQgIKU8FAm8bc9j3t00VgqidRiELK8ZPETpNJd6UiIr3XJCxFQVGcl/WNYeXhLjqMeXytsqRNuILOKYN3bCfC5ASKHL5UbIkRN3PDWN9tN0PloxPdvQu3hVQtPoYpKzt49mnmxaDaJYvhjetYEgekptRXxxfxGuw0829IC1T91GjnRhBTkbdn1rObpriFU3ojk5MQA= + + + 1317716551 + + + 53 + + + ca + + + 1317716542 + +
+ + +
+ */ static void usage(void) { printf("usage: submit-d -C CA-EE-URL [-s csrfile OPTIONS] " - "[-c requestid] [-r serial]\n"); + "[-c requestid]\n"); printf("Options:\n" + "\t-p profile_name\n" "\t-n requestor_name\n" "\t-e requestor_email\n" "\t-t requestor_telephone\n"); @@ -388,52 +235,32 @@ int main(int argc, char **argv) { void *ctx; - int c, i, j, submit, check, retrieve, id, try_xml; + int c, i, j, submit, check, id, verbose; const char *method, *ca, *cgi, *file, *profile, *result; const char *name, *email, *tele; char *params, *uri, **var, **vars, *p, *request; - char *submit_h_vars[] = {"header.status", - "header.error", - "header.requestId", - NULL}; - char *submit_x_vars[] = {"/xmlResponse/status", - "/xmlResponse/error", - "/xmlResponse/requestId", + char *submit_x_vars[] = {"/xml/output/set/requestList/list/requestList/set/requestId", + "/xml/output/set/errorCode", + "/xml/output/set/errorReason", NULL}; - char *check_h_vars[] = {"header.status", - "header.requestId", - "record.serialNumber", - "fixed.unexpectedError", - NULL}; char *check_x_vars[] = {"/xml/header/status", "/xml/header/requestId", - /* Doesn't give us a serial number!?!?! */ "/xml/fixed/unexpectedError", + "/xml/header/pkcs7ChainBase64", NULL}; - char *display_h_vars[] = {"header.certChainBase64", - "header.certPrettyPrint", - NULL}; - char *display_x_vars[] = {"/xml/header/certChainBase64", - "/xml/header/certPrettyPrint", - NULL}; struct cm_submit_h_context *hctx; submit = 0; - try_xml = 0; check = 0; - retrieve = 0; id = 0; + verbose = 0; ca = NULL; file = NULL; name = NULL; email = NULL; tele = NULL; profile = "caServerCert"; - while ((c = getopt(argc, argv, "PC:n:e:t:p:s:c:r:x")) != -1) { + while ((c = getopt(argc, argv, "C:n:e:t:p:s:c:r:x")) != -1) { switch (c) { - case 'P': - parse_exercise(); - return 0; - break; case 'C': ca = optarg; break; @@ -451,19 +278,14 @@ main(int argc, char **argv) break; case 's': submit++; - try_xml++; file = optarg; break; case 'c': check++; id = strtol(optarg, NULL, 0); break; - case 'r': - retrieve++; - id = strtol(optarg, NULL, 0); - break; - case 'x': - try_xml++; + case 'v': + verbose++; break; default: usage(); @@ -497,13 +319,9 @@ main(int argc, char **argv) "profileId=%s&" "cert_request_type=pkcs10&" "cert_request=%s&" - "sessionID=208&" - "auth_hostname=cats.bos.redhat.com&" - "auth_port=9180" - "%s", + "xml=true", profile, - request, - try_xml ? "&xmlOutput=true" : ""); + request); if (name != NULL) { params = talloc_asprintf(ctx, "%s&requestor_name=%s", params, name); @@ -516,21 +334,13 @@ main(int argc, char **argv) params = talloc_asprintf(ctx, "%s&requestor_phone=%s", params, tele); } - vars = try_xml ? submit_x_vars : submit_h_vars; + vars = submit_x_vars; } else if (check) { method = "GET"; cgi = "checkRequest"; - params = talloc_asprintf(ctx, "requestId=%d%s", id, - try_xml ? "&xml=true" : ""); - vars = try_xml ? check_x_vars : check_h_vars; - } else - if (retrieve) { - method = "GET"; - cgi = "displayBySerial"; - params = talloc_asprintf(ctx, "serialNumber=%d%s", id, - try_xml ? "&xml=true" : ""); - vars = try_xml ? display_x_vars : display_h_vars; + params = talloc_asprintf(ctx, "requestId=%d&importCert=true&xml=true", id); + vars = check_x_vars; } else { printf("Error: no specific request given.\n"); usage(); @@ -559,14 +369,28 @@ main(int argc, char **argv) return 1; } result = cm_submit_h_results(hctx); - for (var = vars; (var != NULL) && (*var != NULL); var++) { - if (try_xml) { - p = cm_submit_d_xml_value(hctx, result, *var); - } else { - p = cm_submit_d_html_value(hctx, result, *var); + if (submit) { + printf("%s:%s\n", + cm_submit_d_req_error(hctx, result), + cm_submit_d_req_status(hctx, result)); + p = cm_submit_d_req_requestid(hctx, result); + if (p != NULL) { + printf("%s\n", p); } + } + if (check) { + printf("%s\n", cm_submit_d_check_status(hctx, result)); + p = cm_submit_d_check_bundle(hctx, result); if (p != NULL) { - printf("%s = \"%s\"\n", *var, p); + printf("%s\n", p); + } + } + if (verbose) { + for (var = vars; (var != NULL) && (*var != NULL); var++) { + p = cm_submit_d_xml_value(hctx, result, *var); + if (p != NULL) { + printf("%s = \"%s\"\n", *var, p); + } } } return 0;