mirror of
				https://github.com/mail-in-a-box/mailinabox.git
				synced 2025-10-30 18:50:53 +00:00 
			
		
		
		
	Fixed W605 (invalid-escape-sequence)
This commit is contained in:
		
							parent
							
								
									14a5613dc8
								
							
						
					
					
						commit
						3d72c32b1d
					
				| @ -16,7 +16,7 @@ from ssl_certificates import get_ssl_certificates, check_certificate | |||||||
| # This regular expression matches domain names according to RFCs, it also accepts fqdn with an leading dot, | # This regular expression matches domain names according to RFCs, it also accepts fqdn with an leading dot, | ||||||
| # underscores, as well as asteriks which are allowed in domain names but not hostnames (i.e. allowed in | # underscores, as well as asteriks which are allowed in domain names but not hostnames (i.e. allowed in | ||||||
| # DNS but not in URLs), which are common in certain record types like for DKIM. | # DNS but not in URLs), which are common in certain record types like for DKIM. | ||||||
| DOMAIN_RE = "^(?!\-)(?:[*][.])?(?:[a-zA-Z\d\-_]{0,62}[a-zA-Z\d_]\.){1,126}(?!\d+)[a-zA-Z\d_]{1,63}(\.?)$" | DOMAIN_RE = r"^(?!\-)(?:[*][.])?(?:[a-zA-Z\d\-_]{0,62}[a-zA-Z\d_]\.){1,126}(?!\d+)[a-zA-Z\d_]{1,63}(\.?)$" | ||||||
| 
 | 
 | ||||||
| def get_dns_domains(env): | def get_dns_domains(env): | ||||||
| 	# Add all domain names in use by email users and mail aliases, any | 	# Add all domain names in use by email users and mail aliases, any | ||||||
|  | |||||||
| @ -391,7 +391,7 @@ def scan_mail_log_line(line, collector): | |||||||
| def scan_postgrey_line(date, log, collector): | def scan_postgrey_line(date, log, collector): | ||||||
|     """ Scan a postgrey log line and extract interesting data """ |     """ Scan a postgrey log line and extract interesting data """ | ||||||
| 
 | 
 | ||||||
|     m = re.match("action=(greylist|pass), reason=(.*?), (?:delay=\d+, )?client_name=(.*), " |     m = re.match(r"action=(greylist|pass), reason=(.*?), (?:delay=\d+, )?client_name=(.*), " | ||||||
|                  "client_address=(.*), sender=(.*), recipient=(.*)", |                  "client_address=(.*), sender=(.*), recipient=(.*)", | ||||||
|                  log) |                  log) | ||||||
| 
 | 
 | ||||||
| @ -513,7 +513,7 @@ def scan_postfix_lmtp_line(date, log, collector): | |||||||
| 
 | 
 | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     m = re.match("([A-Z0-9]+): to=<(\S+)>, .* Saved", log) |     m = re.match(r"([A-Z0-9]+): to=<(\S+)>, .* Saved", log) | ||||||
| 
 | 
 | ||||||
|     if m: |     if m: | ||||||
|         _, user = m.groups() |         _, user = m.groups() | ||||||
| @ -551,7 +551,7 @@ def scan_postfix_submission_line(date, log, collector): | |||||||
|     # Match both the 'plain' and 'login' sasl methods, since both authentication methods are |     # Match both the 'plain' and 'login' sasl methods, since both authentication methods are | ||||||
|     # allowed by Dovecot. Exclude trailing comma after the username when additional fields  |     # allowed by Dovecot. Exclude trailing comma after the username when additional fields  | ||||||
| 	# follow after. | 	# follow after. | ||||||
|     m = re.match("([A-Z0-9]+): client=(\S+), sasl_method=(PLAIN|LOGIN), sasl_username=(\S+)(?<!,)", log) |     m = re.match(r"([A-Z0-9]+): client=(\S+), sasl_method=(PLAIN|LOGIN), sasl_username=(\S+)(?<!,)", log) | ||||||
| 
 | 
 | ||||||
|     if m: |     if m: | ||||||
|         _, client, _method, user = m.groups() |         _, client, _method, user = m.groups() | ||||||
|  | |||||||
| @ -155,7 +155,7 @@ def get_domain_ssl_files(domain, ssl_certificates, env, allow_missing_cert=False | |||||||
| 			# it is hard-coded in some service configuration files. | 			# it is hard-coded in some service configuration files. | ||||||
| 			return system_certificate | 			return system_certificate | ||||||
| 
 | 
 | ||||||
| 	wildcard_domain = re.sub("^[^\.]+", "*", domain) | 	wildcard_domain = re.sub(r"^[^\.]+", "*", domain) | ||||||
| 	if domain in ssl_certificates: | 	if domain in ssl_certificates: | ||||||
| 		return ssl_certificates[domain] | 		return ssl_certificates[domain] | ||||||
| 	elif wildcard_domain in ssl_certificates: | 	elif wildcard_domain in ssl_certificates: | ||||||
| @ -526,7 +526,7 @@ def check_certificate(domain, ssl_certificate, ssl_private_key, warn_if_expiring | |||||||
| 		# Check that the domain appears among the acceptable names, or a wildcard | 		# Check that the domain appears among the acceptable names, or a wildcard | ||||||
| 		# form of the domain name (which is a stricter check than the specs but | 		# form of the domain name (which is a stricter check than the specs but | ||||||
| 		# should work in normal cases). | 		# should work in normal cases). | ||||||
| 		wildcard_domain = re.sub("^[^\.]+", "*", domain) | 		wildcard_domain = re.sub(r"^[^\.]+", "*", domain) | ||||||
| 		if domain not in certificate_names and wildcard_domain not in certificate_names: | 		if domain not in certificate_names and wildcard_domain not in certificate_names: | ||||||
| 			return ("The certificate is for the wrong domain name. It is for %s." | 			return ("The certificate is for the wrong domain name. It is for %s." | ||||||
| 				% ", ".join(sorted(certificate_names)), None) | 				% ", ".join(sorted(certificate_names)), None) | ||||||
|  | |||||||
| @ -214,8 +214,8 @@ def check_ssh_password(env, output): | |||||||
| 		return | 		return | ||||||
| 	with open("/etc/ssh/sshd_config") as f: | 	with open("/etc/ssh/sshd_config") as f: | ||||||
| 		sshd = f.read() | 		sshd = f.read() | ||||||
| 	if re.search("\nPasswordAuthentication\s+yes", sshd) \ | 	if re.search("\nPasswordAuthentication\\s+yes", sshd) \ | ||||||
| 		or not re.search("\nPasswordAuthentication\s+no", sshd): | 		or not re.search("\nPasswordAuthentication\\s+no", sshd): | ||||||
| 		output.print_error("""The SSH server on this machine permits password-based login. A more secure | 		output.print_error("""The SSH server on this machine permits password-based login. A more secure | ||||||
| 			way to log in is using a public key. Add your SSH public key to $HOME/.ssh/authorized_keys, check | 			way to log in is using a public key. Add your SSH public key to $HOME/.ssh/authorized_keys, check | ||||||
| 			that you can log in without a password, set the option 'PasswordAuthentication no' in | 			that you can log in without a password, set the option 'PasswordAuthentication no' in | ||||||
| @ -1043,8 +1043,8 @@ class FileOutput: | |||||||
| 
 | 
 | ||||||
| 	def print_block(self, message, first_line="   "): | 	def print_block(self, message, first_line="   "): | ||||||
| 		print(first_line, end='', file=self.buf) | 		print(first_line, end='', file=self.buf) | ||||||
| 		message = re.sub("\n\s*", " ", message) | 		message = re.sub("\n\\s*", " ", message) | ||||||
| 		words = re.split("(\s+)", message) | 		words = re.split(r"(\s+)", message) | ||||||
| 		linelen = 0 | 		linelen = 0 | ||||||
| 		for w in words: | 		for w in words: | ||||||
| 			if self.width and (linelen + len(w) > self.width-1-len(first_line)): | 			if self.width and (linelen + len(w) > self.width-1-len(first_line)): | ||||||
|  | |||||||
| @ -94,8 +94,8 @@ def sslyze(opts, port, ok_ciphers): | |||||||
| 		# Trim output to make better for storing in git. | 		# Trim output to make better for storing in git. | ||||||
| 		if "SCAN RESULTS FOR" not in out: | 		if "SCAN RESULTS FOR" not in out: | ||||||
| 			# Failed. Just output the error. | 			# Failed. Just output the error. | ||||||
| 			out = re.sub("[\w\W]*CHECKING HOST\(S\) AVAILABILITY\n\s*-+\n", "", out) # chop off header that shows the host we queried | 			out = re.sub("[\\w\\W]*CHECKING HOST\\(S\\) AVAILABILITY\n\\s*-+\n", "", out) # chop off header that shows the host we queried | ||||||
| 		out = re.sub("[\w\W]*SCAN RESULTS FOR.*\n\s*-+\n", "", out) # chop off header that shows the host we queried | 		out = re.sub("[\\w\\W]*SCAN RESULTS FOR.*\n\\s*-+\n", "", out) # chop off header that shows the host we queried | ||||||
| 		out = re.sub("SCAN COMPLETED IN .*", "", out) | 		out = re.sub("SCAN COMPLETED IN .*", "", out) | ||||||
| 		out = out.rstrip(" \n-") + "\n" | 		out = out.rstrip(" \n-") + "\n" | ||||||
| 
 | 
 | ||||||
| @ -105,8 +105,8 @@ def sslyze(opts, port, ok_ciphers): | |||||||
| 		# Pull out the accepted ciphers list for each SSL/TLS protocol | 		# Pull out the accepted ciphers list for each SSL/TLS protocol | ||||||
| 		# version outputted. | 		# version outputted. | ||||||
| 		accepted_ciphers = set() | 		accepted_ciphers = set() | ||||||
| 		for ciphers in re.findall(" Accepted:([\w\W]*?)\n *\n", out): | 		for ciphers in re.findall(" Accepted:([\\w\\W]*?)\n *\n", out): | ||||||
| 			accepted_ciphers |= set(re.findall("\n\s*(\S*)", ciphers)) | 			accepted_ciphers |= set(re.findall("\n\\s*(\\S*)", ciphers)) | ||||||
| 
 | 
 | ||||||
| 		# Compare to what Mozilla recommends, for a given modernness-level. | 		# Compare to what Mozilla recommends, for a given modernness-level. | ||||||
| 		print("  Should Not Offer: " + (", ".join(sorted(accepted_ciphers-set(ok_ciphers))) or "(none -- good)")) | 		print("  Should Not Offer: " + (", ".join(sorted(accepted_ciphers-set(ok_ciphers))) or "(none -- good)")) | ||||||
|  | |||||||
| @ -93,9 +93,9 @@ while len(input_lines) > 0: | |||||||
| 		# Check if this line contain this setting from the command-line arguments. | 		# Check if this line contain this setting from the command-line arguments. | ||||||
| 		name, val = settings[i].split("=", 1) | 		name, val = settings[i].split("=", 1) | ||||||
| 		m = re.match( | 		m = re.match( | ||||||
| 			   "(\s*)" | 			   r"(\s*)" | ||||||
| 			 + "(" + re.escape(comment_char) + "\s*)?" | 			 + "(" + re.escape(comment_char) + r"\s*)?" | ||||||
| 			 + re.escape(name) + delimiter_re + "(.*?)\s*$", | 			 + re.escape(name) + delimiter_re + r"(.*?)\s*$", | ||||||
| 			 line, re.S) | 			 line, re.S) | ||||||
| 		if not m: continue | 		if not m: continue | ||||||
| 		indent, is_comment, existing_val = m.groups() | 		indent, is_comment, existing_val = m.groups() | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user