#include "rootcheck/rootcheck.h"
-int dump_syscheck_entry(config *syscheck, char *entry, int vals, int reg, char *restrictfile);
+int dump_syscheck_entry(syscheck_config *syscheck, char *entry, int vals, int reg, char *restrictfile);
+#ifdef USE_MAGIC
+#include <magic.h>
+magic_t magic_cookie = 0;
+
+void init_magic(magic_t* cookie_ptr)
+{
+ if(!cookie_ptr || *cookie_ptr) return;
+
+ *cookie_ptr = magic_open(MAGIC_MIME_TYPE);
+
+ if(!*cookie_ptr)
+ {
+ const char* err = magic_error(*cookie_ptr);
+ merror("%s: ERROR: Can't init libmagic: %s", ARGV0, err ? err : "unknown");
+ }
+ else if(magic_load(*cookie_ptr, NULL) < 0)
+ {
+ const char* err = magic_error(*cookie_ptr);
+ merror("%s: ERROR: Can't load magic file: %s", ARGV0, err ? err : "unknown");
+ magic_close(*cookie_ptr);
+ *cookie_ptr = 0;
+ }
+}
+#endif
/* void read_internal()
* Reads syscheck internal options.
*/
-void read_internal()
+void read_internal(int debug_level)
{
syscheck.tsleep = getDefine_Int("syscheck","sleep",0,64);
syscheck.sleep_after = getDefine_Int("syscheck","sleep_after",1,9999);
+ /* Check current debug_level
+ * Command line setting takes precedence
+ */
+ if (debug_level == 0)
+ {
+ /* Getting debug level */
+ debug_level = getDefine_Int("syscheck", "debug", 0, 2);
+ while(debug_level != 0)
+ {
+ nowDebug();
+ debug_level--;
+ }
+ }
+
return;
}
*/
int Start_win32_Syscheck()
{
+ int debug_level = 0;
int r = 0;
char *cfg = DEFAULTCPATH;
+ /* Reading internal options */
+ read_internal(debug_level);
+
+
+ debug1(STARTED_MSG, ARGV0);
+
+
/* Zeroing the structure */
syscheck.workdir = DEFAULTDIR;
}
- /* Reading internal options */
- read_internal();
-
-
/* Rootcheck config */
if(rootcheck_init(0) == 0)
{
int main(int argc, char **argv)
{
int c,r;
+ int debug_level = 0;
int test_config = 0,run_foreground = 0;
char *cfg = DEFAULTCPATH;
break;
case 'd':
nowDebug();
+ debug_level = 1;
break;
case 'f':
run_foreground = 1;
}
+ /* Reading internal options */
+ read_internal(debug_level);
+
+
+ debug1(STARTED_MSG, ARGV0);
+
+
/* Checking if the configuration is present */
if(File_DateofChange(cfg) < 0)
ErrorExit(NO_CONFIG, ARGV0, cfg);
}
- /* Reading internal options */
- read_internal();
-
-
-
/* Rootcheck config */
if(rootcheck_init(test_config) == 0)
{
syscheck.workdir = DEFAULTDIR;
+ /* Setup libmagic */
+ #ifdef USE_MAGIC
+ init_magic(&magic_cookie);
+ #endif
+
+
if(!run_foreground)
{
nowDaemon();