]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Redis key expansion & antivirus ordered patterns
authorAndrew Lewis <nerf@judo.za.org>
Fri, 8 Dec 2017 13:40:21 +0000 (15:40 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Fri, 8 Dec 2017 13:40:21 +0000 (15:40 +0200)
test/functional/cases/102_multimap.robot
test/functional/cases/160_antivirus.robot
test/functional/configs/antivirus.conf
test/functional/configs/multimap.conf
test/functional/lib/vars.py
test/functional/util/dummy_fprot.py

index 977a849916e6d026095b8c27780e8002271a1bba..569f75e3bb3a18737cd39b441abc6c446e0efb39 100644 (file)
@@ -148,6 +148,15 @@ MAP - REDIS - HOSTNAME MISS
   ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  rspamd.com
   Check Rspamc  ${result}  REDIS_HOSTNAME  inverse=1
 
+MAP - REDIS - HOSTNAME - EXPANSION - HIT
+  Redis HSET  127.0.0.1.foo.com  redistest.example.net  ${EMPTY}
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  redistest.example.net  --rcpt  bob@foo.com
+  Check Rspamc  ${result}  REDIS_HOSTNAME_EXPANSION
+
+MAP - REDIS - HOSTNAME - EXPANSION - MISS
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  redistest.example.net  --rcpt  bob@bar.com
+  Check Rspamc  ${result}  REDIS_HOSTNAME_EXPANSION  inverse=1
+
 MAP - REDIS - IP
   Redis HSET  ipaddr  127.0.0.1  ${EMPTY}
   ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1
index ec43329e3d92333d03a72bf97c7b7d88d2853ae4..edc0634451fc6951726ec922596b1b4abb7b2db1 100644 (file)
@@ -44,14 +44,22 @@ FPROT MISS
 
 FPROT HIT - PATTERN
   Run Dummy Fprot  ${PORT_FPROT}  1
+  Run Dummy Fprot  ${PORT_FPROT_DUPLICATE}  1  /tmp/dummy_fprot_dupe.pid
   ${result} =  Scan Message With Rspamc  ${MESSAGE}
   Check Rspamc  ${result}  FPROT_EICAR (1.00)[EICAR_Test_File]
   Should Not Contain  ${result.stdout}  CLAMAV_VIRUS
+  # Also check ordered pattern match
+  Should Contain  ${result.stdout}  FPROT_VIRUS_DUPLICATE_PATTERN
+  Should Not Contain  ${result.stdout}  FPROT_VIRUS_DUPLICATE_DEFAULT
+  Should Not Contain  ${result.stdout}  FPROT_VIRUS_DUPLICATE_NOPE
 
 FPROT CACHE HIT
   ${result} =  Scan Message With Rspamc  ${MESSAGE}
   Check Rspamc  ${result}  FPROT_EICAR (1.00)[EICAR_Test_File]
   Should Not Contain  ${result.stdout}  CLAMAV_VIRUS
+  # Also check ordered pattern match
+  Should Contain  ${result.stdout}  FPROT_VIRUS_DUPLICATE_PATTERN
+  Should Not Contain  ${result.stdout}  FPROT_VIRUS_DUPLICATE_DEFAULT
 
 FPROT CACHE MISS
   ${result} =  Scan Message With Rspamc  ${MESSAGE2}
@@ -74,6 +82,6 @@ Run Dummy Clam
   Wait Until Created  /tmp/dummy_clamav.pid
 
 Run Dummy Fprot
-  [Arguments]  ${port}  ${found}=
-  ${result} =  Start Process  ${TESTDIR}/util/dummy_fprot.py  ${port}  ${found}
-  Wait Until Created  /tmp/dummy_fprot.pid
+  [Arguments]  ${port}  ${found}=  ${pid}=/tmp/dummy_fprot.pid
+  ${result} =  Start Process  ${TESTDIR}/util/dummy_fprot.py  ${port}  ${found}  ${pid}
+  Wait Until Created  ${pid}
index a4b0739aa06b2049bee732e89c1a7c57c546701b..432d9a2de6357d6534bb94336e5e8a5c6c25867a 100644 (file)
@@ -17,4 +17,19 @@ antivirus {
       FPROT_EICAR = "^EICAR_Test_File$";
     }
   }
+  fprot_duplicate {
+    prefix = "fp_dupe";
+    attachments_only = false;
+    symbol = "FPROT_VIRUS_DUPLICATE_DEFAULT";
+    type = "fprot";
+    servers = "127.0.0.1:${PORT_FPROT_DUPLICATE}";
+    patterns = [
+      {FPROT_VIRUS_DUPLICATE_PATTERN = "^E"},
+      {FPROT_VIRUS_DUPLICATE_NOPE1 = "^EI",
+      FPROT_VIRUS_DUPLICATE_NOPE2 = "^EIC",
+      FPROT_VIRUS_DUPLICATE_NOPE3 = "^EICA",
+      FPROT_VIRUS_DUPLICATE_NOPE4 = "^EICAR",
+      FPROT_VIRUS_DUPLICATE_NOPE5 = "^EICAR_"}
+    ];
+  }
 }
index 1c262a287eae9c2fca8819a04510d6fd065fe879..28d84f38e4eba9e1cf61d99fd3314a1a4e4ef1ba 100644 (file)
@@ -2,6 +2,7 @@ asn {
 }
 redis {
   servers = "${REDIS_ADDR}:${REDIS_PORT}";
+  expand_keys = true;
 }
 multimap {
   DNSBL_MAP {
@@ -65,6 +66,10 @@ multimap {
     type = "hostname";
     map = "redis://hostname";
   }
+  REDIS_HOSTNAME_EXPANSION {
+    type = "hostname";
+    map = "redis://\${ip}.\${principal_recipient_domain}";
+  }
   REDIS_IPADDR {
     type = "ip";
     map = "redis://ipaddr";
@@ -136,4 +141,15 @@ multimap {
     type = "received";
     map = "redis://RCVD_TEST";
   }
+  RCVD_AUTHED_ONE {
+    type = "received";
+    map = "${TESTDIR}/configs/maps/rcvd2.list";
+    flags = ["authenticated"];
+    nflags = ["ssl"];
+  }
+  RCVD_AUTHED_TWO {
+    type = "received";
+    map = "${TESTDIR}/configs/maps/rcvd2.list";
+    flags = ["authenticated", "ssl"];
+  }
 }
index f053422d153e00fcd445fe21f3ed6d94baa9af17..07ac9889de093d5e91af8f1474aa438cfa65e526 100644 (file)
@@ -14,6 +14,7 @@ PORT_NORMAL_SLAVE = 56794
 PORT_PROXY = 56795
 PORT_CLAM = 56796
 PORT_FPROT = 56797
+PORT_FPROT_DUPLICATE = 56798
 REDIS_ADDR = u'127.0.0.1'
 REDIS_PORT = 56379
 RSPAMD_GROUP = 'nogroup'
index 082934f4d371a5aee0f1f02702e3092cdd8b8c40..3bcdb729268b55c8d04cbafd2e508b658d993864 100755 (executable)
@@ -32,7 +32,10 @@ if __name__ == "__main__":
     alen = len(sys.argv)
     if alen > 1:
         port = int(sys.argv[1])
-        if alen >= 3:
+        if alen >= 4:
+            PID = sys.argv[3]
+            foundvirus = bool(sys.argv[2])
+        elif alen >= 3:
             foundvirus = bool(sys.argv[2])
         else:
             foundvirus = False