mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2024-11-24 02:37:05 +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