Better handling of actor parsing

master
Bob Mottram 2019-09-02 10:43:43 +01:00
parent f083b9c666
commit 8f346fffef
13 changed files with 158 additions and 46 deletions

View File

@ -109,6 +109,9 @@ def acceptFollow(baseDir: str,domain : str,messageJson: {}, \
print('DEBUG: follow Accept received') print('DEBUG: follow Accept received')
thisActor=messageJson['object']['actor'] thisActor=messageJson['object']['actor']
nickname=getNicknameFromActor(thisActor) nickname=getNicknameFromActor(thisActor)
if not nickname:
print('WARN: no nickname found in '+thisActor)
return
acceptedDomain,acceptedPort=getDomainFromActor(thisActor) acceptedDomain,acceptedPort=getDomainFromActor(thisActor)
if not acceptedDomain: if not acceptedDomain:
if debug: if debug:

View File

@ -33,8 +33,11 @@ def outboxAnnounce(baseDir: str,messageJson: {},debug: bool) -> bool:
return False return False
if messageJson['type']=='Announce': if messageJson['type']=='Announce':
if not isinstance(messageJson['object'], str): if not isinstance(messageJson['object'], str):
return return False
nickname=getNicknameFromActor(messageJson['actor']) nickname=getNicknameFromActor(messageJson['actor'])
if not nickname:
print('WARN: no nickname found in '+messageJson['actor'])
return False
domain,port=getDomainFromActor(messageJson['actor']) domain,port=getDomainFromActor(messageJson['actor'])
postFilename=locatePost(baseDir,nickname,domain,messageJson['object']) postFilename=locatePost(baseDir,nickname,domain,messageJson['object'])
if postFilename: if postFilename:
@ -42,13 +45,16 @@ def outboxAnnounce(baseDir: str,messageJson: {},debug: bool) -> bool:
return True return True
if messageJson['type']=='Undo': if messageJson['type']=='Undo':
if not isinstance(messageJson['object'], dict): if not isinstance(messageJson['object'], dict):
return return False
if not messageJson['object'].get('type'): if not messageJson['object'].get('type'):
return False return False
if messageJson['object']['type']=='Announce': if messageJson['object']['type']=='Announce':
if not isinstance(messageJson['object']['object'], str): if not isinstance(messageJson['object']['object'], str):
return return False
nickname=getNicknameFromActor(messageJson['actor']) nickname=getNicknameFromActor(messageJson['actor'])
if not nickname:
print('WARN: no nickname found in '+messageJson['actor'])
return False
domain,port=getDomainFromActor(messageJson['actor']) domain,port=getDomainFromActor(messageJson['actor'])
postFilename=locatePost(baseDir,nickname,domain,messageJson['object']['object']) postFilename=locatePost(baseDir,nickname,domain,messageJson['object']['object'])
if postFilename: if postFilename:
@ -218,7 +224,7 @@ def createAnnounce(session,baseDir: str,federationList: [], \
announceNickname=None announceNickname=None
announceDomain=None announceDomain=None
announcePort=None announcePort=None
if '/users/' in objectUrl: if '/users/' in objectUrl or '/profile/' in objectUrl:
announceNickname=getNicknameFromActor(objectUrl) announceNickname=getNicknameFromActor(objectUrl)
announceDomain,announcePort=getDomainFromActor(objectUrl) announceDomain,announcePort=getDomainFromActor(objectUrl)
@ -329,7 +335,7 @@ def undoAnnounce(session,baseDir: str,federationList: [], \
announceNickname=None announceNickname=None
announceDomain=None announceDomain=None
announcePort=None announcePort=None
if '/users/' in objectUrl: if '/users/' in objectUrl or '/profile/' in objectUrl:
announceNickname=getNicknameFromActor(objectUrl) announceNickname=getNicknameFromActor(objectUrl)
announceDomain,announcePort=getDomainFromActor(objectUrl) announceDomain,announcePort=getDomainFromActor(objectUrl)

View File

@ -333,8 +333,11 @@ def outboxBlock(baseDir: str,httpPrefix: str, \
if debug: if debug:
print('DEBUG: c2s block post not found in inbox or outbox') print('DEBUG: c2s block post not found in inbox or outbox')
print(messageId) print(messageId)
return True return
nicknameBlocked=getNicknameFromActor(messageJson['object']) nicknameBlocked=getNicknameFromActor(messageJson['object'])
if not nicknameBlocked:
print('WARN: unable to find nickname in '+messageJson['object'])
return
domainBlocked,portBlocked=getDomainFromActor(messageJson['object']) domainBlocked,portBlocked=getDomainFromActor(messageJson['object'])
domainBlockedFull=domainBlocked domainBlockedFull=domainBlocked
if portBlocked: if portBlocked:
@ -405,8 +408,11 @@ def outboxUndoBlock(baseDir: str,httpPrefix: str, \
if debug: if debug:
print('DEBUG: c2s undo block post not found in inbox or outbox') print('DEBUG: c2s undo block post not found in inbox or outbox')
print(messageId) print(messageId)
return True return
nicknameBlocked=getNicknameFromActor(messageJson['object']['object']) nicknameBlocked=getNicknameFromActor(messageJson['object']['object'])
if not nicknameBlocked:
print('WARN: unable to find nickname in '+messageJson['object']['object'])
return
domainBlocked,portBlocked=getDomainFromActor(messageJson['object']['object']) domainBlocked,portBlocked=getDomainFromActor(messageJson['object']['object'])
domainBlockedFull=domainBlocked domainBlockedFull=domainBlocked
if portBlocked: if portBlocked:

View File

@ -132,6 +132,9 @@ def capabilitiesAccept(baseDir: str,httpPrefix: str, \
# otherwise create a new capability # otherwise create a new capability
if not ocapAccept: if not ocapAccept:
acceptedActorNickname=getNicknameFromActor(acceptedActor) acceptedActorNickname=getNicknameFromActor(acceptedActor)
if not acceptedActorNickname:
print('WARN: unable to find nickname in '+acceptedActor)
return None
acceptedActorDomain,acceptedActorPort=getDomainFromActor(acceptedActor) acceptedActorDomain,acceptedActorPort=getDomainFromActor(acceptedActor)
if acceptedActorPort: if acceptedActorPort:
ocapId=acceptedActorNickname+'@'+acceptedActorDomain+':'+str(acceptedActorPort)+'#'+createPassword(32) ocapId=acceptedActorNickname+'@'+acceptedActorDomain+':'+str(acceptedActorPort)+'#'+createPassword(32)
@ -213,6 +216,9 @@ def capabilitiesUpdate(baseDir: str,httpPrefix: str, \
# change the id, so that the old capabilities can't continue to be used # change the id, so that the old capabilities can't continue to be used
updateActorNickname=getNicknameFromActor(updateActor) updateActorNickname=getNicknameFromActor(updateActor)
if not updateActorNickname:
print('WARN: unable to find nickname in '+updateActor)
return None
updateActorDomain,updateActorPort=getDomainFromActor(updateActor) updateActorDomain,updateActorPort=getDomainFromActor(updateActor)
if updateActorPort: if updateActorPort:
ocapId=updateActorNickname+'@'+updateActorDomain+':'+str(updateActorPort)+'#'+createPassword(32) ocapId=updateActorNickname+'@'+updateActorDomain+':'+str(updateActorPort)+'#'+createPassword(32)

View File

@ -900,6 +900,11 @@ class PubServer(BaseHTTPRequestHandler):
repeatUrl=self.path.split('?repeat=')[1] repeatUrl=self.path.split('?repeat=')[1]
actor=self.path.split('?repeat=')[0] actor=self.path.split('?repeat=')[0]
self.postToNickname=getNicknameFromActor(actor) self.postToNickname=getNicknameFromActor(actor)
if not self.postToNickname:
print('WARN: unable to find nickname in '+actor)
self.server.GETbusy=False
self._redirect_headers(actor+'/inbox',cookie)
return
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
@ -929,6 +934,11 @@ class PubServer(BaseHTTPRequestHandler):
repeatUrl=self.path.split('?unrepeat=')[1] repeatUrl=self.path.split('?unrepeat=')[1]
actor=self.path.split('?unrepeat=')[0] actor=self.path.split('?unrepeat=')[0]
self.postToNickname=getNicknameFromActor(actor) self.postToNickname=getNicknameFromActor(actor)
if not self.postToNickname:
print('WARN: unable to find nickname in '+actor)
self.server.GETbusy=False
self._redirect_headers(actor+'/inbox',cookie)
return
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
@ -996,6 +1006,11 @@ class PubServer(BaseHTTPRequestHandler):
likeUrl=self.path.split('?like=')[1] likeUrl=self.path.split('?like=')[1]
actor=self.path.split('?like=')[0] actor=self.path.split('?like=')[0]
self.postToNickname=getNicknameFromActor(actor) self.postToNickname=getNicknameFromActor(actor)
if not self.postToNickname:
print('WARN: unable to find nickname in '+actor)
self.server.GETbusy=False
self._redirect_headers(actor+'/inbox',cookie)
return
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
@ -1017,6 +1032,11 @@ class PubServer(BaseHTTPRequestHandler):
likeUrl=self.path.split('?unlike=')[1] likeUrl=self.path.split('?unlike=')[1]
actor=self.path.split('?unlike=')[0] actor=self.path.split('?unlike=')[0]
self.postToNickname=getNicknameFromActor(actor) self.postToNickname=getNicknameFromActor(actor)
if not self.postToNickname:
print('WARN: unable to find nickname in '+actor)
self.server.GETbusy=False
self._redirect_headers(actor+'/inbox',cookie)
return
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain,self.server.port,self.server.useTor)
@ -1052,6 +1072,11 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actor+'/inbox',cookie) self._redirect_headers(actor+'/inbox',cookie)
return return
self.postToNickname=getNicknameFromActor(actor) self.postToNickname=getNicknameFromActor(actor)
if not self.postToNickname:
print('WARN: unable to find nickname in '+actor)
self.server.GETbusy=False
self._redirect_headers(actor+'/inbox',cookie)
return
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port, \ createSession(self.server.domain,self.server.port, \
@ -2195,6 +2220,7 @@ class PubServer(BaseHTTPRequestHandler):
actorStr=self.path.replace('/profiledata','').replace('/editprofile','') actorStr=self.path.replace('/profiledata','').replace('/editprofile','')
nickname=getNicknameFromActor(actorStr) nickname=getNicknameFromActor(actorStr)
if not nickname: if not nickname:
print('WARN: nickname not found in '+actorStr)
self._redirect_headers(actorStr,cookie) self._redirect_headers(actorStr,cookie)
self.server.POSTbusy=False self.server.POSTbusy=False
return return
@ -2659,6 +2685,7 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in shareName: if '&' in shareName:
shareName=shareName.split('&')[0] shareName=shareName.split('&')[0]
shareNickname=getNicknameFromActor(shareActor) shareNickname=getNicknameFromActor(shareActor)
if shareNickname:
shareDomain,sharePort=getDomainFromActor(shareActor) shareDomain,sharePort=getDomainFromActor(shareActor)
removeShare(self.server.baseDir,shareNickname,shareDomain,shareName) removeShare(self.server.baseDir,shareNickname,shareDomain,shareName)
self._redirect_headers(originPathStr+'/inbox',cookie) self._redirect_headers(originPathStr+'/inbox',cookie)
@ -2689,6 +2716,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug: if self.server.debug:
pprint(deleteJson) pprint(deleteJson)
self.postToNickname=getNicknameFromActor(removePostActor) self.postToNickname=getNicknameFromActor(removePostActor)
if self.postToNickname:
self._postToOutbox(deleteJson) self._postToOutbox(deleteJson)
self._redirect_headers(originPathStr+'/outbox',cookie) self._redirect_headers(originPathStr+'/outbox',cookie)
self.server.POSTbusy=False self.server.POSTbusy=False
@ -2779,6 +2807,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/unblockconfirm'): if authorized and self.path.endswith('/unblockconfirm'):
originPathStr=self.path.split('/unblockconfirm')[0] originPathStr=self.path.split('/unblockconfirm')[0]
blockerNickname=getNicknameFromActor(originPathStr) blockerNickname=getNicknameFromActor(originPathStr)
if not blockerNickname:
print('WARN: unable to find nickname in '+originPathStr)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
blockConfirmParams=self.rfile.read(length).decode('utf-8') blockConfirmParams=self.rfile.read(length).decode('utf-8')
if '&submitYes=' in blockConfirmParams: if '&submitYes=' in blockConfirmParams:
@ -2786,6 +2819,11 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in blockingActor: if '&' in blockingActor:
blockingActor=blockingActor.split('&')[0] blockingActor=blockingActor.split('&')[0]
blockingNickname=getNicknameFromActor(blockingActor) blockingNickname=getNicknameFromActor(blockingActor)
if not blockingNickname:
print('WARN: unable to find nickname in '+blockingActor)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
blockingDomain,blockingPort=getDomainFromActor(blockingActor) blockingDomain,blockingPort=getDomainFromActor(blockingActor)
blockingDomainFull=blockingDomain blockingDomainFull=blockingDomain
if blockingPort: if blockingPort:
@ -2810,6 +2848,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/blockconfirm'): if authorized and self.path.endswith('/blockconfirm'):
originPathStr=self.path.split('/blockconfirm')[0] originPathStr=self.path.split('/blockconfirm')[0]
blockerNickname=getNicknameFromActor(originPathStr) blockerNickname=getNicknameFromActor(originPathStr)
if not blockerNickname:
print('WARN: unable to find nickname in '+originPathStr)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
blockConfirmParams=self.rfile.read(length).decode('utf-8') blockConfirmParams=self.rfile.read(length).decode('utf-8')
if '&submitYes=' in blockConfirmParams: if '&submitYes=' in blockConfirmParams:
@ -2817,6 +2860,11 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in blockingActor: if '&' in blockingActor:
blockingActor=blockingActor.split('&')[0] blockingActor=blockingActor.split('&')[0]
blockingNickname=getNicknameFromActor(blockingActor) blockingNickname=getNicknameFromActor(blockingActor)
if not blockingNickname:
print('WARN: unable to find nickname in '+blockingActor)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
blockingDomain,blockingPort=getDomainFromActor(blockingActor) blockingDomain,blockingPort=getDomainFromActor(blockingActor)
blockingDomainFull=blockingDomain blockingDomainFull=blockingDomain
if blockingPort: if blockingPort:
@ -2842,6 +2890,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/personoptions'): if authorized and self.path.endswith('/personoptions'):
originPathStr=self.path.split('/personoptions')[0] originPathStr=self.path.split('/personoptions')[0]
chooserNickname=getNicknameFromActor(originPathStr) chooserNickname=getNicknameFromActor(originPathStr)
if not chooserNickname:
print('WARN: unable to find nickname in '+originPathStr)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
optionsConfirmParams=self.rfile.read(length).decode('utf-8').replace('%3A',':').replace('%2F','/') optionsConfirmParams=self.rfile.read(length).decode('utf-8').replace('%3A',':').replace('%2F','/')
# actor for the person # actor for the person
@ -2860,6 +2913,11 @@ class PubServer(BaseHTTPRequestHandler):
postUrl=postUrl.split('&')[0] postUrl=postUrl.split('&')[0]
optionsNickname=getNicknameFromActor(optionsActor) optionsNickname=getNicknameFromActor(optionsActor)
if not optionsNickname:
print('WARN: unable to find nickname in '+optionsActor)
self._redirect_headers(originPathStr,cookie)
self.server.POSTbusy=False
return
optionsDomain,optionsPort=getDomainFromActor(optionsActor) optionsDomain,optionsPort=getDomainFromActor(optionsActor)
optionsDomainFull=optionsDomain optionsDomainFull=optionsDomain
if optionsPort: if optionsPort:

View File

@ -68,7 +68,7 @@ def createDelete(session,baseDir: str,federationList: [], \
deleteNickname=None deleteNickname=None
deleteDomain=None deleteDomain=None
deletePort=None deletePort=None
if '/users/' in objectUrl: if '/users/' in objectUrl or '/profile/' in objectUrl:
deleteNickname=getNicknameFromActor(objectUrl) deleteNickname=getNicknameFromActor(objectUrl)
deleteDomain,deletePort=getDomainFromActor(objectUrl) deleteDomain,deletePort=getDomainFromActor(objectUrl)

View File

@ -737,6 +737,9 @@ if args.follow:
sys.exit() sys.exit()
followNickname=getNicknameFromActor(args.follow) followNickname=getNicknameFromActor(args.follow)
if not followNickname:
print('Unable to find nickname in '+args.follow)
sys.exit()
followDomain,followPort=getDomainFromActor(args.follow) followDomain,followPort=getDomainFromActor(args.follow)
session = createSession(domain,port,useTor) session = createSession(domain,port,useTor)
@ -772,6 +775,9 @@ if args.unfollow:
sys.exit() sys.exit()
followNickname=getNicknameFromActor(args.unfollow) followNickname=getNicknameFromActor(args.unfollow)
if not followNickname:
print('WARN: unable to find nickname in '+args.unfollow)
sys.exit()
followDomain,followPort=getDomainFromActor(args.unfollow) followDomain,followPort=getDomainFromActor(args.unfollow)
session = createSession(domain,port,useTor) session = createSession(domain,port,useTor)

View File

@ -39,6 +39,9 @@ def isFollowingActor(baseDir: str,nickname: str,domain: str,actor: str) -> bool:
if actor in open(followingFile).read(): if actor in open(followingFile).read():
return True return True
followingNickname=getNicknameFromActor(actor) followingNickname=getNicknameFromActor(actor)
if not followingNickname:
print('WARN: unable to find nickname in '+actor)
return False
followingDomain,followingPort=getDomainFromActor(actor) followingDomain,followingPort=getDomainFromActor(actor)
followingHandle=followingNickname+'@'+followingDomain followingHandle=followingNickname+'@'+followingDomain
if followingPort: if followingPort:
@ -803,6 +806,9 @@ def outboxUndoFollow(baseDir: str,messageJson: {},debug: bool) -> None:
print('DEBUG: undo follow arrived in outbox') print('DEBUG: undo follow arrived in outbox')
nicknameFollower=getNicknameFromActor(messageJson['object']['actor']) nicknameFollower=getNicknameFromActor(messageJson['object']['actor'])
if not nicknameFollower:
print('WARN: unable to find nickname in '+messageJson['object']['actor'])
return
domainFollower,portFollower=getDomainFromActor(messageJson['object']['actor']) domainFollower,portFollower=getDomainFromActor(messageJson['object']['actor'])
domainFollowerFull=domainFollower domainFollowerFull=domainFollower
if portFollower: if portFollower:
@ -811,6 +817,9 @@ def outboxUndoFollow(baseDir: str,messageJson: {},debug: bool) -> None:
domainFollowerFull=domainFollower+':'+str(portFollower) domainFollowerFull=domainFollower+':'+str(portFollower)
nicknameFollowing=getNicknameFromActor(messageJson['object']['object']) nicknameFollowing=getNicknameFromActor(messageJson['object']['object'])
if not nicknameFollowing:
print('WARN: unable to find nickname in '+messageJson['object']['object'])
return
domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object']) domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object'])
domainFollowingFull=domainFollowing domainFollowingFull=domainFollowing
if portFollowing: if portFollowing:

View File

@ -188,11 +188,10 @@ def savePostToInboxQueue(baseDir: str,httpPrefix: str, \
if postJsonObject.get('actor'): if postJsonObject.get('actor'):
actor=postJsonObject['actor'] actor=postJsonObject['actor']
postNickname=getNicknameFromActor(postJsonObject['actor']) postNickname=getNicknameFromActor(postJsonObject['actor'])
postDomain,postPort=getDomainFromActor(postJsonObject['actor'])
if not postNickname: if not postNickname:
pprint(postJsonObject) print('No post Nickname in actor '+postJsonObject['actor'])
print('No post Nickname in actor')
return None return None
postDomain,postPort=getDomainFromActor(postJsonObject['actor'])
if not postDomain: if not postDomain:
pprint(postJsonObject) pprint(postJsonObject)
print('No post Domain in actor') print('No post Domain in actor')
@ -511,6 +510,9 @@ def receiveUndoFollow(session,baseDir: str,httpPrefix: str, \
return False return False
nicknameFollower=getNicknameFromActor(messageJson['object']['actor']) nicknameFollower=getNicknameFromActor(messageJson['object']['actor'])
if not nicknameFollower:
print('WARN: unable to find nickname in '+messageJson['object']['actor'])
return False
domainFollower,portFollower=getDomainFromActor(messageJson['object']['actor']) domainFollower,portFollower=getDomainFromActor(messageJson['object']['actor'])
domainFollowerFull=domainFollower domainFollowerFull=domainFollower
if portFollower: if portFollower:
@ -519,6 +521,9 @@ def receiveUndoFollow(session,baseDir: str,httpPrefix: str, \
domainFollowerFull=domainFollower+':'+str(portFollower) domainFollowerFull=domainFollower+':'+str(portFollower)
nicknameFollowing=getNicknameFromActor(messageJson['object']['object']) nicknameFollowing=getNicknameFromActor(messageJson['object']['object'])
if not nicknameFollowing:
print('WARN: unable to find nickname in '+messageJson['object']['object'])
return False
domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object']) domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object'])
domainFollowingFull=domainFollowing domainFollowingFull=domainFollowing
if portFollowing: if portFollowing:
@ -679,8 +684,9 @@ def receiveUpdate(session,baseDir: str, \
messageJson['object']['type']=='Service': messageJson['object']['type']=='Service':
if messageJson['object'].get('url') and messageJson['object'].get('id'): if messageJson['object'].get('url') and messageJson['object'].get('id'):
print('Request to update actor: '+messageJson['actor']) print('Request to update actor: '+messageJson['actor'])
updateDomain,updatePort=getDomainFromActor(messageJson['actor'])
updateNickname=getNicknameFromActor(messageJson['actor']) updateNickname=getNicknameFromActor(messageJson['actor'])
if updateNickname:
updateDomain,updatePort=getDomainFromActor(messageJson['actor'])
if personReceiveUpdate(baseDir, \ if personReceiveUpdate(baseDir, \
domain,port, \ domain,port, \
updateNickname,updateDomain,updatePort, \ updateNickname,updateDomain,updatePort, \
@ -691,8 +697,9 @@ def receiveUpdate(session,baseDir: str, \
return True return True
if messageJson['object'].get('capability') and messageJson['object'].get('scope'): if messageJson['object'].get('capability') and messageJson['object'].get('scope'):
domain,tempPort=getDomainFromActor(messageJson['object']['scope'])
nickname=getNicknameFromActor(messageJson['object']['scope']) nickname=getNicknameFromActor(messageJson['object']['scope'])
if nickname:
domain,tempPort=getDomainFromActor(messageJson['object']['scope'])
if messageJson['object']['type']=='Capability': if messageJson['object']['type']=='Capability':
if capabilitiesReceiveUpdate(baseDir,nickname,domain,port, if capabilitiesReceiveUpdate(baseDir,nickname,domain,port,
@ -994,7 +1001,6 @@ def populateReplies(baseDir :str,httpPrefix :str,domain :str, \
return False return False
replyToNickname=getNicknameFromActor(replyTo) replyToNickname=getNicknameFromActor(replyTo)
if not replyToNickname: if not replyToNickname:
if debug:
print('DEBUG: no nickname found for '+replyTo) print('DEBUG: no nickname found for '+replyTo)
return False return False
replyToDomain,replyToPort=getDomainFromActor(replyTo) replyToDomain,replyToPort=getDomainFromActor(replyTo)

View File

@ -170,7 +170,7 @@ def like(session,baseDir: str,federationList: [],nickname: str,domain: str,port:
likedPostNickname=None likedPostNickname=None
likedPostDomain=None likedPostDomain=None
likedPostPort=None likedPostPort=None
if '/users/' in objectUrl: if '/users/' in objectUrl or '/profile/' in objectUrl:
likedPostNickname=getNicknameFromActor(objectUrl) likedPostNickname=getNicknameFromActor(objectUrl)
likedPostDomain,likedPostPort=getDomainFromActor(objectUrl) likedPostDomain,likedPostPort=getDomainFromActor(objectUrl)
@ -267,7 +267,7 @@ def undolike(session,baseDir: str,federationList: [],nickname: str,domain: str,p
likedPostNickname=None likedPostNickname=None
likedPostDomain=None likedPostDomain=None
likedPostPort=None likedPostPort=None
if '/users/' in objectUrl: if '/users/' in objectUrl or '/profile/' in objectUrl:
likedPostNickname=getNicknameFromActor(objectUrl) likedPostNickname=getNicknameFromActor(objectUrl)
likedPostDomain,likedPostPort=getDomainFromActor(objectUrl) likedPostDomain,likedPostPort=getDomainFromActor(objectUrl)

View File

@ -1987,6 +1987,9 @@ def sendCapabilitiesUpdate(session,baseDir: str,httpPrefix: str, \
clientToServer=False clientToServer=False
followerNickname=getNicknameFromActor(followerUrl) followerNickname=getNicknameFromActor(followerUrl)
if not followerNickname:
print('WARN: unable to find nickname in '+followerUrl)
return 1
followerDomain,followerPort=getDomainFromActor(followerUrl) followerDomain,followerPort=getDomainFromActor(followerUrl)
return sendSignedJson(updateJson,session,baseDir, \ return sendSignedJson(updateJson,session,baseDir, \
nickname,domain,port, \ nickname,domain,port, \

View File

@ -180,6 +180,9 @@ def outboxDelegate(baseDir: str,authenticatedNickname: str,messageJson: {},debug
if canDelegate==False: if canDelegate==False:
return False return False
nickname=getNicknameFromActor(messageJson['object']['actor']) nickname=getNicknameFromActor(messageJson['object']['actor'])
if not nickname:
print('WARN: unable to find nickname in '+messageJson['object']['actor'])
return False
domainFull=domain domainFull=domain
if port: if port:
if port!=80 and port!=443: if port!=80 and port!=443:

View File

@ -388,6 +388,8 @@ def htmlEditProfile(baseDir: str,path: str,domain: str,port: int) -> str:
pathOriginal=path pathOriginal=path
path=path.replace('/inbox','').replace('/outbox','').replace('/shares','') path=path.replace('/inbox','').replace('/outbox','').replace('/shares','')
nickname=getNicknameFromActor(path) nickname=getNicknameFromActor(path)
if not nickname:
return ''
domainFull=domain domainFull=domain
if port: if port:
if port!=80 and port!=443: if port!=80 and port!=443:
@ -1416,6 +1418,7 @@ def individualPostAsHtml(baseDir: str, \
#avatarPosition=' class="right"' #avatarPosition=' class="right"'
if '/statuses/' in postJsonObject['object']['inReplyTo']: if '/statuses/' in postJsonObject['object']['inReplyTo']:
replyNickname=getNicknameFromActor(postJsonObject['object']['inReplyTo']) replyNickname=getNicknameFromActor(postJsonObject['object']['inReplyTo'])
if replyNickname:
replyDomain,replyPort=getDomainFromActor(postJsonObject['object']['inReplyTo']) replyDomain,replyPort=getDomainFromActor(postJsonObject['object']['inReplyTo'])
if replyNickname and replyDomain: if replyNickname and replyDomain:
replyDisplayName=getDisplayName(postJsonObject['object']['inReplyTo'],personCache) replyDisplayName=getDisplayName(postJsonObject['object']['inReplyTo'],personCache)
@ -1423,10 +1426,13 @@ def individualPostAsHtml(baseDir: str, \
titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">'+replyDisplayName+'</a>' titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">'+replyDisplayName+'</a>'
else: else:
titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">@'+replyNickname+'@'+replyDomain+'</a>' titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">@'+replyNickname+'@'+replyDomain+'</a>'
else:
titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">@unknown</a>'
else: else:
postDomain=postJsonObject['object']['inReplyTo'].replace('https://','').replace('http://','').replace('dat://','') postDomain=postJsonObject['object']['inReplyTo'].replace('https://','').replace('http://','').replace('dat://','')
if '/' in postDomain: if '/' in postDomain:
postDomain=postDomain.split('/',1)[0] postDomain=postDomain.split('/',1)[0]
if postDomain:
titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">'+postDomain+'</a>' titleStr+=' <img src="/icons/reply.png" class="announceOrReply"/> <a href="'+postJsonObject['object']['inReplyTo']+'">'+postDomain+'</a>'
attachmentStr='' attachmentStr=''
if postJsonObject['object'].get('attachment'): if postJsonObject['object'].get('attachment'):