From 2c4b3dd8649151e1409d5af6adb05b26eed6679a Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Fri, 26 Feb 2021 15:53:27 +0100 Subject: [PATCH] [utils] accept only supported protocols in url_or_none --- haruhi_dl/utils.py | 2 +- test/test_utils.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/haruhi_dl/utils.py b/haruhi_dl/utils.py index 2bba1b04c..62b59bcdb 100644 --- a/haruhi_dl/utils.py +++ b/haruhi_dl/utils.py @@ -3642,7 +3642,7 @@ def url_or_none(url): if not url or not isinstance(url, compat_str): return None url = url.strip() - return url if re.match(r'^(?:[a-zA-Z][\da-zA-Z.+-]*:)?//', url) else None + return url if re.match(r'^(?:(?:https?|rt(?:m(?:pt?[es]?|fp)|sp[su]?)|mms|ftps?):)?//', url) else None def parse_duration(s): diff --git a/test/test_utils.py b/test/test_utils.py index fcb86d92a..dc3dde0c4 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -554,6 +554,11 @@ class TestUtil(unittest.TestCase): self.assertEqual(url_or_none('http$://foo.de'), None) self.assertEqual(url_or_none('http://foo.de'), 'http://foo.de') self.assertEqual(url_or_none('//foo.de'), '//foo.de') + self.assertEqual(url_or_none('s3://foo.de'), None) + self.assertEqual(url_or_none('rtmpte://foo.de'), 'rtmpte://foo.de') + self.assertEqual(url_or_none('mms://foo.de'), 'mms://foo.de') + self.assertEqual(url_or_none('rtspu://foo.de'), 'rtspu://foo.de') + self.assertEqual(url_or_none('ftps://foo.de'), 'ftps://foo.de') def test_parse_age_limit(self): self.assertEqual(parse_age_limit(None), None)