diff --git a/plugins/OptionalManager/OptionalManagerPlugin.py b/plugins/OptionalManager/OptionalManagerPlugin.py index 72874b7f..9da93041 100644 --- a/plugins/OptionalManager/OptionalManagerPlugin.py +++ b/plugins/OptionalManager/OptionalManagerPlugin.py @@ -198,7 +198,7 @@ class SitePlugin(object): return False def fileForgot(self, inner_path): - if "|" in inner_path and self.content_manager.isPinned(re.sub("\|.*", "", inner_path)): + if "|" in inner_path and self.content_manager.isPinned(re.sub(r"\|.*", "", inner_path)): self.log.debug("File %s is pinned, no fileForgot" % inner_path) return False else: @@ -206,7 +206,7 @@ class SitePlugin(object): def fileDone(self, inner_path): if "|" in inner_path and self.bad_files.get(inner_path, 0) > 5: # Idle optional file done - inner_path_file = re.sub("\|.*", "", inner_path) + inner_path_file = re.sub(r"\|.*", "", inner_path) num_changed = 0 for key, val in self.bad_files.items(): if key.startswith(inner_path_file) and val > 1: diff --git a/plugins/Zeroname/SiteManagerPlugin.py b/plugins/Zeroname/SiteManagerPlugin.py index 4ec29fdb..40088f12 100644 --- a/plugins/Zeroname/SiteManagerPlugin.py +++ b/plugins/Zeroname/SiteManagerPlugin.py @@ -31,7 +31,7 @@ class SiteManagerPlugin(object): # Return: True if the address is .bit domain def isBitDomain(self, address): - return re.match("(.*?)([A-Za-z0-9_-]+\.bit)$", address) + return re.match(r"(.*?)([A-Za-z0-9_-]+\.bit)$", address) # Resolve domain # Return: The address or None diff --git a/plugins/Zeroname/UiRequestPlugin.py b/plugins/Zeroname/UiRequestPlugin.py index 25e5bd96..b0230524 100644 --- a/plugins/Zeroname/UiRequestPlugin.py +++ b/plugins/Zeroname/UiRequestPlugin.py @@ -13,7 +13,7 @@ class UiRequestPlugin(object): # Media request def actionSiteMedia(self, path, **kwargs): - match = re.match("/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) + match = re.match(r"/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) if match: # Its a valid domain, resolve first domain = match.group("address") address = self.site_manager.resolveDomain(domain) diff --git a/plugins/disabled-Dnschain/SiteManagerPlugin.py b/plugins/disabled-Dnschain/SiteManagerPlugin.py index 1a41a9d7..a5122ec1 100644 --- a/plugins/disabled-Dnschain/SiteManagerPlugin.py +++ b/plugins/disabled-Dnschain/SiteManagerPlugin.py @@ -24,7 +24,7 @@ class SiteManagerPlugin(object): # Return: True if the address is domain def isDomain(self, address): - return re.match("(.*?)([A-Za-z0-9_-]+\.[A-Za-z0-9]+)$", address) + return re.match(r"(.*?)([A-Za-z0-9_-]+\.[A-Za-z0-9]+)$", address) # Load dns entries from data/dns_cache.json @@ -74,7 +74,7 @@ class SiteManagerPlugin(object): if not sub_domain: sub_domain = "@" address = None with gevent.Timeout(5, Exception("Timeout: 5s")): - res = Http.get("https://dnschain.info/bit/d/%s" % re.sub("\.bit$", "", top_domain)).read() + res = Http.get("https://dnschain.info/bit/d/%s" % re.sub(r"\.bit$", "", top_domain)).read() data = json.loads(res)["value"] for key, val in data["zeronet"].iteritems(): self.dns_cache[key+"."+top_domain] = [val, time.time()+60*60*5] # Cache for 5 hours diff --git a/plugins/disabled-Dnschain/UiRequestPlugin.py b/plugins/disabled-Dnschain/UiRequestPlugin.py index e1a095a5..8ab9d5c5 100644 --- a/plugins/disabled-Dnschain/UiRequestPlugin.py +++ b/plugins/disabled-Dnschain/UiRequestPlugin.py @@ -11,7 +11,7 @@ class UiRequestPlugin(object): # Media request def actionSiteMedia(self, path): - match = re.match("/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) + match = re.match(r"/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) if match: # Its a valid domain, resolve first domain = match.group("address") address = self.site_manager.resolveDomain(domain) @@ -23,7 +23,7 @@ class UiRequestPlugin(object): # Is mediarequest allowed from that referer def isMediaRequestAllowed(self, site_address, referer): referer_path = re.sub("http[s]{0,1}://.*?/", "/", referer).replace("/media", "") # Remove site address - referer_site_address = re.match("/(?P
[A-Za-z0-9\.-]+)(?P/.*|$)", referer_path).group("address") + referer_site_address = re.match(r"/(?P
[A-Za-z0-9\.-]+)(?P/.*|$)", referer_path).group("address") if referer_site_address == site_address: # Referer site address as simple address return True diff --git a/plugins/disabled-DonationMessage/DonationMessagePlugin.py b/plugins/disabled-DonationMessage/DonationMessagePlugin.py index 14f95b08..8cf0d541 100644 --- a/plugins/disabled-DonationMessage/DonationMessagePlugin.py +++ b/plugins/disabled-DonationMessage/DonationMessagePlugin.py @@ -19,4 +19,4 @@ class UiRequestPlugin(object): """ - return re.sub("\s*\s*$", inject_html, body) + return re.sub(r"\s*\s*$", inject_html, body) diff --git a/plugins/disabled-UiPassword/UiPasswordPlugin.py b/plugins/disabled-UiPassword/UiPasswordPlugin.py index 47321181..6e746fd4 100644 --- a/plugins/disabled-UiPassword/UiPasswordPlugin.py +++ b/plugins/disabled-UiPassword/UiPasswordPlugin.py @@ -56,7 +56,7 @@ class UiRequestPlugin(object): # Redirect to homepage or referer url = self.env.get("HTTP_REFERER", "") - if not url or re.sub("\?.*", "", url).endswith("/Login"): + if not url or re.sub(r"\?.*", "", url).endswith("/Login"): url = "/" + config.homepage cookie_header = ('Set-Cookie', "session_id=%s;path=/;max-age=2592000;" % session_id) # Max age = 30 days self.start_response('301 Redirect', [('Location', url), cookie_header]) diff --git a/plugins/disabled-Zeroname-local/SiteManagerPlugin.py b/plugins/disabled-Zeroname-local/SiteManagerPlugin.py index a25c7da8..e8fc8610 100644 --- a/plugins/disabled-Zeroname-local/SiteManagerPlugin.py +++ b/plugins/disabled-Zeroname-local/SiteManagerPlugin.py @@ -25,7 +25,7 @@ class SiteManagerPlugin(object): # Return: True if the address is domain def isDomain(self, address): - return re.match("(.*?)([A-Za-z0-9_-]+\.[A-Za-z0-9]+)$", address) + return re.match(r"(.*?)([A-Za-z0-9_-]+\.[A-Za-z0-9]+)$", address) # Resolve domain diff --git a/plugins/disabled-Zeroname-local/UiRequestPlugin.py b/plugins/disabled-Zeroname-local/UiRequestPlugin.py index 462e485f..df37e066 100644 --- a/plugins/disabled-Zeroname-local/UiRequestPlugin.py +++ b/plugins/disabled-Zeroname-local/UiRequestPlugin.py @@ -11,7 +11,7 @@ class UiRequestPlugin(object): # Media request def actionSiteMedia(self, path): - match = re.match("/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) + match = re.match(r"/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) if match: # Its a valid domain, resolve first domain = match.group("address") address = self.site_manager.resolveDomain(domain) @@ -23,13 +23,13 @@ class UiRequestPlugin(object): # Is mediarequest allowed from that referer def isMediaRequestAllowed(self, site_address, referer): referer_path = re.sub("http[s]{0,1}://.*?/", "/", referer).replace("/media", "") # Remove site address - referer_path = re.sub("\?.*", "", referer_path) # Remove http params + referer_path = re.sub(r"\?.*", "", referer_path) # Remove http params if self.isProxyRequest(): # Match to site domain referer = re.sub("^http://zero[/]+", "http://", referer) # Allow /zero access referer_site_address = re.match("http[s]{0,1}://(.*?)(/|$)", referer).group(1) else: # Match to request path - referer_site_address = re.match("/(?P
[A-Za-z0-9\.-]+)(?P/.*|$)", referer_path).group("address") + referer_site_address = re.match(r"/(?P
[A-Za-z0-9\.-]+)(?P/.*|$)", referer_path).group("address") if referer_site_address == site_address: # Referer site address as simple address return True diff --git a/src/Debug/DebugMedia.py b/src/Debug/DebugMedia.py index 824b215f..4f576860 100644 --- a/src/Debug/DebugMedia.py +++ b/src/Debug/DebugMedia.py @@ -68,7 +68,7 @@ def merge(merged_path): if os.path.isfile(merged_path): # Find old parts to avoid unncessary recompile merged_old = open(merged_path, "rb").read().decode("utf8") old_parts = {} - for match in re.findall("(/\* ---- (.*?) ---- \*/(.*?)(?=/\* ----|$))", merged_old, re.DOTALL): + for match in re.findall(r"(/\* ---- (.*?) ---- \*/(.*?)(?=/\* ----|$))", merged_old, re.DOTALL): old_parts[match[1]] = match[2].strip("\n\r") # Merge files diff --git a/src/Test/TestSafeRe.py b/src/Test/TestSafeRe.py index ae2e9c15..b8037123 100644 --- a/src/Test/TestSafeRe.py +++ b/src/Test/TestSafeRe.py @@ -11,7 +11,7 @@ class TestSafeRe: ) assert SafeRe.match(".+/data.json", "data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/data.json") - @pytest.mark.parametrize("pattern", ["([a-zA-Z]+)*", "(a|aa)+*", "(a|a?)+", "(.*a){10}", "((?!json).)*$", "(\w+\d+)+C"]) + @pytest.mark.parametrize("pattern", ["([a-zA-Z]+)*", "(a|aa)+*", "(a|a?)+", "(.*a){10}", "((?!json).)*$", r"(\w+\d+)+C"]) def testUnsafeMatch(self, pattern): with pytest.raises(SafeRe.UnsafePatternError) as err: SafeRe.match(pattern, "aaaaaaaaaaaaaaaaaaaaaaaa!") diff --git a/src/lib/pybitcointools/test.py b/src/lib/pybitcointools/test.py index 59edaace..8fb8bdc1 100644 --- a/src/lib/pybitcointools/test.py +++ b/src/lib/pybitcointools/test.py @@ -267,7 +267,7 @@ class TestBIP0032(unittest.TestCase): self.assertEqual( left, right, - "Test vector does not match. Details: \n%s\n%s\n\%s" % ( + r"Test vector does not match. Details: \n%s\n%s\n\%s" % ( tv[0], [x.encode('hex') if isinstance(x, str) else x for x in bip32_deserialize(left)], [x.encode('hex') if isinstance(x, str) else x for x in bip32_deserialize(right)], @@ -291,7 +291,7 @@ class TestBIP0032(unittest.TestCase): self.assertEqual( left, right, - "Test vector does not match. Details:\n%s\n%s\n%s\n\%s" % ( + r"Test vector does not match. Details:\n%s\n%s\n%s\n\%s" % ( left, tv[0], [x.encode('hex') if isinstance(x, str) else x for x in bip32_deserialize(left)], diff --git a/src/util/SafeRe.py b/src/util/SafeRe.py index f970a729..6018e2d3 100644 --- a/src/util/SafeRe.py +++ b/src/util/SafeRe.py @@ -11,11 +11,11 @@ def isSafePattern(pattern): if len(pattern) > 255: raise UnsafePatternError("Pattern too long: %s characters in %s" % (len(pattern), pattern)) - unsafe_pattern_match = re.search("[^\.][\*\{\+]", pattern) # Always should be "." before "*{+" characters to avoid ReDoS + unsafe_pattern_match = re.search(r"[^\.][\*\{\+]", pattern) # Always should be "." before "*{+" characters to avoid ReDoS if unsafe_pattern_match: raise UnsafePatternError("Potentially unsafe part of the pattern: %s in %s" % (unsafe_pattern_match.group(0), pattern)) - repetitions = re.findall("\.[\*\{\+]", pattern) + repetitions = re.findall(r"\.[\*\{\+]", pattern) if len(repetitions) >= 10: raise UnsafePatternError("More than 10 repetitions of %s in %s" % (repetitions[0], pattern))