kopia lustrzana https://github.com/snarfed/bridgy-fed
rodzic
fefcbbb77e
commit
990ec47c89
|
@ -87,8 +87,7 @@ def redir(to):
|
||||||
if domain:
|
if domain:
|
||||||
if domain in DOMAIN_ALLOWLIST:
|
if domain in DOMAIN_ALLOWLIST:
|
||||||
break
|
break
|
||||||
g.user = Web.get_by_id(domain)
|
if Web.get_by_id(domain):
|
||||||
if g.user:
|
|
||||||
logger.info(f'Found web user for domain {domain}')
|
logger.info(f'Found web user for domain {domain}')
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
|
53
web.py
53
web.py
|
@ -494,8 +494,8 @@ def check_web_site():
|
||||||
return render_template('enter_web_site.html'), 400
|
return render_template('enter_web_site.html'), 400
|
||||||
|
|
||||||
try:
|
try:
|
||||||
g.user = Web.get_or_create(domain, direct=True)
|
user = Web.get_or_create(domain, direct=True)
|
||||||
g.user = g.user.verify()
|
user = user.verify()
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
code, body = util.interpret_http_exception(e)
|
code, body = util.interpret_http_exception(e)
|
||||||
if code:
|
if code:
|
||||||
|
@ -503,8 +503,8 @@ def check_web_site():
|
||||||
return render_template('enter_web_site.html')
|
return render_template('enter_web_site.html')
|
||||||
raise
|
raise
|
||||||
|
|
||||||
g.user.put()
|
user.put()
|
||||||
return redirect(g.user.user_page_path())
|
return redirect(user.user_page_path())
|
||||||
|
|
||||||
|
|
||||||
@app.post('/webmention')
|
@app.post('/webmention')
|
||||||
|
@ -524,8 +524,8 @@ def webmention_external():
|
||||||
if not domain:
|
if not domain:
|
||||||
error(f'Bad source URL {source}')
|
error(f'Bad source URL {source}')
|
||||||
|
|
||||||
g.user = Web.get_by_id(domain)
|
user = Web.get_by_id(domain)
|
||||||
if not g.user:
|
if not user:
|
||||||
error(f'No user found for domain {domain}')
|
error(f'No user found for domain {domain}')
|
||||||
|
|
||||||
return common.create_task('webmention', **request.form)
|
return common.create_task('webmention', **request.form)
|
||||||
|
@ -537,14 +537,17 @@ def webmention_interactive():
|
||||||
|
|
||||||
...eg the update profile button on user pages.
|
...eg the update profile button on user pages.
|
||||||
"""
|
"""
|
||||||
|
source = flask_util.get_required_param('source').strip()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
webmention_external()
|
webmention_external()
|
||||||
flash(f'Updating fediverse profile from <a href="{g.user.web_url()}">{g.user.key.id()}</a>...')
|
user = Web(id=util.domain_from_link(source, minimize=False))
|
||||||
|
flash(f'Updating fediverse profile from <a href="{user.web_url()}">{user.key.id()}</a>...')
|
||||||
|
return redirect(user.user_page_path(), code=302)
|
||||||
|
|
||||||
except HTTPException as e:
|
except HTTPException as e:
|
||||||
flash(util.linkify(str(e.description), pretty=True))
|
flash(util.linkify(str(e.description), pretty=True))
|
||||||
|
return redirect('/', code=302)
|
||||||
path = g.user.user_page_path() if g.user else '/'
|
|
||||||
return redirect(path, code=302)
|
|
||||||
|
|
||||||
|
|
||||||
@app.post('/queue/webmention')
|
@app.post('/queue/webmention')
|
||||||
|
@ -558,9 +561,9 @@ def webmention_task():
|
||||||
domain = util.domain_from_link(source, minimize=False)
|
domain = util.domain_from_link(source, minimize=False)
|
||||||
logger.info(f'webmention from {domain}')
|
logger.info(f'webmention from {domain}')
|
||||||
|
|
||||||
g.user = Web.get_by_id(domain)
|
user = Web.get_by_id(domain)
|
||||||
logger.info(f'User: {g.user.key}')
|
logger.info(f'User: {user.key}')
|
||||||
if not g.user:
|
if not user:
|
||||||
error(f'No user found for domain {domain}', status=304)
|
error(f'No user found for domain {domain}', status=304)
|
||||||
|
|
||||||
# fetch source page
|
# fetch source page
|
||||||
|
@ -585,7 +588,7 @@ def webmention_task():
|
||||||
'id': id,
|
'id': id,
|
||||||
'objectType': 'activity',
|
'objectType': 'activity',
|
||||||
'verb': 'delete',
|
'verb': 'delete',
|
||||||
'actor': g.user.web_url(),
|
'actor': user.web_url(),
|
||||||
'object': source,
|
'object': source,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -595,27 +598,27 @@ def webmention_task():
|
||||||
authors = obj.mf2['properties'].setdefault('author', [])
|
authors = obj.mf2['properties'].setdefault('author', [])
|
||||||
author_urls = microformats2.get_string_urls(authors)
|
author_urls = microformats2.get_string_urls(authors)
|
||||||
if not author_urls:
|
if not author_urls:
|
||||||
authors.append(g.user.web_url())
|
authors.append(user.web_url())
|
||||||
elif not g.user.is_web_url(author_urls[0]):
|
elif not user.is_web_url(author_urls[0]):
|
||||||
logger.info(f'Overriding author {author_urls[0]} with {g.user.web_url()}')
|
logger.info(f'Overriding author {author_urls[0]} with {user.web_url()}')
|
||||||
if isinstance(authors[0], dict):
|
if isinstance(authors[0], dict):
|
||||||
authors[0]['properties']['url'] = [g.user.web_url()]
|
authors[0]['properties']['url'] = [user.web_url()]
|
||||||
else:
|
else:
|
||||||
authors[0] = g.user.web_url()
|
authors[0] = user.web_url()
|
||||||
|
|
||||||
# if source is home page, update Web user and send an actor Update to
|
# if source is home page, update Web user and send an actor Update to
|
||||||
# followers' instances
|
# followers' instances
|
||||||
if g.user and (g.user.key.id() == obj.key.id()
|
if user and (user.key.id() == obj.key.id()
|
||||||
or g.user.is_web_url(obj.key.id())):
|
or user.is_web_url(obj.key.id())):
|
||||||
logger.info(f'Converted to AS1: {obj.type}: {json_dumps(obj.as1, indent=2)}')
|
logger.info(f'Converted to AS1: {obj.type}: {json_dumps(obj.as1, indent=2)}')
|
||||||
obj.put()
|
obj.put()
|
||||||
g.user.obj = obj
|
user.obj = obj
|
||||||
g.user.put()
|
user.put()
|
||||||
|
|
||||||
logger.info('Wrapping in Update for home page user profile')
|
logger.info('Wrapping in Update for home page user profile')
|
||||||
actor_as1 = {
|
actor_as1 = {
|
||||||
**obj.as1,
|
**obj.as1,
|
||||||
'id': g.user.web_url(),
|
'id': user.web_url(),
|
||||||
'updated': util.now().isoformat(),
|
'updated': util.now().isoformat(),
|
||||||
}
|
}
|
||||||
id = common.host_url(f'{obj.key.id()}#update-{util.now().isoformat()}')
|
id = common.host_url(f'{obj.key.id()}#update-{util.now().isoformat()}')
|
||||||
|
@ -623,7 +626,7 @@ def webmention_task():
|
||||||
'objectType': 'activity',
|
'objectType': 'activity',
|
||||||
'verb': 'update',
|
'verb': 'update',
|
||||||
'id': id,
|
'id': id,
|
||||||
'actor': g.user.web_url(),
|
'actor': user.web_url(),
|
||||||
'object': actor_as1,
|
'object': actor_as1,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue