mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	[fix] indentation of filtron's rules (json)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									dda4a46f8e
								
							
						
					
					
						commit
						6ff20cef73
					
				
					 2 changed files with 200 additions and 207 deletions
				
			
		|  | @ -57,100 +57,91 @@ of: | |||
| 
 | ||||
| .. 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: | ||||
|  |  | |||
|  | @ -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": { | ||||
| 		  "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": { | ||||
| 		  "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" | ||||
|                       } | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Markus Heiser
						Markus Heiser