From a5c7d5c0545d38e70634d428784f261e7c814d7c Mon Sep 17 00:00:00 2001 From: Chuck Sneed Date: Sun, 9 Jul 2023 19:33:14 -0500 Subject: [PATCH] twitch support --- files/classes/orgy.py | 5 +++++ files/helpers/config/const.py | 1 + files/helpers/regex.py | 1 + files/routes/chat.py | 2 +- files/templates/orgy.html | 6 ++++++ nginx-headers.conf | 2 +- 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/files/classes/orgy.py b/files/classes/orgy.py index 4c46342d3..7a7674142 100644 --- a/files/classes/orgy.py +++ b/files/classes/orgy.py @@ -32,6 +32,8 @@ class Orgy(Base): return self.type == OrgyTypes.YOUTUBE def is_rumble(self): return self.type == OrgyTypes.RUMBLE + def is_twitch(self): + return self.type == OrgyTypes.TWITCH def __repr__(self): return f"<{self.__class__.__name__}(id={self.id}, type={self.type}, data={self.data} title={self.title})>" @@ -52,6 +54,9 @@ def create_orgy(link, title): elif re.match(rumble_regex, normalized_link): orgy_type = OrgyTypes.RUMBLE data = normalized_link + elif re.match(twitch_regex, normalized_link): + orgy_type = OrgyTypes.TWITCH + data = re.search(twitch_regex, normalized_link).group(3) else: assert False diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index 8384996d3..e26ec25de 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -1268,6 +1268,7 @@ GIRL_NAMES = { class OrgyTypes: YOUTUBE = 1 RUMBLE = 2 + TWITCH = 3 from sqlalchemy import * from sqlalchemy.orm import scoped_session, sessionmaker diff --git a/files/helpers/regex.py b/files/helpers/regex.py index 52b70c1a0..e8024b198 100644 --- a/files/helpers/regex.py +++ b/files/helpers/regex.py @@ -128,6 +128,7 @@ yt_id_regex = re.compile('[\w\-]{5,20}', flags=re.A) rumble_regex = re.compile('https://rumble\.com/embed/([a-zA-Z0-9]*)/\?pub=([a-zA-Z0-9]*)',flags=re.I|re.A) bare_youtube_regex = re.compile('https:\/\/youtube\.com\/watch\?([\w\-.#&/=?@%+]{7,})',flags=re.I|re.A) +twitch_regex = re.compile('(https:\/\/)?(www\.)?twitch.tv/(.*)',flags=re.I|re.A) link_fix_regex = re.compile("(\[.*?\]\()(?!http|\/)(.*?\))" + NOT_IN_CODE_OR_LINKS, flags=re.A) diff --git a/files/routes/chat.py b/files/routes/chat.py index 5ecb6719e..b15e0cfe6 100644 --- a/files/routes/chat.py +++ b/files/routes/chat.py @@ -38,7 +38,7 @@ def chat(v): abort(403, f"Need at least {TRUESCORE_CHAT_MINIMUM} truescore for access to chat!") orgy = get_orgy() if orgy: - return render_template("orgy.html", v=v, messages=messages, orgy = orgy) + return render_template("orgy.html", v=v, messages=messages, orgy = orgy, site = SITE) else: return render_template("chat.html", v=v, messages=messages) diff --git a/files/templates/orgy.html b/files/templates/orgy.html index 8a761d5b9..9d6c6251d 100644 --- a/files/templates/orgy.html +++ b/files/templates/orgy.html @@ -18,6 +18,12 @@ {% elif orgy.is_rumble() %} + {% elif orgy.is_twitch() %} + {%endif%} Old Chat diff --git a/nginx-headers.conf b/nginx-headers.conf index ddabc8eba..95699ea61 100644 --- a/nginx-headers.conf +++ b/nginx-headers.conf @@ -2,5 +2,5 @@ add_header Referrer-Policy "same-origin"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; add_header X-Frame-Options "deny"; add_header X-Content-Type-Options "nosniff"; -add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; form-action 'self'; manifest-src 'self'; worker-src 'self'; base-uri 'self'; font-src 'self'; style-src-elem 'self'; style-src-attr 'unsafe-inline'; style-src 'self' 'unsafe-inline'; script-src-elem 'self' challenges.cloudflare.com; script-src-attr 'none'; script-src 'self' challenges.cloudflare.com; media-src 'self' https:; img-src 'self' https: data:; frame-src challenges.cloudflare.com www.youtube-nocookie.com platform.twitter.com rumble.com; connect-src 'self' tls-use1.fpapi.io api.fpjs.io;"; +add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; form-action 'self'; manifest-src 'self'; worker-src 'self'; base-uri 'self'; font-src 'self'; style-src-elem 'self'; style-src-attr 'unsafe-inline'; style-src 'self' 'unsafe-inline'; script-src-elem 'self' challenges.cloudflare.com; script-src-attr 'none'; script-src 'self' challenges.cloudflare.com; media-src 'self' https:; img-src 'self' https: data:; frame-src challenges.cloudflare.com www.youtube-nocookie.com platform.twitter.com rumble.com player.twitch.tv; connect-src 'self' tls-use1.fpapi.io api.fpjs.io;"; add_header Cross-Origin-Opener-Policy "same-origin";