Browse Source

[fix] indentation of filtron's rules (json)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 4 years ago
parent
commit
6ff20cef73
2 changed files with 200 additions and 207 deletions
  1. 85 94
      docs/admin/filtron.rst
  2. 115 113
      utils/templates/etc/filtron/rules.json

+ 85 - 94
docs/admin/filtron.rst

@@ -57,100 +57,91 @@ of:
 
 
 .. code:: json
 .. code:: json
 
 
-   [
-     { "name": "search request",
-       "filters": [
-	 "Param:q",
-	 "Path=^(/|/search)$"
-       ],
-       "interval": "<time-interval-in-sec (int)>",
-       "limit": "<max-request-number-in-interval (int)>",
-       "subrules": [
-	 {
-	   "name": "roboagent limit",
-	   "interval": "<time-interval-in-sec (int)>",
-	   "limit": "<max-request-number-in-interval (int)>",
-	   "filters": [
-	     "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
-	   ],
-	   "actions": [
-	     { "name": "log"},
-	     { "name": "block",
-	       "params": {
-		 "message": "Rate limit exceeded"
-	       }
-	     }
-	   ]
-	 },
-	 {
-	   "name": "botlimit",
-	   "limit": 0,
-	   "stop": true,
-	   "filters": [
-	     "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
-	   ],
-	   "actions": [
-	     { "name": "log"},
-	     { "name": "block",
-	       "params": {
-		 "message": "Rate limit exceeded"
-	       }
-	     }
-	   ]
-	 },
-	 {
-	   "name": "IP limit",
-	   "interval": "<time-interval-in-sec (int)>",
-	   "limit": "<max-request-number-in-interval (int)>",
-	   "stop": true,
-	   "aggregations": [
-	     "Header:X-Forwarded-For"
-	   ],
-	   "actions": [
-	     { "name": "log"},
-	     { "name": "block",
-	       "params": {
-		 "message": "Rate limit exceeded"
-	       }
-	     }
-	   ]
-	 },
-	 {
-	   "name": "rss/json limit",
-	   "interval": "<time-interval-in-sec (int)>",
-	   "limit": "<max-request-number-in-interval (int)>",
-	   "stop": true,
-	   "filters": [
-	     "Param:format=(csv|json|rss)"
-	   ],
-	   "actions": [
-	     { "name": "log"},
-	     { "name": "block",
-	       "params": {
-		 "message": "Rate limit exceeded"
-	       }
-	     }
-	   ]
-	 },
-	 {
-	   "name": "useragent limit",
-	   "interval": "<time-interval-in-sec (int)>",
-	   "limit": "<max-request-number-in-interval (int)>",
-	   "aggregations": [
-	     "Header:User-Agent"
-	   ],
-	   "actions": [
-	     { "name": "log"},
-	     { "name": "block",
-	       "params": {
-		 "message": "Rate limit exceeded"
-	       }
-	     }
-	   ]
-	 }
-       ]
-     }
-   ]
+    [
+        {
+            "name": "search request",
+            "filters": [
+                "Param:q",
+                "Path=^(/|/search)$"
+            ],
+            "interval": "<time-interval-in-sec (int)>"
+            "limit": "<max-request-number-in-interval (int)>",
+            "subrules": [
+                {
+                    "name": "missing Accept-Language",
+                    "filters": ["!Header:Accept-Language"],
+                    "limit": "<max-request-number-in-interval (int)>",
+                    "stop": true,
+                    "actions": [
+                        {"name":"log"},
+                        {"name": "block",
+                         "params": {"message": "Rate limit exceeded"}}
+                    ]
+                },
+                {
+                    "name": "suspiciously Connection=close header",
+                    "filters": ["Header:Connection=close"],
+                    "limit": "<max-request-number-in-interval (int)>",
+                    "stop": true,
+                    "actions": [
+                        {"name":"log"},
+                        {"name": "block",
+                         "params": {"message": "Rate limit exceeded"}}
+                    ]
+                },
+                {
+                    "name": "IP limit",
+                    "interval": "<time-interval-in-sec (int)>"
+                    "limit": "<max-request-number-in-interval (int)>",
+                    "stop": true,
+                    "aggregations": [
+                        "Header:X-Forwarded-For"
+                    ],
+                    "actions": [
+                        { "name": "log"},
+                        { "name": "block",
+                          "params": {
+                              "message": "Rate limit exceeded"
+                          }
+                        }
+                    ]
+                },
+                {
+                    "name": "rss/json limit",
+                    "filters": [
+                        "Param:format=(csv|json|rss)"
+                    ],
+                    "interval": "<time-interval-in-sec (int)>"
+                    "limit": "<max-request-number-in-interval (int)>",
+                    "stop": true,
+                    "actions": [
+                        { "name": "log"},
+                        { "name": "block",
+                          "params": {
+                              "message": "Rate limit exceeded"
+                          }
+                        }
+                    ]
+                },
+                {
+                    "name": "useragent limit",
+                    "interval": "<time-interval-in-sec (int)>"
+                    "limit": "<max-request-number-in-interval (int)>",
+                    "aggregations": [
+                        "Header:User-Agent"
+                    ],
+                    "actions": [
+                        { "name": "log"},
+                        { "name": "block",
+                          "params": {
+                              "message": "Rate limit exceeded"
+                          }
+                        }
+                    ]
+                }
+            ]
+        }
+    ]
 
 
 
 
 .. _filtron route request:
 .. _filtron route request:

+ 115 - 113
utils/templates/etc/filtron/rules.json

@@ -1,127 +1,129 @@
 [
 [
     {
     {
-	"name": "roboagent limit",
-	"filters": [
-	    "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby|UniversalFeedParser)"
-	],
-	"limit": 0,
-	"stop": true,
-	"actions": [
-	    { "name": "log"},
-	    { "name": "block",
+        "name": "roboagent limit",
+        "filters": [
+            "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby|UniversalFeedParser)"
+        ],
+        "limit": 0,
+        "stop": true,
+        "actions": [
+            { "name": "log"},
+            { "name": "block",
               "params": {
               "params": {
-		  "message": "Rate limit exceeded"
+                  "message": "Rate limit exceeded"
               }
               }
-	    }
-	]
+            }
+        ]
     },
     },
     {
     {
-	"name": "botlimit",
-	"filters": [
-	    "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
-	],
-	"limit": 0,
-	"stop": true,
-	"actions": [
-	    { "name": "log"},
-	    { "name": "block",
+        "name": "botlimit",
+        "filters": [
+            "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
+        ],
+        "limit": 0,
+        "stop": true,
+        "actions": [
+            { "name": "log"},
+            { "name": "block",
               "params": {
               "params": {
-		  "message": "Rate limit exceeded"
+                  "message": "Rate limit exceeded"
               }
               }
-	    }
-	]
+            }
+        ]
     },
     },
-    { "name": "suspiciously frequent IP",
-      "filters": [],
-      "interval": 600,
-      "limit": 30,
-      "aggregations": [
-	  "Header:X-Forwarded-For"
+    {
+        "name": "suspiciously frequent IP",
+        "filters": [],
+        "interval": 600,
+        "limit": 30,
+        "aggregations": [
+            "Header:X-Forwarded-For"
       ],
       ],
-      "actions":[
-	  {"name":"log"}
+        "actions":[
+            {"name":"log"}
       ]
       ]
     },
     },
-    { "name": "search request",
-      "filters": [
-	  "Param:q",
-	  "Path=^(/|/search)$"
-      ],
-      "interval": 61,
-      "limit": 999,
-      "subrules": [
-	  {
-	      "name": "missing Accept-Language",
-	      "filters": ["!Header:Accept-Language"],
-	      "limit": 0,
-	      "stop": true,
-	      "actions": [
-		  {"name":"log"},
-		  {"name": "block",
-		   "params": {"message": "Rate limit exceeded"}}
-	      ]
-	  },
-	  {
-              "name": "suspiciously Connection=close header",
-              "filters": ["Header:Connection=close"],
-              "limit": 0,
-              "stop": true,
-              "actions": [
-		  {"name":"log"},
-		  {"name": "block",
-		   "params": {"message": "Rate limit exceeded"}}
-              ]
-	  },
-	  {
-              "name": "IP limit",
-              "interval": 61,
-              "limit": 9,
-              "stop": true,
-              "aggregations": [
-		  "Header:X-Forwarded-For"
-              ],
-              "actions": [
-		  { "name": "log"},
-		  { "name": "block",
-		    "params": {
-			"message": "Rate limit exceeded"
-		    }
-		  }
-              ]
-	  },
-	  {
-              "name": "rss/json limit",
-              "filters": [
-		  "Param:format=(csv|json|rss)"
-              ],
-              "interval": 121,
-              "limit": 2,
-              "stop": true,
-              "actions": [
-		  { "name": "log"},
-		  { "name": "block",
-		    "params": {
-			"message": "Rate limit exceeded"
-		    }
-		  }
-              ]
-	  },
-	  {
-              "name": "useragent limit",
-              "interval": 61,
-              "limit": 199,
-              "aggregations": [
-		  "Header:User-Agent"
-              ],
-              "actions": [
-		  { "name": "log"},
-		  { "name": "block",
-		    "params": {
-			"message": "Rate limit exceeded"
-		    }
-		  }
-              ]
-	  }
-      ]
+    {
+        "name": "search request",
+        "filters": [
+            "Param:q",
+            "Path=^(/|/search)$"
+        ],
+        "interval": 61,
+        "limit": 999,
+        "subrules": [
+            {
+                "name": "missing Accept-Language",
+                "filters": ["!Header:Accept-Language"],
+                "limit": 0,
+                "stop": true,
+                "actions": [
+                    {"name":"log"},
+                    {"name": "block",
+                     "params": {"message": "Rate limit exceeded"}}
+                ]
+            },
+            {
+                "name": "suspiciously Connection=close header",
+                "filters": ["Header:Connection=close"],
+                "limit": 0,
+                "stop": true,
+                "actions": [
+                    {"name":"log"},
+                    {"name": "block",
+                     "params": {"message": "Rate limit exceeded"}}
+                ]
+            },
+            {
+                "name": "IP limit",
+                "interval": 61,
+                "limit": 9,
+                "stop": true,
+                "aggregations": [
+                    "Header:X-Forwarded-For"
+                ],
+                "actions": [
+                    { "name": "log"},
+                    { "name": "block",
+                      "params": {
+                          "message": "Rate limit exceeded"
+                      }
+                    }
+                ]
+            },
+            {
+                "name": "rss/json limit",
+                "filters": [
+                    "Param:format=(csv|json|rss)"
+                ],
+                "interval": 121,
+                "limit": 2,
+                "stop": true,
+                "actions": [
+                    { "name": "log"},
+                    { "name": "block",
+                      "params": {
+                          "message": "Rate limit exceeded"
+                      }
+                    }
+                ]
+            },
+            {
+                "name": "useragent limit",
+                "interval": 61,
+                "limit": 199,
+                "aggregations": [
+                    "Header:User-Agent"
+                ],
+                "actions": [
+                    { "name": "log"},
+                    { "name": "block",
+                      "params": {
+                          "message": "Rate limit exceeded"
+                      }
+                    }
+                ]
+            }
+        ]
     }
     }
 ]
 ]