From ee7b3245257e8c4215133dfb31db6369eb74a023 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Thu, 26 Dec 2019 18:18:44 -0800 Subject: [PATCH] bring back HOST_URL override to fed.brid.gy, for URLs emitted into AP --- activitypub.py | 13 +++++++------ add_webmention.py | 4 ++-- appengine_config.py | 10 ++++++---- common.py | 10 +++++----- models.py | 5 +++-- webfinger.py | 9 +++++---- webmention.py | 2 +- 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/activitypub.py b/activitypub.py index 5a6dba7..65469ec 100644 --- a/activitypub.py +++ b/activitypub.py @@ -6,11 +6,12 @@ import logging from google.cloud import ndb from granary import as2, microformats2 import mf2util -from oauth_dropins.webutil import appengine_info, util +from oauth_dropins.webutil import util from oauth_dropins.webutil.handlers import cache_response from oauth_dropins.webutil.util import json_dumps, json_loads import webapp2 +from appengine_config import HOST, HOST_URL import common from models import Follower, MagicKey from httpsig.requests_auth import HTTPSignatureAuth @@ -84,10 +85,10 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati obj = common.postprocess_as2(as2.from_as1(microformats2.json_to_object(hcard)), key=key) obj.update({ - 'inbox': '%s/%s/inbox' % (appengine_info.HOST_URL, domain), - 'outbox': '%s/%s/outbox' % (appengine_info.HOST_URL, domain), - 'following': '%s/%s/following' % (appengine_info.HOST_URL, domain), - 'followers': '%s/%s/followers' % (appengine_info.HOST_URL, domain), + 'inbox': '%s/%s/inbox' % (HOST_URL, domain), + 'outbox': '%s/%s/outbox' % (HOST_URL, domain), + 'following': '%s/%s/following' % (HOST_URL, domain), + 'followers': '%s/%s/followers' % (HOST_URL, domain), }) logging.info('Returning: %s', json_dumps(obj, indent=2)) @@ -172,7 +173,7 @@ class InboxHandler(webapp2.RequestHandler): # send AP Accept accept = { '@context': 'https://www.w3.org/ns/activitystreams', - 'id': util.tag_uri(appengine_info.HOST, 'accept/%s/%s' % ( + 'id': util.tag_uri(HOST, 'accept/%s/%s' % ( (user_domain, follow.get('id')))), 'type': 'Accept', 'actor': followee, diff --git a/add_webmention.py b/add_webmention.py index d77971d..d75a3b7 100644 --- a/add_webmention.py +++ b/add_webmention.py @@ -3,11 +3,11 @@ import datetime import urllib.parse -from oauth_dropins.webutil import appengine_info from oauth_dropins.webutil.handlers import cache_response import requests import webapp2 +from appengine_config import HOST, HOST_URL import common LINK_HEADER = '<%s>; rel="webmention"' @@ -35,7 +35,7 @@ class AddWebmentionHandler(webapp2.RequestHandler): self.response.write(resp.content) endpoint = LINK_HEADER % (str(self.request.get('endpoint')) or - appengine_info.HOST_URL + '/webmention') + HOST_URL + '/webmention') self.response.headers.clear() self.response.headers.update(resp.headers) self.response.headers.add('Link', endpoint) diff --git a/appengine_config.py b/appengine_config.py index faf2183..2d4aae3 100644 --- a/appengine_config.py +++ b/appengine_config.py @@ -1,10 +1,12 @@ """Bridgy App Engine config. """ -# import os +import os -# if os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine/'): -# HOST = 'fed.brid.gy' -# HOST_URL = '%s://%s' % (SCHEME, HOST) +from oauth_dropins.webutil.appengine_info import HOST, HOST_URL + +if os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine/'): + HOST = 'fed.brid.gy' + HOST_URL = '%s://%s' % (SCHEME, HOST) # suppresses these INFO logs: # Sandbox prevented access to file "/usr/local/Caskroom/google-cloud-sdk" diff --git a/common.py b/common.py index a8c9575..4435140 100644 --- a/common.py +++ b/common.py @@ -7,12 +7,12 @@ import re import urllib.parse from granary import as2 -from oauth_dropins.webutil import appengine_info from oauth_dropins.webutil import handlers, util import requests from webmentiontools import send from webob import exc +from appengine_config import HOST, HOST_URL import common from models import Response @@ -22,7 +22,7 @@ HEADERS = { 'User-Agent': 'Bridgy Fed (https://fed.brid.gy/)', } # see redirect_wrap() and redirect_unwrap() -REDIRECT_PREFIX = urllib.parse.urljoin(appengine_info.HOST_URL, '/r/') +REDIRECT_PREFIX = urllib.parse.urljoin(HOST_URL, '/r/') XML_UTF8 = "\n" # USERNAME = 'me' # USERNAME_EMOJI = '🌎' # globe @@ -181,7 +181,7 @@ def send_webmentions(handler, activity_wrapped, proxy=None, **response_props): for tag in tags: if tag.get('objectType') == 'mention': url = tag.get('url') - if url and url.startswith(appengine_info.HOST_URL): + if url and url.startswith(HOST_URL): targets.append(redirect_unwrap(url)) if verb in ('follow', 'like', 'share'): @@ -338,7 +338,7 @@ def postprocess_as2_actor(actor): if url: domain = urllib.parse.urlparse(url).netloc actor.setdefault('preferredUsername', domain) - actor['id'] = '%s/%s' % (appengine_info.HOST_URL, domain) + actor['id'] = '%s/%s' % (HOST_URL, domain) actor['url'] = redirect_wrap(url) # required by pixelfed. https://github.com/snarfed/bridgy-fed/issues/39 @@ -377,7 +377,7 @@ def redirect_unwrap(val): elif isinstance(val, str): if val.startswith(REDIRECT_PREFIX): return val[len(REDIRECT_PREFIX):] - elif val.startswith(appengine_info.HOST_URL): + elif val.startswith(HOST_URL): return util.follow_redirects( util.domain_from_link(urllib.parse.urlparse(val).path.strip('/'))).url diff --git a/models.py b/models.py index 07233dc..38eddf7 100644 --- a/models.py +++ b/models.py @@ -8,9 +8,10 @@ import urllib.parse from Crypto.PublicKey import RSA from django_salmon import magicsigs from google.cloud import ndb -from oauth_dropins.webutil import appengine_info from oauth_dropins.webutil.models import StringIdModel +from appengine_config import HOST, HOST_URL + class MagicKey(StringIdModel): """Stores a user's public/private key pair used for Magic Signatures. @@ -108,7 +109,7 @@ class Response(StringIdModel): """Returns the Bridgy Fed proxy URL to render this response as HTML.""" if self.source_mf2 or self.source_as2 or self.source_atom: source, target = self.key.id().split(' ') - return '%s/render?%s' % (appengine_info.HOST_URL, urllib.parse.urlencode({ + return '%s/render?%s' % (HOST_URL, urllib.parse.urlencode({ 'source': source, 'target': target, })) diff --git a/webfinger.py b/webfinger.py index 1895795..3ff03ef 100644 --- a/webfinger.py +++ b/webfinger.py @@ -16,10 +16,11 @@ import urllib.parse import urllib.parse import mf2util -from oauth_dropins.webutil import appengine_info, handlers, util +from oauth_dropins.webutil import handlers, util from oauth_dropins.webutil.util import json_dumps import webapp2 +from appengine_config import HOST, HOST_URL import common import models @@ -123,11 +124,11 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati # use HOST_URL instead of e.g. request.host_url because it # sometimes lost port, e.g. http://localhost:8080 would become # just http://localhost. no clue how or why. - 'href': '%s/%s' % (appengine_info.HOST_URL, domain), + 'href': '%s/%s' % (HOST_URL, domain), }, { 'rel': 'inbox', 'type': common.CONTENT_TYPE_AS2, - 'href': '%s/%s/inbox' % (appengine_info.HOST_URL, domain), + 'href': '%s/%s/inbox' % (HOST_URL, domain), }, # OStatus @@ -143,7 +144,7 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati 'href': key.href(), }, { 'rel': 'salmon', - 'href': '%s/%s/salmon' % (appengine_info.HOST_URL, domain), + 'href': '%s/%s/salmon' % (HOST_URL, domain), }] }) logging.info('Returning WebFinger data: %s', json_dumps(data, indent=2)) diff --git a/webmention.py b/webmention.py index 1063c62..cba2015 100644 --- a/webmention.py +++ b/webmention.py @@ -36,7 +36,7 @@ class WebmentionHandler(webapp2.RequestHandler): target_resp = None # requests.Response def post(self): - logging.info('(Params: %s )', self.request.params.items()) + logging.info('Params: %s', list(self.request.params.items())) # fetch source page source = util.get_required_param(self, 'source')