mirror of https://github.com/fail2ban/fail2ban
				
				
				
			provides details of failed regex compilation in the error message we throw in Regex-constructor (it's good to know what exactly is wrong)
							parent
							
								
									35eb9acaee
								
							
						
					
					
						commit
						5e74499ffd
					
				| 
						 | 
				
			
			@ -145,9 +145,9 @@ class Regex:
 | 
			
		|||
				n = ALTNAME_CRE.match(k).group(1)
 | 
			
		||||
				self._altValues[k] = n
 | 
			
		||||
			self._altValues = list(self._altValues.items()) if len(self._altValues) else None
 | 
			
		||||
		except sre_constants.error:
 | 
			
		||||
			raise RegexException("Unable to compile regular expression '%s'" %
 | 
			
		||||
								 regex)
 | 
			
		||||
		except sre_constants.error as e:
 | 
			
		||||
			raise RegexException("Unable to compile regular expression '%s':\n%s" %
 | 
			
		||||
								 (regex, e))
 | 
			
		||||
		# set fetch handler depending on presence of alternate tags:
 | 
			
		||||
		self.getGroups = self._getGroupsWithAlt if self._altValues else self._getGroups
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,6 +133,13 @@ class Fail2banRegexTest(LogCaptureTestCase):
 | 
			
		|||
			"test", r".** from <HOST>$"
 | 
			
		||||
		))
 | 
			
		||||
		self.assertLogged("Unable to compile regular expression")
 | 
			
		||||
		self.assertLogged("multiple repeat", "at position 2", all=False); # details of failed compilation
 | 
			
		||||
		self.pruneLog()
 | 
			
		||||
		self.assertFalse(_test_exec(
 | 
			
		||||
			"test", r"^(?:(?P<type>A)|B)? (?(typo)...) from <ADDR>"
 | 
			
		||||
		))
 | 
			
		||||
		self.assertLogged("Unable to compile regular expression")
 | 
			
		||||
		self.assertLogged("unknown group name: 'typo'", "at position 23", all=False); # details of failed compilation
 | 
			
		||||
 | 
			
		||||
	def testWrongIngnoreRE(self):
 | 
			
		||||
		self.assertFalse(_test_exec(
 | 
			
		||||
| 
						 | 
				
			
			@ -140,6 +147,7 @@ class Fail2banRegexTest(LogCaptureTestCase):
 | 
			
		|||
			"test", r".*? from <HOST>$", r".**"
 | 
			
		||||
		))
 | 
			
		||||
		self.assertLogged("Unable to compile regular expression")
 | 
			
		||||
		self.assertLogged("multiple repeat", "at position 2", all=False); # details of failed compilation
 | 
			
		||||
 | 
			
		||||
	def testWrongFilterOptions(self):
 | 
			
		||||
		self.assertFalse(_test_exec(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue