From ef8ca26c5c702915685f6df5ce40a4a87b0be867 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 3 May 2022 19:17:23 +0100 Subject: [PATCH 1/2] Update example caddy file --- caddy.example.conf | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/caddy.example.conf b/caddy.example.conf index 615501443..3efed5a76 100644 --- a/caddy.example.conf +++ b/caddy.example.conf @@ -1,23 +1,28 @@ -# Caddy configuration file for running epicyon on example.com +# Example configuration file for running Caddy2 in front of Epicyon -example.com { - tls { - # Valid values are rsa2048, rsa4096, rsa8192, p256, and p384. - # Default is currently p256. - key_type p384 - } - header / Strict-Transport-Security "max-age=31556925" - header / X-Content-Type-Options "nosniff" - header / X-Download-Options "noopen" - header / X-Frame-Options "DENY" - header / X-Permitted-Cross-Domain-Policies "none" - header / X-Robots-Tag "noindex" - header / X-XSS-Protection "1; mode=block" +YOUR_DOMAIN { + tls USER@YOUR_DOMAIN - proxy / http://localhost:7156 { - transparent - timeout 10800s + header { + Strict-Transport-Security "max-age=31556925" + Content-Security-Policy "default-src https:; script-src https: 'unsafe-inline'; style-src https: 'unsafe-inline'" + X-Content-Type-Options "nosniff" + X-Download-Options "noopen" + X-Frame-Options "DENY" + X-Permitted-Cross-Domain-Policies "none" + X-XSS-Protection "1; mode=block" } + + route /newsmirror/* { + root * /var/www/YOUR_DOMAIN + file_server + } + + route /* { + reverse_proxy http://127.0.0.1:7156 + } + + encode zstd gzip } -# eof +# eof \ No newline at end of file From 05680217c127e01ef53545dce65359b375a75b6a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 4 May 2022 12:34:33 +0100 Subject: [PATCH 2/2] Shorten any long text inside of existing links --- content.py | 32 ++++++++++++++++++++++++++++++++ tests.py | 12 ++++++++++++ 2 files changed, 44 insertions(+) diff --git a/content.py b/content.py index 807b138ef..26c08d14b 100644 --- a/content.py +++ b/content.py @@ -529,9 +529,41 @@ def _add_music_tag(content: str, tag: str) -> str: return ':music: ' + content + ' ' + tag + ' ' +def _shorten_linked_urls(content: str) -> str: + """If content comes with a web link included then make sure + that it is short enough + """ + if 'href=' not in content: + return content + if '>' not in content: + return content + if '<' not in content: + return content + sections = content.split('>') + ctr = 0 + for section_text in sections: + if ctr == 0: + ctr += 1 + continue + if '<' not in section_text: + ctr += 1 + continue + section_text = section_text.split('<')[0] + if ' ' in section_text: + continue + if len(section_text) > MAX_LINK_LENGTH: + content = content.replace('>' + section_text + '<', + '>' + + section_text[:MAX_LINK_LENGTH-1] + '<') + ctr += 1 + return content + + def add_web_links(content: str) -> str: """Adds markup for web links """ + content = _shorten_linked_urls(content) + if ':' not in content: return content diff --git a/tests.py b/tests.py index 7d4e60811..9ccbf9984 100644 --- a/tests.py +++ b/tests.py @@ -3523,6 +3523,18 @@ def _test_actor_parsing(): def _test_web_links(): print('test_web_links') + example_text = \ + '

Some text!

https://videosite.whatever/video/A3JpZMovL25kci1kZS32' + \ + 'MGE0NCg4YB1lMLQwLTRkMGEtYkYxMS5kNmQ1MjJqYWZjKzd

' + linked_text = add_web_links(example_text) + expected_text = \ + '

Some text!

https://videosite.whatever/video/A3JpZM

' + assert linked_text == expected_text + example_text = \ "

Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + \ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + \