Re[2]: Re[2]: clamav-cgp 1.0.12 [was: plugin for clamav]

От: Varinov Nicolay <CGatePro_at_mx_ru>
Дата: Mon 12 Nov 2007 - 10:46:31 MSK

День добрый Victor,

Sunday, November 11, 2007, 7:24:46 PM, Вы пишете:

...

>> А не проще отдельный лог для хелпера?

VS> Пожалуй, это оптимальный вариант, потому что хелпер обладает VS> информацией от обеих сторон.

В принципе, да, из него это проще сделать.

>> Я к clamav-cgp приделывал логирование как в cgpav по syslog, в логе
>> строчки вида:
>> Nov 7 09:12:09 mx clamav-cgp: Virus: Worm.Nyxem.E From: zavar@yandex.ru To: shpak@rzpost.ru IP: 82.215.66.101

VS> А можно патч посмотреть?

Да, конечно.
В нем логирование в сислог перетащено из cgpav, добавлено ID письма и дополнительно в лог CGP, правда включается только вместе. Да, есть в логировании косяк, до которого руки не дойдут ни как, если получатель письма не один, то в логе пишется только последний :( Кроме этого я добавлял то к чему привык в cgpav, добавка хедеров на чистые письма (правда от нее единственная польза по заголовкам увидеть попадало ли письмо в хелпер), коллекционирование писем в вирусами в папочку из того же cgpav.
Включается опциями -L -A -C соответственно, все настройки куда логировать, какой хедер добавлять, и куда складывать письма в коллекцию меняются только в исходниках, так как делалось первоначально только для себя.

Адаптация для 1.0.12 ниже, первоначально это все делалось для более ранней версии clamav-cgp где то с год назад, при переходе на него с cgpav.

--------------------------------->Cut Here<-------------------------------
--- clamav-cgp.c.ORIG   Mon Nov 12 10:11:31 2007
+++ clamav-cgp.c        Mon Nov 12 10:13:28 2007
@@ -68,6 +68,7 @@
 #include <arpa/inet.h>
 #include <sys/socket.h>                                                         
 #include <sys/un.h>                                                             
+#include <syslog.h>
 

 #ifdef FREEBSD
 #include <netinet/in.h>
@@ -80,6 +81,10 @@

 #define CGP_CMDARG_LEN      128
 #define CGP_ANSWER_LEN      4096
 #define CGP_DIR             "/var/CommuniGate"
+#define CGP_OK             0
+#define CGP_ADD_HEADER     1
+#define CGP_ADDING_HEADER   "X-Virus-Scanned: by clamav-cgp on localhost"
+  
 #define CLAMD_TIMEOUT       300
 #define CLAMD_PORT          3310
@@ -89,6 +94,12 @@
 #define TRANSPORT_UNIX      0x03    /* UNIX domain socket    */
 #define TRANSPORT_MAX_HOSTS 1  
+#define VIR_NO              0
+#define VIR_YES             1
+#define VIR_COLLECT_DIR     "/var/log/clamav/vir_collection"
+#define VIR_SYSLOG_FACILITY_TEXT     "LOCAL0"
+#define VIR_SYSLOG_FACILITY LOG_LOCAL0
+

 typedef struct transport
 {

     int type;
@@ -120,6 +131,18 @@
 static void transport_init(transport_t *trans);  static int transport_setup(transport_t *trans);  

+static void clear_string(char *pat, char **text);
+static void tr_string(char **text, char from, char to);
+static int  copy_infected(char *filename, char *virus_name);
+static int  copy_file(char *from_file, char *to_file);
+static char *parse_smtp(char *header_line);
+static char *parse_email(char *header_line);
+
+int            add_header = CGP_OK;
+int            vir_collect = VIR_NO;
+int            vir_log = VIR_NO;
+
+
 

 int
 main(int argc, char **argv)
@@ -200,8 +223,11 @@  

     switch( rc ) {
         case CL_CLEAN:
-            putline("%u OK\n", req->seqNum);
-            break;
+           if( add_header == CGP_ADD_HEADER ) 
+               putline("%u ADDHEADER \"%s\"\n", req->seqNum,CGP_ADDING_HEADER);
+           else 
+               putline("%u OK\n", req->seqNum);                                
+           break;
         case CL_VIRUS:
             putline("%u DISCARD\n", req->seqNum);
             break;

@@ -334,14 +360,77 @@
 static int
 cl_reply(req_t *req, char *buf, int len)  {
+    char cmdScan[CGP_CMDARG_LEN], *p, hbuf[384], *rcpt, *sender, *ip, id[CGP_CMDARG_LEN];
+    int         fd = -1, len_id;
+    FILE *fin = NULL;
+
     buf[len] = '\0';
 
     if( strstr(buf, " OK\n") )
         return CL_CLEAN;
 

@@ -383,8 +475,18 @@
 {

     int opt;  


С наилучшими пожеланиями
Николай Варинов.
тел.+7 4912 243873
mailto:nic@sotcom.ru
Получено Mon Nov 12 07:46:39 2007

Этот архив был сгенерирован hypermail 2.1.8 : Mon 12 Nov 2007 - 12:14:11 MSK