diff --git a/acceptreject.py b/acceptreject.py
index 05e7dcbe..c40129bd 100644
--- a/acceptreject.py
+++ b/acceptreject.py
@@ -109,6 +109,9 @@ def acceptFollow(baseDir: str,domain : str,messageJson: {}, \
print('DEBUG: follow Accept received')
thisActor=messageJson['object']['actor']
nickname=getNicknameFromActor(thisActor)
+ if not nickname:
+ print('WARN: no nickname found in '+thisActor)
+ return
acceptedDomain,acceptedPort=getDomainFromActor(thisActor)
if not acceptedDomain:
if debug:
diff --git a/announce.py b/announce.py
index a7dfad29..18e9353b 100644
--- a/announce.py
+++ b/announce.py
@@ -33,8 +33,11 @@ def outboxAnnounce(baseDir: str,messageJson: {},debug: bool) -> bool:
return False
if messageJson['type']=='Announce':
if not isinstance(messageJson['object'], str):
- return
+ return False
nickname=getNicknameFromActor(messageJson['actor'])
+ if not nickname:
+ print('WARN: no nickname found in '+messageJson['actor'])
+ return False
domain,port=getDomainFromActor(messageJson['actor'])
postFilename=locatePost(baseDir,nickname,domain,messageJson['object'])
if postFilename:
@@ -42,13 +45,16 @@ def outboxAnnounce(baseDir: str,messageJson: {},debug: bool) -> bool:
return True
if messageJson['type']=='Undo':
if not isinstance(messageJson['object'], dict):
- return
+ return False
if not messageJson['object'].get('type'):
return False
if messageJson['object']['type']=='Announce':
if not isinstance(messageJson['object']['object'], str):
- return
+ return False
nickname=getNicknameFromActor(messageJson['actor'])
+ if not nickname:
+ print('WARN: no nickname found in '+messageJson['actor'])
+ return False
domain,port=getDomainFromActor(messageJson['actor'])
postFilename=locatePost(baseDir,nickname,domain,messageJson['object']['object'])
if postFilename:
@@ -218,7 +224,7 @@ def createAnnounce(session,baseDir: str,federationList: [], \
announceNickname=None
announceDomain=None
announcePort=None
- if '/users/' in objectUrl:
+ if '/users/' in objectUrl or '/profile/' in objectUrl:
announceNickname=getNicknameFromActor(objectUrl)
announceDomain,announcePort=getDomainFromActor(objectUrl)
@@ -329,7 +335,7 @@ def undoAnnounce(session,baseDir: str,federationList: [], \
announceNickname=None
announceDomain=None
announcePort=None
- if '/users/' in objectUrl:
+ if '/users/' in objectUrl or '/profile/' in objectUrl:
announceNickname=getNicknameFromActor(objectUrl)
announceDomain,announcePort=getDomainFromActor(objectUrl)
diff --git a/blocking.py b/blocking.py
index 8318eded..f1f00093 100644
--- a/blocking.py
+++ b/blocking.py
@@ -333,8 +333,11 @@ def outboxBlock(baseDir: str,httpPrefix: str, \
if debug:
print('DEBUG: c2s block post not found in inbox or outbox')
print(messageId)
- return True
+ return
nicknameBlocked=getNicknameFromActor(messageJson['object'])
+ if not nicknameBlocked:
+ print('WARN: unable to find nickname in '+messageJson['object'])
+ return
domainBlocked,portBlocked=getDomainFromActor(messageJson['object'])
domainBlockedFull=domainBlocked
if portBlocked:
@@ -405,8 +408,11 @@ def outboxUndoBlock(baseDir: str,httpPrefix: str, \
if debug:
print('DEBUG: c2s undo block post not found in inbox or outbox')
print(messageId)
- return True
+ return
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'])
domainBlockedFull=domainBlocked
if portBlocked:
diff --git a/capabilities.py b/capabilities.py
index 302d3ecc..d96e3933 100644
--- a/capabilities.py
+++ b/capabilities.py
@@ -132,6 +132,9 @@ def capabilitiesAccept(baseDir: str,httpPrefix: str, \
# otherwise create a new capability
if not ocapAccept:
acceptedActorNickname=getNicknameFromActor(acceptedActor)
+ if not acceptedActorNickname:
+ print('WARN: unable to find nickname in '+acceptedActor)
+ return None
acceptedActorDomain,acceptedActorPort=getDomainFromActor(acceptedActor)
if acceptedActorPort:
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
updateActorNickname=getNicknameFromActor(updateActor)
+ if not updateActorNickname:
+ print('WARN: unable to find nickname in '+updateActor)
+ return None
updateActorDomain,updateActorPort=getDomainFromActor(updateActor)
if updateActorPort:
ocapId=updateActorNickname+'@'+updateActorDomain+':'+str(updateActorPort)+'#'+createPassword(32)
diff --git a/daemon.py b/daemon.py
index 54f415cd..424ad0fe 100644
--- a/daemon.py
+++ b/daemon.py
@@ -900,6 +900,11 @@ class PubServer(BaseHTTPRequestHandler):
repeatUrl=self.path.split('?repeat=')[1]
actor=self.path.split('?repeat=')[0]
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:
self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor)
@@ -929,6 +934,11 @@ class PubServer(BaseHTTPRequestHandler):
repeatUrl=self.path.split('?unrepeat=')[1]
actor=self.path.split('?unrepeat=')[0]
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:
self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor)
@@ -996,6 +1006,11 @@ class PubServer(BaseHTTPRequestHandler):
likeUrl=self.path.split('?like=')[1]
actor=self.path.split('?like=')[0]
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:
self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor)
@@ -1017,6 +1032,11 @@ class PubServer(BaseHTTPRequestHandler):
likeUrl=self.path.split('?unlike=')[1]
actor=self.path.split('?unlike=')[0]
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:
self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor)
@@ -1052,6 +1072,11 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actor+'/inbox',cookie)
return
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:
self.server.session= \
createSession(self.server.domain,self.server.port, \
@@ -2195,6 +2220,7 @@ class PubServer(BaseHTTPRequestHandler):
actorStr=self.path.replace('/profiledata','').replace('/editprofile','')
nickname=getNicknameFromActor(actorStr)
if not nickname:
+ print('WARN: nickname not found in '+actorStr)
self._redirect_headers(actorStr,cookie)
self.server.POSTbusy=False
return
@@ -2659,8 +2685,9 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in shareName:
shareName=shareName.split('&')[0]
shareNickname=getNicknameFromActor(shareActor)
- shareDomain,sharePort=getDomainFromActor(shareActor)
- removeShare(self.server.baseDir,shareNickname,shareDomain,shareName)
+ if shareNickname:
+ shareDomain,sharePort=getDomainFromActor(shareActor)
+ removeShare(self.server.baseDir,shareNickname,shareDomain,shareName)
self._redirect_headers(originPathStr+'/inbox',cookie)
self.server.POSTbusy=False
return
@@ -2689,7 +2716,8 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
pprint(deleteJson)
self.postToNickname=getNicknameFromActor(removePostActor)
- self._postToOutbox(deleteJson)
+ if self.postToNickname:
+ self._postToOutbox(deleteJson)
self._redirect_headers(originPathStr+'/outbox',cookie)
self.server.POSTbusy=False
return
@@ -2779,6 +2807,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/unblockconfirm'):
originPathStr=self.path.split('/unblockconfirm')[0]
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'])
blockConfirmParams=self.rfile.read(length).decode('utf-8')
if '&submitYes=' in blockConfirmParams:
@@ -2786,6 +2819,11 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in blockingActor:
blockingActor=blockingActor.split('&')[0]
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)
blockingDomainFull=blockingDomain
if blockingPort:
@@ -2810,6 +2848,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/blockconfirm'):
originPathStr=self.path.split('/blockconfirm')[0]
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'])
blockConfirmParams=self.rfile.read(length).decode('utf-8')
if '&submitYes=' in blockConfirmParams:
@@ -2817,6 +2860,11 @@ class PubServer(BaseHTTPRequestHandler):
if '&' in blockingActor:
blockingActor=blockingActor.split('&')[0]
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)
blockingDomainFull=blockingDomain
if blockingPort:
@@ -2842,6 +2890,11 @@ class PubServer(BaseHTTPRequestHandler):
if authorized and self.path.endswith('/personoptions'):
originPathStr=self.path.split('/personoptions')[0]
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'])
optionsConfirmParams=self.rfile.read(length).decode('utf-8').replace('%3A',':').replace('%2F','/')
# actor for the person
@@ -2860,6 +2913,11 @@ class PubServer(BaseHTTPRequestHandler):
postUrl=postUrl.split('&')[0]
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)
optionsDomainFull=optionsDomain
if optionsPort:
diff --git a/delete.py b/delete.py
index f631f9fa..389b6871 100644
--- a/delete.py
+++ b/delete.py
@@ -68,7 +68,7 @@ def createDelete(session,baseDir: str,federationList: [], \
deleteNickname=None
deleteDomain=None
deletePort=None
- if '/users/' in objectUrl:
+ if '/users/' in objectUrl or '/profile/' in objectUrl:
deleteNickname=getNicknameFromActor(objectUrl)
deleteDomain,deletePort=getDomainFromActor(objectUrl)
diff --git a/epicyon.py b/epicyon.py
index 17f9e4df..6e297e74 100644
--- a/epicyon.py
+++ b/epicyon.py
@@ -737,6 +737,9 @@ if args.follow:
sys.exit()
followNickname=getNicknameFromActor(args.follow)
+ if not followNickname:
+ print('Unable to find nickname in '+args.follow)
+ sys.exit()
followDomain,followPort=getDomainFromActor(args.follow)
session = createSession(domain,port,useTor)
@@ -772,6 +775,9 @@ if args.unfollow:
sys.exit()
followNickname=getNicknameFromActor(args.unfollow)
+ if not followNickname:
+ print('WARN: unable to find nickname in '+args.unfollow)
+ sys.exit()
followDomain,followPort=getDomainFromActor(args.unfollow)
session = createSession(domain,port,useTor)
diff --git a/follow.py b/follow.py
index 39f7cba5..31509499 100644
--- a/follow.py
+++ b/follow.py
@@ -39,6 +39,9 @@ def isFollowingActor(baseDir: str,nickname: str,domain: str,actor: str) -> bool:
if actor in open(followingFile).read():
return True
followingNickname=getNicknameFromActor(actor)
+ if not followingNickname:
+ print('WARN: unable to find nickname in '+actor)
+ return False
followingDomain,followingPort=getDomainFromActor(actor)
followingHandle=followingNickname+'@'+followingDomain
if followingPort:
@@ -803,6 +806,9 @@ def outboxUndoFollow(baseDir: str,messageJson: {},debug: bool) -> None:
print('DEBUG: undo follow arrived in outbox')
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'])
domainFollowerFull=domainFollower
if portFollower:
@@ -811,6 +817,9 @@ def outboxUndoFollow(baseDir: str,messageJson: {},debug: bool) -> None:
domainFollowerFull=domainFollower+':'+str(portFollower)
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'])
domainFollowingFull=domainFollowing
if portFollowing:
diff --git a/inbox.py b/inbox.py
index d0353682..a50e9e1a 100644
--- a/inbox.py
+++ b/inbox.py
@@ -188,11 +188,10 @@ def savePostToInboxQueue(baseDir: str,httpPrefix: str, \
if postJsonObject.get('actor'):
actor=postJsonObject['actor']
postNickname=getNicknameFromActor(postJsonObject['actor'])
- postDomain,postPort=getDomainFromActor(postJsonObject['actor'])
if not postNickname:
- pprint(postJsonObject)
- print('No post Nickname in actor')
+ print('No post Nickname in actor '+postJsonObject['actor'])
return None
+ postDomain,postPort=getDomainFromActor(postJsonObject['actor'])
if not postDomain:
pprint(postJsonObject)
print('No post Domain in actor')
@@ -511,6 +510,9 @@ def receiveUndoFollow(session,baseDir: str,httpPrefix: str, \
return False
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'])
domainFollowerFull=domainFollower
if portFollower:
@@ -519,6 +521,9 @@ def receiveUndoFollow(session,baseDir: str,httpPrefix: str, \
domainFollowerFull=domainFollower+':'+str(portFollower)
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'])
domainFollowingFull=domainFollowing
if portFollowing:
@@ -679,30 +684,32 @@ def receiveUpdate(session,baseDir: str, \
messageJson['object']['type']=='Service':
if messageJson['object'].get('url') and messageJson['object'].get('id'):
print('Request to update actor: '+messageJson['actor'])
- updateDomain,updatePort=getDomainFromActor(messageJson['actor'])
- updateNickname=getNicknameFromActor(messageJson['actor'])
- if personReceiveUpdate(baseDir, \
- domain,port, \
- updateNickname,updateDomain,updatePort, \
- messageJson['object'], \
- personCache,debug):
- if debug:
- print('DEBUG: Profile update was received for '+messageJson['object']['url'])
- return True
+ updateNickname=getNicknameFromActor(messageJson['actor'])
+ if updateNickname:
+ updateDomain,updatePort=getDomainFromActor(messageJson['actor'])
+ if personReceiveUpdate(baseDir, \
+ domain,port, \
+ updateNickname,updateDomain,updatePort, \
+ messageJson['object'], \
+ personCache,debug):
+ if debug:
+ print('DEBUG: Profile update was received for '+messageJson['object']['url'])
+ return True
if messageJson['object'].get('capability') and messageJson['object'].get('scope'):
- domain,tempPort=getDomainFromActor(messageJson['object']['scope'])
nickname=getNicknameFromActor(messageJson['object']['scope'])
+ if nickname:
+ domain,tempPort=getDomainFromActor(messageJson['object']['scope'])
- if messageJson['object']['type']=='Capability':
- if capabilitiesReceiveUpdate(baseDir,nickname,domain,port,
- messageJson['actor'], \
- messageJson['object']['id'], \
- messageJson['object']['capability'], \
- debug):
- if debug:
- print('DEBUG: An update was received')
- return True
+ if messageJson['object']['type']=='Capability':
+ if capabilitiesReceiveUpdate(baseDir,nickname,domain,port,
+ messageJson['actor'], \
+ messageJson['object']['id'], \
+ messageJson['object']['capability'], \
+ debug):
+ if debug:
+ print('DEBUG: An update was received')
+ return True
return False
def receiveLike(session,handle: str,baseDir: str, \
@@ -994,8 +1001,7 @@ def populateReplies(baseDir :str,httpPrefix :str,domain :str, \
return False
replyToNickname=getNicknameFromActor(replyTo)
if not replyToNickname:
- if debug:
- print('DEBUG: no nickname found for '+replyTo)
+ print('DEBUG: no nickname found for '+replyTo)
return False
replyToDomain,replyToPort=getDomainFromActor(replyTo)
if not replyToDomain:
diff --git a/like.py b/like.py
index cc305b69..cc202681 100644
--- a/like.py
+++ b/like.py
@@ -170,7 +170,7 @@ def like(session,baseDir: str,federationList: [],nickname: str,domain: str,port:
likedPostNickname=None
likedPostDomain=None
likedPostPort=None
- if '/users/' in objectUrl:
+ if '/users/' in objectUrl or '/profile/' in objectUrl:
likedPostNickname=getNicknameFromActor(objectUrl)
likedPostDomain,likedPostPort=getDomainFromActor(objectUrl)
@@ -267,7 +267,7 @@ def undolike(session,baseDir: str,federationList: [],nickname: str,domain: str,p
likedPostNickname=None
likedPostDomain=None
likedPostPort=None
- if '/users/' in objectUrl:
+ if '/users/' in objectUrl or '/profile/' in objectUrl:
likedPostNickname=getNicknameFromActor(objectUrl)
likedPostDomain,likedPostPort=getDomainFromActor(objectUrl)
diff --git a/posts.py b/posts.py
index 1695cad8..172a93ee 100644
--- a/posts.py
+++ b/posts.py
@@ -1987,6 +1987,9 @@ def sendCapabilitiesUpdate(session,baseDir: str,httpPrefix: str, \
clientToServer=False
followerNickname=getNicknameFromActor(followerUrl)
+ if not followerNickname:
+ print('WARN: unable to find nickname in '+followerUrl)
+ return 1
followerDomain,followerPort=getDomainFromActor(followerUrl)
return sendSignedJson(updateJson,session,baseDir, \
nickname,domain,port, \
diff --git a/roles.py b/roles.py
index 6c07b119..f48be887 100644
--- a/roles.py
+++ b/roles.py
@@ -180,6 +180,9 @@ def outboxDelegate(baseDir: str,authenticatedNickname: str,messageJson: {},debug
if canDelegate==False:
return False
nickname=getNicknameFromActor(messageJson['object']['actor'])
+ if not nickname:
+ print('WARN: unable to find nickname in '+messageJson['object']['actor'])
+ return False
domainFull=domain
if port:
if port!=80 and port!=443:
diff --git a/webinterface.py b/webinterface.py
index 9dd30998..a03f79ae 100644
--- a/webinterface.py
+++ b/webinterface.py
@@ -388,6 +388,8 @@ def htmlEditProfile(baseDir: str,path: str,domain: str,port: int) -> str:
pathOriginal=path
path=path.replace('/inbox','').replace('/outbox','').replace('/shares','')
nickname=getNicknameFromActor(path)
+ if not nickname:
+ return ''
domainFull=domain
if port:
if port!=80 and port!=443:
@@ -1416,18 +1418,22 @@ def individualPostAsHtml(baseDir: str, \
#avatarPosition=' class="right"'
if '/statuses/' in postJsonObject['object']['inReplyTo']:
replyNickname=getNicknameFromActor(postJsonObject['object']['inReplyTo'])
- replyDomain,replyPort=getDomainFromActor(postJsonObject['object']['inReplyTo'])
- if replyNickname and replyDomain:
- replyDisplayName=getDisplayName(postJsonObject['object']['inReplyTo'],personCache)
- if replyDisplayName:
- titleStr+='
'+replyDisplayName+''
- else:
- titleStr+='
@'+replyNickname+'@'+replyDomain+''
+ if replyNickname:
+ replyDomain,replyPort=getDomainFromActor(postJsonObject['object']['inReplyTo'])
+ if replyNickname and replyDomain:
+ replyDisplayName=getDisplayName(postJsonObject['object']['inReplyTo'],personCache)
+ if replyDisplayName:
+ titleStr+='
'+replyDisplayName+''
+ else:
+ titleStr+='
@'+replyNickname+'@'+replyDomain+''
+ else:
+ titleStr+='
@unknown'
else:
postDomain=postJsonObject['object']['inReplyTo'].replace('https://','').replace('http://','').replace('dat://','')
if '/' in postDomain:
postDomain=postDomain.split('/',1)[0]
- titleStr+='
'+postDomain+''
+ if postDomain:
+ titleStr+='
'+postDomain+''
attachmentStr=''
if postJsonObject['object'].get('attachment'):
if isinstance(postJsonObject['object']['attachment'], list):