Support for multiple Antenna URLs for sharing posts

This commit is contained in:
Jaakko Keränen 2023-11-06 19:21:51 +02:00
parent c18cac7b4d
commit 75455d4370
No known key found for this signature in database
GPG Key ID: BACCFCFB98DB2EDC
3 changed files with 18 additions and 5 deletions

View File

@ -2,6 +2,7 @@
import os
import re
import shlex
import sys
import urllib.parse as urlparse
@ -41,7 +42,10 @@ class Bubble:
self.rate_register = max(1, cfg.getint('rate.register', 20)) # per hour, any remote
self.rate_post = max(1, cfg.getint('rate.post', 10)) # per hour, per remote
self.admin_certpass = cfg.get('admin.certpass', '')
self.antenna_url = cfg.get('antenna.url', 'gemini://warmedal.se/~antenna/submit')
self.antenna_urls = cfg.get('antenna.url', 'gemini://warmedal.se/~antenna/submit').split()
self.antenna_labels = shlex.split(cfg.get('antenna.label', '"📡 Antenna"'))
if len(self.antenna_urls) != len(self.antenna_labels):
raise Exception("Config error: Antenna URLs and labels mismatched")
self.version = __version__
# TODO: Could just check capsule Config's titan.upload_limit?
@ -52,6 +56,12 @@ class Bubble:
db.create_tables(self.admin_certpass)
db.close()
def antenna_links(self, kind, feed_url):
links = []
for i, url in enumerate(self.antenna_urls):
links.append(f'=> {url}?{urlparse.quote(feed_url)} Submit {kind} to {self.antenna_labels[i]}\n')
return links
def is_feedback_enabled(self):
return len(self.user_reactions) or self.thanks_enabled or self.likes_enabled

View File

@ -59,4 +59,5 @@ admin.certpass = password
repo.cachedir = /home/username/.bubble-cache/
; URL for broadcasting Gemini feed entries.
; antenna.url = gemini://warmedal.se/~antenna/submit
antenna.url = gemini://warmedal.se/~antenna/submit gemini://gemini.smallweb.space/antenna/submit
antenna.label = "📡 Antenna" "DSN Antenna"

View File

@ -257,9 +257,9 @@ def make_post_page_or_configure_feed(session):
actions.append(f'=> /mute/post/{post.id} 🔇 Mute {kind}\n')
if session.is_antenna_enabled() and session.user.id == post.user and post.sub_owner == post.user:
antenna_feed = f"gemini://{session.bubble.hostname}{session.path}u/{session.user.name}/{post.id}/antenna"
actions.append('\n')
actions.append(f'=> {session.bubble.antenna_url}?{urlparse.quote(antenna_feed)} Submit post to 📡 Antenna\n')
antenna_feed = f"gemini://{session.bubble.hostname}{session.path}u/{session.user.name}/{post.id}/antenna"
actions += session.bubble.antenna_links('post', antenna_feed)
if session.is_deletable(post) and not session.is_editable(post):
actions.append('\n')
@ -856,7 +856,9 @@ def make_feed_page(session):
if session.is_antenna_enabled() and c_user and user.id == c_user.id:
antenna_feed = f"{session.server_root()}{session.path}u/{user.name}/antenna"
page += f'=> {session.bubble.antenna_url}?{urlparse.quote(antenna_feed)} Submit feed to 📡 Antenna\n'
#page += f'=> {session.bubble.antenna_url}?{urlparse.quote(antenna_feed)} Submit feed to 📡 Antenna\n'
for link in session.bubble.antenna_links('feed', antenna_feed):
page += link
# Following and muting.
if c_user and user.id != c_user.id: