Webfinger for shared inbox

master
Bob Mottram 2019-08-23 21:03:06 +01:00
parent 0056e67eb3
commit fe59e482df
1 changed files with 19 additions and 5 deletions

View File

@ -79,6 +79,7 @@ def storeWebfingerEndpoint(nickname: str,domain: str,port: int,baseDir: str, \
wfJson: {}) -> bool: wfJson: {}) -> bool:
"""Stores webfinger endpoint for a user to a file """Stores webfinger endpoint for a user to a file
""" """
originalDomain=domain
if port: if port:
if port!=80 and port!=443: if port!=80 and port!=443:
if ':' not in domain: if ':' not in domain:
@ -90,6 +91,11 @@ def storeWebfingerEndpoint(nickname: str,domain: str,port: int,baseDir: str, \
filename=baseDir+wfSubdir+'/'+handle.lower()+'.json' filename=baseDir+wfSubdir+'/'+handle.lower()+'.json'
with open(filename, 'w') as fp: with open(filename, 'w') as fp:
commentjson.dump(wfJson, fp, indent=4, sort_keys=False) commentjson.dump(wfJson, fp, indent=4, sort_keys=False)
if nickname=='inbox':
handle=originalDomain+'@'+domain
filename=baseDir+wfSubdir+'/'+handle.lower()+'.json'
with open(filename, 'w') as fp:
commentjson.dump(wfJson, fp, indent=4, sort_keys=False)
return True return True
def createWebfingerEndpoint(nickname: str,domain: str,port: int, \ def createWebfingerEndpoint(nickname: str,domain: str,port: int, \
@ -102,24 +108,32 @@ def createWebfingerEndpoint(nickname: str,domain: str,port: int, \
if ':' not in domain: if ':' not in domain:
domain=domain+':'+str(port) domain=domain+':'+str(port)
personName=nickname
personId=httpPrefix+"://"+domain+"/users/"+personName
subjectStr="acct:"+personName+"@"+originalDomain
if nickname=='inbox' or nickname==originalDomain:
personName='actor'
personId=httpPrefix+"://"+domain+"/"+personName
subjectStr="acct:"+originalDomain+"@"+originalDomain
account = { account = {
"aliases": [ "aliases": [
httpPrefix+"://"+domain+"/@"+nickname, httpPrefix+"://"+domain+"/@"+personName,
httpPrefix+"://"+domain+"/users/"+nickname personId
], ],
"links": [ "links": [
{ {
"href": httpPrefix+"://"+domain+"/@"+nickname, "href": httpPrefix+"://"+domain+"/@"+personName,
"rel": "http://webfinger.net/rel/profile-page", "rel": "http://webfinger.net/rel/profile-page",
"type": "text/html" "type": "text/html"
}, },
{ {
"href": httpPrefix+"://"+domain+"/users/"+nickname+".atom", "href": personId+".atom",
"rel": "http://schemas.google.com/g/2010#updates-from", "rel": "http://schemas.google.com/g/2010#updates-from",
"type": "application/atom+xml" "type": "application/atom+xml"
}, },
{ {
"href": httpPrefix+"://"+domain+"/users/"+nickname, "href": personId,
"rel": "self", "rel": "self",
"type": "application/activity+json" "type": "application/activity+json"
}, },