From d8356c5ebd510f9b863573da2ad5616d75014391 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 11 Jul 2012 12:47:34 +0200 Subject: [PATCH] Windows build and other misc fixes. --- Makefile.am | 24 ++++++++++++------------ configure.in | 23 +++++++++++++++-------- src/Makefile.am | 2 -- src/detect.c | 7 ++++++- src/util-classification-config.c | 4 ++++ src/util-threshold-config.c | 4 ++++ 6 files changed, 41 insertions(+), 23 deletions(-) diff --git a/Makefile.am b/Makefile.am index f13a59a57d..e093881741 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,24 +16,24 @@ install-data-am: install-full: install install-conf install-rules install-conf: - install -d $(e_sysconfdir) - @test -e $(e_sysconfdir)/suricata.yaml || install -m 600 $(top_srcdir)/suricata.yaml $(e_sysconfdir) - @test -e $(e_sysconfdir)/classification.config || install -m 600 $(top_srcdir)/classification.config $(e_sysconfdir) - @test -e $(e_sysconfdir)/reference.config || install -m 600 $(top_srcdir)/reference.config $(e_sysconfdir) - install -d $(localstatedir)/log/suricata/files + install -d "$(e_sysconfdir)" + @test -e "$(e_sysconfdir)/suricata.yaml" || install -m 600 "$(top_srcdir)/suricata.yaml" "$(e_sysconfdir)" + @test -e "$(e_sysconfdir)/classification.config" || install -m 600 "$(top_srcdir)/classification.config" "$(e_sysconfdir)" + @test -e "$(e_sysconfdir)/reference.config" || install -m 600 "$(top_srcdir)/reference.config" "$(e_sysconfdir)" + install -d "$(e_logfilesdir)" install-rules: - install -d $(e_sysconfdir)/rules - wget -qO - http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz | tar -x -z -C $(e_sysconfdir) -f - - @test -e $(e_sysconfdir)/rules/decoder-events.rules || install -m 600 $(top_srcdir)/rules/decoder-events.rules $(e_sysconfdir)/rules/ - @test -e $(e_sysconfdir)/rules/stream-events.rules || install -m 600 $(top_srcdir)/rules/stream-events.rules $(e_sysconfdir)/rules/ - @test -e $(e_sysconfdir)/rules/smtp-events.rules || install -m 600 $(top_srcdir)/rules/smtp-events.rules $(e_sysconfdir)/rules/ - @test -e $(e_sysconfdir)/rules/http-events.rules || install -m 600 $(top_srcdir)/rules/http-events.rules $(e_sysconfdir)/rules/ + install -d "$(e_sysconfrulesdir)" + wget -qO - http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz | tar -x -z -C "$(e_sysconfdir)" -f - + @test -e "$(e_sysconfrulesdir)decoder-events.rules" || install -m 600 "$(top_srcdir)/rules/decoder-events.rules" "$(e_sysconfrulesdir)" + @test -e "$(e_sysconfrulesdir)stream-events.rules" || install -m 600 "$(top_srcdir)/rules/stream-events.rules" "$(e_sysconfrulesdir)" + @test -e "$(e_sysconfrulesdir)smtp-events.rules" || install -m 600 "$(top_srcdir)/rules/smtp-events.rules" "$(e_sysconfrulesdir)" + @test -e "$(e_sysconfrulesdir)http-events.rules" || install -m 600 "$(top_srcdir)/rules/http-events.rules" "$(e_sysconfrulesdir)" @echo "" @echo "You can now start suricata by running as root something like '$(bindir)/suricata -c $(e_sysconfdir)/suricata.yaml -i eth0'." @echo "" @echo "If a library like libhtp.so is not found, you can run suricata with:" - @echo "'LD_LIBRARY_PATH=$(prefix)/lib $(bindir)/suricata -c $(e_sysconfdir)/suricata.yaml -i eth0'." + @echo "'LD_LIBRARY_PATH="$(prefix)/lib" "$(bindir)/suricata" -c "$(e_sysconfdir)/suricata.yaml" -i eth0'." @echo "" @echo "While rules are installed now, it's highly recommended to use a rule manager for maintaining rules." @echo "The two most common are Oinkmaster and Pulledpork. For a guide see:" diff --git a/configure.in b/configure.in index 02f3ce6e5f..3700df6adf 100644 --- a/configure.in +++ b/configure.in @@ -1241,25 +1241,32 @@ eval "$2=[$]$2$3" # suricata log dir if test "$WINDOWS_PATH" = "yes"; then - systemtype="`systeminfo | grep \"System Type\"`" - case $systemtype in + systemtype="`systeminfo | grep \"based PC\"`" + case "$systemtype" in *x64*) - e_logdir="C:\\Program Files (x86)\\Suricata\\log\\" - e_sysconfdir="C:\\Program Files (x86)\\Suricata\\" - e_magic_file="C:\\Program Files (x86)\\Suricata\\magic.mgc" + e_winbase="C:\\\\Program Files (x86)\\\\Suricata" ;; *) - e_logdir="C:\\Program Files\\Suricata\\log\\" - e_sysconfdir="C:\\Program Files\\Suricata\\" - e_magic_file="C:\\Program Files\\Suricata\\magic.mgc" + e_winbase="C:\\\\Program Files\\\\Suricata" ;; esac + + e_sysconfdir="$e_winbase\\\\" + e_sysconfrulesdir="$e_winbase\\\\rules\\\\" + e_magic_file="$e_winbase\\\\magic.mgc" + e_logdir="$e_winbase\\\\log" + e_logfilesdir="$e_logdir\\\\files" else EXPAND_VARIABLE(localstatedir, e_logdir, "/log/suricata/") + EXPAND_VARIABLE(localstatedir, e_logfilesdir, "/log/suricata/files") EXPAND_VARIABLE(sysconfdir, e_sysconfdir, "/suricata/") + EXPAND_VARIABLE(sysconfdir, e_sysconfrulesdir, "/suricata/rules") fi AC_SUBST(e_logdir) +AC_SUBST(e_logfilesdir) AC_SUBST(e_sysconfdir) +AC_SUBST(e_sysconfrulesdir) +AC_DEFINE_UNQUOTED([CONFIG_DIR],["$e_sysconfdir"],[Our CONFIG_DIR]) AC_SUBST(e_magic_file) AC_OUTPUT(Makefile src/Makefile qa/Makefile qa/coccinelle/Makefile rules/Makefile doc/Makefile suricata.yaml) diff --git a/src/Makefile.am b/src/Makefile.am index 1b8401dec9..5f5e34534a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,8 +6,6 @@ noinst_HEADERS = action-globals.h \ util-validate.h bin_PROGRAMS = suricata -AM_CPPFLAGS = -DCONFIG_DIR=\"$(e_sysconfdir)\" - suricata_SOURCES = suricata.c suricata.h \ runmodes.c runmodes.h \ runmode-pcap.c runmode-pcap.h \ diff --git a/src/detect.c b/src/detect.c index 9cb5526200..920f3b0252 100644 --- a/src/detect.c +++ b/src/detect.c @@ -243,8 +243,13 @@ char *DetectLoadCompleteSigPath(char *sig_file) if (path == NULL) return NULL; strlcpy(path, defaultpath, path_len); - if (path[strlen(path) - 1] != '/') +#if defined OS_WIN32 || defined __CYGWIN__ + if (path[strlen(path) - 1] != '\\') + strlcat(path, "\\\\", path_len); +#else + if (path[strlen(path) - 1] != '/') strlcat(path, "/", path_len); +#endif strlcat(path, sig_file, path_len); } else { path = SCStrdup(sig_file); diff --git a/src/util-classification-config.c b/src/util-classification-config.c index 6300844c4b..d270bafcbf 100644 --- a/src/util-classification-config.c +++ b/src/util-classification-config.c @@ -41,7 +41,11 @@ #define DETECT_CLASSCONFIG_REGEX "^\\s*config\\s*classification\\s*:\\s*([a-zA-Z][a-zA-Z0-9-_]*)\\s*,\\s*(.+)\\s*,\\s*(\\d+)\\s*$" /* Default path for the classification.config file */ +#if defined OS_WIN32 || defined __CYGWIN__ +#define SC_CLASS_CONF_DEF_CONF_FILEPATH CONFIG_DIR "\\\\classification.config" +#else #define SC_CLASS_CONF_DEF_CONF_FILEPATH CONFIG_DIR "/classification.config" +#endif /* Holds a pointer to the default path for the classification.config file */ static const char *default_file_path = SC_CLASS_CONF_DEF_CONF_FILEPATH; diff --git a/src/util-threshold-config.c b/src/util-threshold-config.c index f061921414..9a5a941ae7 100644 --- a/src/util-threshold-config.c +++ b/src/util-threshold-config.c @@ -75,7 +75,11 @@ typedef enum ThresholdRuleType { #define DETECT_SUPPRESS_REGEX "^,\\s*track\\s*(by_dst|by_src)\\s*,\\s*ip\\s*([\\d.:/]+)*\\s*$" /* Default path for the threshold.config file */ +#if defined OS_WIN32 || defined __CYGWIN__ +#define THRESHOLD_CONF_DEF_CONF_FILEPATH CONFIG_DIR "\\\\threshold.config" +#else #define THRESHOLD_CONF_DEF_CONF_FILEPATH CONFIG_DIR "/threshold.config" +#endif static pcre *regex_base = NULL; static pcre_extra *regex_base_study = NULL; -- 2.47.2