Imported Upstream version 2.7
[ossec-hids.git] / src / client-agent / notify.c
index 39c332c..e698380 100755 (executable)
@@ -1,4 +1,5 @@
-/* @(#) $Id$ */
+/* @(#) $Id: ./src/client-agent/notify.c, 2011/09/08 dcid Exp $
+ */
 
 /* Copyright (C) 2009 Trend Micro Inc.
  * All right reserved.
 time_t g_saved_time = 0;
 
 
+char *rand_keepalive_str2(char *dst, int size)
+{
+    static const char text[] = "abcdefghijklmnopqrstuvwxyz"
+                               "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                               "0123456789"
+                               "!@#$%^&*()_+-=;'[],./?";
+    int i, len = rand() % (size - 1);
+    for ( i = 0; i < len; ++i )
+    {
+        dst[i] = text[rand() % (sizeof text - 1)];
+    }
+    dst[i] = '\0';
+    return dst;
+}
 
 /* getfiles: Return the name of the files in a directory
  */
@@ -27,9 +42,9 @@ char *getsharedfiles()
     int m_size = 512;
 
     char *ret;
-    
+
     os_md5 md5sum;
-    
+
 
     if(OS_MD5_File(SHAREDCFG_FILE, md5sum) != 0)
     {
@@ -49,7 +64,7 @@ char *getsharedfiles()
 
 
     snprintf(ret, m_size, "%s merged.mg\n", md5sum);
-    
+
 
     return(ret);
 }
@@ -59,9 +74,14 @@ char *getsharedfiles()
 /* run_notify: Send periodically notification to server */
 void run_notify()
 {
+    char keep_alive_random[1024];
     char tmp_msg[OS_SIZE_1024 +1];
     char *uname;
     char *shared_files;
+    os_md5 md5sum;
+
+
+    keep_alive_random[0] = '\0';
 
     time_t curr_time;
 
@@ -93,14 +113,14 @@ void run_notify()
         return;
     }
     g_saved_time = curr_time;
-    
+
     debug1("%s: DEBUG: Sending agent notification.", ARGV0);
 
 
     /* Send the message.
-     * Message is going to be the 
-     * uname\n checksum file\n checksum file\n 
-     */   
+     * Message is going to be the
+     * uname\n checksum file\n checksum file\n
+     */
 
     /* Getting uname */
     uname = getuname();
@@ -124,23 +144,20 @@ void run_notify()
         }
     }
 
+    rand_keepalive_str2(keep_alive_random, 700);
+
 
     /* creating message */
-    if(File_DateofChange(AGENTCONFIGINT) > 0)
+    if((File_DateofChange(AGENTCONFIGINT) > 0 ) &&
+       (OS_MD5_File(AGENTCONFIGINT, md5sum) == 0))
     {
-        os_md5 md5sum;
-        if(OS_MD5_File(AGENTCONFIGINT, md5sum) != 0)
-        {
-            snprintf(tmp_msg, OS_SIZE_1024, "#!-%s\n%s",uname, shared_files);
-        }
-        else
-        {
-            snprintf(tmp_msg, OS_SIZE_1024, "#!-%s / %s\n%s",uname, md5sum, shared_files);
-        }
+        snprintf(tmp_msg, OS_SIZE_1024, "#!-%s / %s\n%s\n%s",
+                 uname, md5sum, shared_files, keep_alive_random);
     }
     else
     {
-        snprintf(tmp_msg, OS_SIZE_1024, "#!-%s\n%s",uname, shared_files);
+        snprintf(tmp_msg, OS_SIZE_1024, "#!-%s\n%s\n%s",
+                 uname, shared_files, keep_alive_random);
     }