/* Read the main elements of the configuration. */ int read_main_elements(OS_XML xml, int modules, XML_NODE node, void *d1, void *d2) { int i = 0; char *osglobal = "global"; /*Server Config*/ char *osrules = "rules"; /*Server Config*/ char *ossyscheck = "syscheck"; /*Agent Config*/ char *osrootcheck = "rootcheck"; /*Agent Config*/ char *osalerts = "alerts"; /*Server Config*/ char *osemailalerts = "email_alerts"; /*Server Config*/ char *osdbd = "database_output"; /*Server Config*/ char *oscsyslogd = "syslog_output"; /*Server Config*/ char *oscagentless = "agentless"; /*Server Config*/ char *oslocalfile = "localfile"; /*Agent Config*/ char *osremote = "remote"; /*Agent Config*/ char *osclient = "client"; /*Agent Config*/ char *oscommand = "command"; /*? Config*/ char *osreports = "reports"; /*Server Config*/ char *osactive_response = "active-response"; /*Agent Config*/ while(node[i]) { XML_NODE chld_node = NULL; chld_node = OS_GetElementsbyNode(&xml,node[i]); if(!node[i]->element) { merror(XML_ELEMNULL, ARGV0); return(OS_INVALID); } else if(!chld_node) { merror(XML_INVELEM, ARGV0, node[i]->element); return(OS_INVALID); } else if(strcmp(node[i]->element, osglobal) == 0) { if(((modules & CGLOBAL) || (modules & CMAIL)) && (Read_Global(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osemailalerts) == 0) { if((modules & CMAIL) && (Read_EmailAlerts(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osdbd) == 0) { if((modules & CDBD) && (Read_DB(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, oscsyslogd) == 0) { if((modules & CSYSLOGD) && (Read_CSyslog(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, oscagentless) == 0) { if((modules & CAGENTLESS) && (Read_CAgentless(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osrules) == 0) { if((modules & CRULES) && (Read_Rules(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, ossyscheck) == 0) { if((modules & CSYSCHECK) && (Read_Syscheck(chld_node, d1,d2) < 0)) return(OS_INVALID); if((modules & CGLOBAL) && (Read_GlobalSK(chld_node, d1, d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osrootcheck) == 0) { if((modules & CROOTCHECK) && (Read_Rootcheck(chld_node, d1,d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osalerts) == 0) { if((modules & CALERTS) && (Read_Alerts(chld_node, d1,d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, oslocalfile) == 0) { if((modules & CLOCALFILE) && (Read_Localfile(chld_node, d1,d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osremote) == 0) { if((modules & CREMOTE) && (Read_Remote(chld_node, d1,d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osclient) == 0) { if((modules & CCLIENT) && (Read_Client(chld_node, d1,d2) < 0)) return(OS_INVALID); } else if(strcmp(node[i]->element, oscommand) == 0) { if((modules & CAR)&&(ReadActiveCommands(chld_node, d1, d2)<0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osactive_response) == 0) { if((modules & CAR)&&(ReadActiveResponses(chld_node, d1, d2)<0)) return(OS_INVALID); } else if(strcmp(node[i]->element, osreports) == 0) { if((modules & CREPORTS)&&(Read_CReports(chld_node, d1, d2)<0)) return(OS_INVALID); } else { merror(XML_INVELEM, ARGV0, node[i]->element); return(OS_INVALID); } //printf("before\n"); OS_ClearNode(chld_node); //printf("after\n"); i++; } return(0); }
/* Read the main elements of the configuration */ static int read_main_elements(const OS_XML *xml, int modules, XML_NODE node, void *d1, void *d2) { int i = 0; const char *osglobal = "global"; /* Server Config */ const char *osrules = "rules"; /* Server Config */ const char *ossyscheck = "syscheck"; /* Agent Config */ const char *osrootcheck = "rootcheck"; /* Agent Config */ const char *osalerts = "alerts"; /* Server Config */ const char *osemailalerts = "email_alerts"; /* Server Config */ const char *osdbd = "database_output"; /* Server Config */ const char *oscsyslogd = "syslog_output"; /* Server Config */ const char *oscagentless = "agentless"; /* Server Config */ const char *oslocalfile = "localfile"; /* Agent Config */ const char *osremote = "remote"; /* Agent Config */ const char *osclient = "client"; /* Agent Config */ const char *oscommand = "command"; /* ? Config */ const char *osreports = "reports"; /* Server Config */ const char *osintegratord = "integration"; /* Server Config */ const char *osactive_response = "active-response"; /* Agent Config */ const char *oswmodule = "wodle"; /* Wodle - Wazuh Module */ while (node[i]) { XML_NODE chld_node = NULL; if (!node[i]->element) { merror(XML_ELEMNULL, __local_name); goto fail; } else if (!(chld_node = OS_GetElementsbyNode(xml, node[i]))) { merror(XML_INVELEM, __local_name, node[i]->element); goto fail; } else if (strcmp(node[i]->element, osglobal) == 0) { if (((modules & CGLOBAL) || (modules & CMAIL)) && (Read_Global(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osemailalerts) == 0) { if ((modules & CMAIL) && (Read_EmailAlerts(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osdbd) == 0) { if ((modules & CDBD) && (Read_DB(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, oscsyslogd) == 0) { if ((modules & CSYSLOGD) && (Read_CSyslog(chld_node, d1, d2) < 0)) { goto fail; } } else if(strcmp(node[i]->element, osintegratord) == 0) { if((modules & CINTEGRATORD) && (Read_Integrator(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, oscagentless) == 0) { if ((modules & CAGENTLESS) && (Read_CAgentless(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osrules) == 0) { if ((modules & CRULES) && (Read_Rules(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, ossyscheck) == 0) { if ((modules & CSYSCHECK) && (Read_Syscheck(chld_node, d1, d2) < 0)) { goto fail; } if ((modules & CGLOBAL) && (Read_GlobalSK(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osrootcheck) == 0) { if ((modules & CROOTCHECK) && (Read_Rootcheck(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osalerts) == 0) { if ((modules & CALERTS) && (Read_Alerts(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, oslocalfile) == 0) { if ((modules & CLOCALFILE) && (Read_Localfile(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osremote) == 0) { if ((modules & CREMOTE) && (Read_Remote(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osclient) == 0) { if ((modules & CCLIENT) && (Read_Client(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, oscommand) == 0) { if ((modules & CAR) && (ReadActiveCommands(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osactive_response) == 0) { if ((modules & CAR) && (ReadActiveResponses(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, osreports) == 0) { if ((modules & CREPORTS) && (Read_CReports(chld_node, d1, d2) < 0)) { goto fail; } } else if (strcmp(node[i]->element, oswmodule) == 0) { if ((modules & CWMODULE) && (Read_WModule(xml, node[i], d1, d2) < 0)) { goto fail; } } else { merror(XML_INVELEM, __local_name, node[i]->element); goto fail; } OS_ClearNode(chld_node); i++; continue; fail: OS_ClearNode(chld_node); return (OS_INVALID); } return (0); }