Merge pull request #27 from draios/package-tweaks

Packaging and configuration
This commit is contained in:
Henri DF
2016-04-12 21:37:12 -07:00
8 changed files with 27 additions and 42 deletions

View File

@@ -152,7 +152,8 @@ ExternalProject_Add(lpeg
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
INSTALL_COMMAND "") INSTALL_COMMAND "")
install(FILES digwatch.yaml
DESTINATION "${DIR_ETC}")
add_subdirectory(${SYSDIG_DIR}/userspace/libscap ${PROJECT_BINARY_DIR}/userspace/libscap) add_subdirectory(${SYSDIG_DIR}/userspace/libscap ${PROJECT_BINARY_DIR}/userspace/libscap)
add_subdirectory(${SYSDIG_DIR}/userspace/libsinsp ${PROJECT_BINARY_DIR}/userspace/libsinsp) add_subdirectory(${SYSDIG_DIR}/userspace/libsinsp ${PROJECT_BINARY_DIR}/userspace/libsinsp)

View File

@@ -1,7 +1,8 @@
rules_file: /etc/digwatch.conf rules_file: /etc/digwatch_rules.conf
# Priority level # Priority level
# Any rule with priority lower than this level will be discarded # Any rule with priority lower than this level will be discarded
# WARNING currently has no effect!
priority_level: warning priority_level: warning
syslog_output: syslog_output:

View File

@@ -1,3 +1,3 @@
install(FILES digwatch.conf install(FILES digwatch_rules.conf
DESTINATION "${DIR_ETC}") DESTINATION "${DIR_ETC}")

View File

@@ -18,7 +18,7 @@ void digwatch_configuration::init(string conf_filename)
string m_config_file = conf_filename; string m_config_file = conf_filename;
m_config = new yaml_configuration(m_config_file); m_config = new yaml_configuration(m_config_file);
m_rules_file = m_config->get_scalar<string>("rules_file", "/etc/digwatch.conf"); m_rules_filename = m_config->get_scalar<string>("rules_file", "/etc/digwatch_rules.conf");
m_priority_level = m_config->get_scalar<string>("priority_level", "warning"); m_priority_level = m_config->get_scalar<string>("priority_level", "warning");
output_config file_output; output_config file_output;

View File

@@ -94,7 +94,7 @@ class digwatch_configuration
public: public:
void init(std::string conf_filename); void init(std::string conf_filename);
void init(); void init();
std::string m_rules_file; std::string m_rules_filename;
std::string m_priority_level; std::string m_priority_level;
std::vector<output_config> m_outputs; std::vector<output_config> m_outputs;
private: private:

View File

@@ -46,9 +46,10 @@ static void usage()
"Usage: digwatch [options] rules_filename\n\n" "Usage: digwatch [options] rules_filename\n\n"
"Options:\n" "Options:\n"
" -h, --help Print this page\n" " -h, --help Print this page\n"
" -c Configuration file (default " DIGWATCH_SOURCE_CONF_FILE ", " DIGWATCH_INSTALL_CONF_FILE ")\n"
" -o Output type (options are 'stdout', 'syslog', default is 'stdout')\n" " -o Output type (options are 'stdout', 'syslog', default is 'stdout')\n"
" -r <readfile>, --read=<readfile>\n" " -e <events_file> Read the events from <events_file> (in .scap format) instead of tapping into live.\n"
" Read the events from <readfile>.\n" " -r <rules_file> Rules configuration file (defaults to value set in configuration file, or /etc/digwatch_rules.conf).\n"
"\n" "\n"
); );
} }
@@ -203,15 +204,15 @@ int digwatch_init(int argc, char **argv)
int long_index = 0; int long_index = 0;
string lua_main_filename; string lua_main_filename;
string output_name = "stdout"; string output_name = "stdout";
string infile; string scap_filename;
string conf_filename; string conf_filename;
string rules_filename;
string lua_dir = DIGWATCH_LUA_DIR; string lua_dir = DIGWATCH_LUA_DIR;
lua_State* ls = NULL; lua_State* ls = NULL;
static struct option long_options[] = static struct option long_options[] =
{ {
{"help", no_argument, 0, 'h' }, {"help", no_argument, 0, 'h' },
{"readfile", required_argument, 0, 'r' },
{0, 0, 0, 0} {0, 0, 0, 0}
}; };
@@ -224,7 +225,7 @@ int digwatch_init(int argc, char **argv)
// Parse the args // Parse the args
// //
while((op = getopt_long(argc, argv, while((op = getopt_long(argc, argv,
"c:ho:R:", "c:ho:e:r:",
long_options, &long_index)) != -1) long_options, &long_index)) != -1)
{ {
switch(op) switch(op)
@@ -243,8 +244,11 @@ int digwatch_init(int argc, char **argv)
} }
output_name = optarg; output_name = optarg;
break; break;
case 'e':
scap_filename = optarg;
break;
case 'r': case 'r':
infile = optarg; rules_filename = optarg;
break; break;
case '?': case '?':
result = EXIT_FAILURE; result = EXIT_FAILURE;
@@ -257,33 +261,6 @@ int digwatch_init(int argc, char **argv)
inspector->set_buffer_format(event_buffer_format); inspector->set_buffer_format(event_buffer_format);
string rules_file;
if(optind < argc)
{
#ifdef HAS_FILTERING
for(int32_t j = optind ; j < argc; j++)
{
rules_file += argv[j];
if(j < argc - 1)
{
rules_file += " ";
}
}
#else
fprintf(stderr, "filtering not compiled.\n");
result = EXIT_FAILURE;
goto exit;
#endif
}
if(rules_file.size() == 0) {
usage();
result = EXIT_FAILURE;
goto exit;
}
ifstream* conf_stream; ifstream* conf_stream;
if (conf_filename.size()) if (conf_filename.size())
@@ -329,6 +306,12 @@ int digwatch_init(int argc, char **argv)
config.init(); config.init();
} }
if (rules_filename.size())
{
config.m_rules_filename = rules_filename;
}
cout << "Using rules file " + config.m_rules_filename + "\n";
if(signal(SIGINT, signal_callback) == SIG_ERR) if(signal(SIGINT, signal_callback) == SIG_ERR)
{ {
fprintf(stderr, "An error occurred while setting SIGINT signal handler.\n"); fprintf(stderr, "An error occurred while setting SIGINT signal handler.\n");
@@ -371,7 +354,7 @@ int digwatch_init(int argc, char **argv)
digwatch_syslog::init(ls); digwatch_syslog::init(ls);
rules->load_rules(rules_file); rules->load_rules(config.m_rules_filename);
inspector->set_filter(rules->get_filter()); inspector->set_filter(rules->get_filter());
inspector->set_hostname_and_port_resolution_mode(false); inspector->set_hostname_and_port_resolution_mode(false);
@@ -381,9 +364,9 @@ int digwatch_init(int argc, char **argv)
add_output(ls, *it); add_output(ls, *it);
} }
if (infile.size()) if (scap_filename.size())
{ {
inspector->open(infile); inspector->open(scap_filename);
} }
else else
{ {

View File

@@ -45,7 +45,7 @@ void digwatch_rules::load_rules(string rules_filename)
is.open(rules_filename); is.open(rules_filename);
if(!is.is_open()) if(!is.is_open())
{ {
throw sinsp_exception("can't open file " + rules_filename); throw sinsp_exception("Can't open file " + rules_filename + ". Try setting file location in config file or use '-r' flag.");
} }
lua_getglobal(m_ls, m_lua_load_rule.c_str()); lua_getglobal(m_ls, m_lua_load_rule.c_str());