javilanz 6d10cb1cc4 2011-02-03 Javier Lanz <javier.lanz@artica.es>
* pandora_agent.c: Solved some leaks
	* pandora_agent.conf: Added some example modules
	* pandora_config.c: Added parse_config, fill module & fill setup functions
	* pandora_config.h: Fixed function prototypes
	* pandora_util.c: Added xml writer & trim functions
	* pandora_util.h: Added trim functions prototype 
	* pandora_type.h: Added pointer for the link list


git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3799 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2011-02-03 17:25:38 +00:00

113 lines
2.9 KiB
C
Executable File

// Pandora FMS Embedded Agent
// (c) Artica Soluciones Tecnológicas S.L 2011
// (c) Sancho Lerena <slerena@artica.es>
// 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
// the Free Software Foundation; either version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <errno.h>
#include <dirent.h>
#include <unistd.h>
#include "pandora_type.h"
#include "pandora_util.h"
#include "pandora_config.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
int
main(int argc, char **argv) {
DIR *pDIR=NULL;
struct dirent *pDirEnt=NULL;
struct pandora_setup *pandorasetup=NULL;
struct pandora_module *list=NULL;
char *config_file=NULL;
char *fullpath=NULL;
char *buffer=NULL;
long int id_audit;
char c;
char *xml_filename=NULL;
printf ("Pandora FMS Embedded Agent v%s (c) 2011 http://pandorafms.org\n", VERSION);
config_file = NULL;
list=NULL;
if (argc < 2 || argc > 3){
printf ("Syntax is:\n\n pandora_agent <path_to_pandora_agent.conf> \n\n");
exit (0);
}
char *cmd = *argv++;
config_file = *argv++;
if (config_file == NULL) {
printf ("Cannot load configuration file. Exitting \n");
return -1;
}
pandorasetup = malloc(sizeof(struct pandora_setup));
pandorasetup->logfile=NULL;
pandorasetup->agent_name=NULL;
pandorasetup->server_ip=NULL;
pandorasetup->temporal=NULL;
pandorasetup->sancho_test=NULL;
// Initialize to default parameters
init_parameters (pandorasetup);
// Load config file using first parameter
parse_config (pandorasetup, &list, config_file);
asprintf (&buffer,"Starting %s v%s", PACKAGE_NAME, VERSION);
pandora_log (3, buffer, pandorasetup);
pandora_free (buffer);
asprintf (&buffer,"Agent name: %s", pandorasetup->agent_name);
pandora_log (3, buffer, pandorasetup);
pandora_free (buffer);
asprintf (&buffer,"Server IP: %s", pandorasetup->server_ip);
pandora_log (3, buffer, pandorasetup);
pandora_free (buffer);
asprintf (&buffer,"Temporal: %s", pandorasetup->temporal);
pandora_log (3, buffer, pandorasetup);
pandora_free (buffer);
while (1){ // Main loop
xml_filename = pandora_write_xml_disk (pandorasetup, list);
if (pandorasetup->debug == 1){
printf ("Debug mode activated. Exiting now! \n");
exit (0);
}
tentacle_copy (xml_filename, pandorasetup);
// Embedded agents Doesnt implement the "buffered" sending,
// if it cannot send, just drop the file
unlink (xml_filename);
pandora_free(xml_filename);
sleep(pandorasetup->interval);
}
return (0);
}