Пример #1
0
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);
}
Пример #2
0
Policy *GenericAgentLoadPolicy(EvalContext *ctx, GenericAgentConfig *config)
{
    config->policy_last_read_attempt = time(NULL);

    StringSet *parsed_files = StringSetNew();
    StringSet *failed_files = StringSetNew();

    Policy *policy = LoadPolicyFile(ctx, config, config->input_file, parsed_files, failed_files);

    if (StringSetSize(failed_files) > 0)
    {
        Log(LOG_LEVEL_ERR, "There are syntax errors in policy files");
        exit(EXIT_FAILURE);
    }

    StringSetDestroy(parsed_files);
    StringSetDestroy(failed_files);

    {
        Seq *errors = SeqNew(100, PolicyErrorDestroy);

        if (PolicyCheckPartial(policy, errors))
        {
            if (!config->bundlesequence && (PolicyIsRunnable(policy) || config->check_runnable))
            {
                Log(LOG_LEVEL_VERBOSE, "Running full policy integrity checks");
                PolicyCheckRunnable(ctx, policy, errors, config->ignore_missing_bundles);
            }
        }

        if (SeqLength(errors) > 0)
        {
            Writer *writer = FileWriter(stderr);
            for (size_t i = 0; i < errors->length; i++)
            {
                PolicyErrorWrite(writer, errors->data[i]);
            }
            WriterClose(writer);
            exit(EXIT_FAILURE); // TODO: do not exit
        }

        SeqDestroy(errors);
    }

    if (LogGetGlobalLevel() >= LOG_LEVEL_VERBOSE)
    {
        ShowContext(ctx);
    }

    if (policy)
    {
        VerifyPromises(ctx, policy, config);
    }

    return policy;
}