void ReadPromises(enum cfagenttype ag,char *agents) { char *v,rettype; void *retval; char vbuff[CF_BUFSIZE]; if (ag == cf_keygen) { return; } DeleteAllPromiseIds(); // in case we are re-reading, delete old handles /* Parse the files*/ Cf3ParseFiles(); /* Now import some web variables that are set in cf-know/control for the report options */ strncpy(STYLESHEET,"/cf_enterprise.css",CF_BUFSIZE-1); strncpy(WEBDRIVER,"",CF_MAXVARSIZE-1); /* Make the compilation reports*/ OpenReports(agents); SetAuditVersion(); if (GetVariable("control_common","version",&retval,&rettype) != cf_notype) { v = (char *)retval; } else { v = "not specified"; } snprintf(vbuff,CF_BUFSIZE-1,"Expanded promises for %s",agents); CfHtmlHeader(FREPORT_HTML,vbuff,STYLESHEET,WEBDRIVER,BANNER); fprintf(FREPORT_TXT,"Expanded promise list for %s component\n\n",agents); ShowContext(); fprintf(FREPORT_HTML,"<div id=\"reporttext\">\n"); fprintf(FREPORT_HTML,"%s",CFH[cfx_promise][cfb]); VerifyPromises(cf_common); fprintf(FREPORT_HTML,"%s",CFH[cfx_promise][cfe]); if (ag != cf_common) { ShowScopedVariables(); } fprintf(FREPORT_HTML,"</div>\n"); CfHtmlFooter(FREPORT_HTML,FOOTER); CloseReports(agents); }
void ShowPromisesInReport(Bundle *bundles, Body *bodies) { Rval retval; char *v; char vbuff[CF_BUFSIZE]; Bundle *bp; Rlist *rp; SubType *sp; Promise *pp; Body *bdp; if (GetVariable("control_common", "version", &retval) != cf_notype) { v = (char *) retval.item; } else { v = "not specified"; } ReportBanner("Promises"); snprintf(vbuff, CF_BUFSIZE - 1, "Cfengine Site Policy Summary (version %s)", v); CfHtmlHeader(FREPORT_HTML, vbuff, STYLESHEET, WEBDRIVER, BANNER); fprintf(FREPORT_HTML, "<p>"); for (bp = bundles; bp != NULL; bp = bp->next) { fprintf(FREPORT_HTML, "%s Bundle %s%s%s %s%s%s\n", CFH[cfx_bundle][cfb], CFH[cfx_blocktype][cfb], bp->type, CFH[cfx_blocktype][cfe], CFH[cfx_blockid][cfb], bp->name, CFH[cfx_blockid][cfe]); fprintf(FREPORT_HTML, " %s ARGS:%s\n\n", CFH[cfx_line][cfb], CFH[cfx_line][cfe]); fprintf(FREPORT_TXT, "Bundle %s in the context of %s\n\n", bp->name, bp->type); fprintf(FREPORT_TXT, " ARGS:\n\n"); for (rp = bp->args; rp != NULL; rp = rp->next) { fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfb]); fprintf(FREPORT_HTML, " scalar arg %s%s%s\n", CFH[cfx_args][cfb], (char *) rp->item, CFH[cfx_args][cfe]); fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfe]); fprintf(FREPORT_TXT, " scalar arg %s\n\n", (char *) rp->item); } fprintf(FREPORT_TXT, " {\n"); fprintf(FREPORT_HTML, "%s", CFH[cfx_promise][cfb]); for (sp = bp->subtypes; sp != NULL; sp = sp->next) { fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfb]); fprintf(FREPORT_HTML, "%s", CFH[cfx_line][cfe]); fprintf(FREPORT_TXT, " TYPE: %s\n\n", sp->name); for (pp = sp->promiselist; pp != NULL; pp = pp->next) { ShowPromise(pp, 6); } } fprintf(FREPORT_TXT, " }\n"); fprintf(FREPORT_TXT, "\n\n"); fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfe]); fprintf(FREPORT_HTML, "%s\n", CFH[cfx_line][cfe]); fprintf(FREPORT_HTML, "%s\n", CFH[cfx_bundle][cfe]); } /* Now summarize the remaining bodies */ fprintf(FREPORT_HTML, "<h1>All Bodies</h1>"); fprintf(FREPORT_TXT, "\n\nAll Bodies\n\n"); for (bdp = bodies; bdp != NULL; bdp = bdp->next) { fprintf(FREPORT_HTML, "%s%s\n", CFH[cfx_line][cfb], CFH[cfx_block][cfb]); fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfb]); ShowBody(bdp, 3); fprintf(FREPORT_TXT, "\n"); fprintf(FREPORT_HTML, "%s\n", CFH[cfx_promise][cfe]); fprintf(FREPORT_HTML, "%s%s \n ", CFH[cfx_block][cfe], CFH[cfx_line][cfe]); fprintf(FREPORT_HTML, "</p>"); } CfHtmlFooter(FREPORT_HTML, FOOTER); }