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 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" + \