Ensure port numbers are attached when needed

master
Bob Mottram 2019-08-16 21:35:11 +01:00
parent 972bceeafa
commit 707cbd7d56
20 changed files with 303 additions and 177 deletions

View File

@ -34,8 +34,10 @@ def createAcceptReject(baseDir: str,federationList: [], \
if not urlPermitted(objectJson['actor'],federationList,"inbox:write"):
return None
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
newAccept = {
'type': acceptType,

View File

@ -186,8 +186,10 @@ def createAnnounce(session,baseDir: str,federationList: [], \
if ':' in domain:
domain=domain.split(':')[0]
fullDomain=domain
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
statusNumber,published = getStatusNumber()
newAnnounceId= \
@ -238,9 +240,10 @@ def announcePublic(session,baseDir: str,federationList: [], \
"""Makes a public announcement
"""
fromDomain=domain
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomain+'/users/'+nickname+'/followers'
@ -263,9 +266,10 @@ def repeatPost(session,baseDir: str,federationList: [], \
"""Repeats a given status post
"""
announcedDomain=announceDomain
if announcePort!=80 and announcePort!=443:
if ':' not in announcedDomain:
announcedDomain=announcedDomain+':'+str(announcePort)
if announcePort:
if announcePort!=80 and announcePort!=443:
if ':' not in announcedDomain:
announcedDomain=announcedDomain+':'+str(announcePort)
objectUrl = announceHttpsPrefix + '://'+announcedDomain+'/users/'+ \
announceNickname+'/statuses/'+str(announceStatusNumber)
@ -297,8 +301,10 @@ def undoAnnounce(session,baseDir: str,federationList: [], \
if ':' in domain:
domain=domain.split(':')[0]
fullDomain=domain
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
newUndoAnnounce = {
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
@ -343,9 +349,10 @@ def undoAnnouncePublic(session,baseDir: str,federationList: [], \
"""Undoes a public announcement
"""
fromDomain=domain
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomain+'/users/'+nickname+'/followers'
@ -368,9 +375,10 @@ def undoRepeatPost(session,baseDir: str,federationList: [], \
"""Undoes a status post repeat
"""
announcedDomain=announceDomain
if announcePort!=80 and announcePort!=443:
if ':' not in announcedDomain:
announcedDomain=announcedDomain+':'+str(announcePort)
if announcePort:
if announcePort!=80 and announcePort!=443:
if ':' not in announcedDomain:
announcedDomain=announcedDomain+':'+str(announcePort)
objectUrl = announceHttpsPrefix + '://'+announcedDomain+'/users/'+ \
announceNickname+'/statuses/'+str(announceStatusNumber)
@ -396,8 +404,10 @@ def sendAnnounceViaServer(session,fromNickname: str,password: str,
withDigest=True
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'

View File

@ -81,8 +81,10 @@ def sendAvailabilityViaServer(session,nickname: str,password: str,
return 6
domainFull=domain
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
toUrl = httpPrefix+'://'+domainFull+'/users/'+nickname
ccUrl = httpPrefix+'://'+domainFull+'/users/'+nickname+'/followers'

View File

@ -148,8 +148,10 @@ def sendBlockViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
@ -218,8 +220,10 @@ def sendUndoBlockViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
@ -326,7 +330,8 @@ def outboxBlock(baseDir: str,httpPrefix: str, \
domainBlockedFull=domainBlocked
if portBlocked:
if portBlocked!=80 and portBlocked!=443:
domainBlockedFull=domainBlocked+':'+str(portBlocked)
if ':' not in domainBlocked:
domainBlockedFull=domainBlocked+':'+str(portBlocked)
addBlock(baseDir,nickname,domain, \
nicknameBlocked,domainBlockedFull)
@ -397,7 +402,8 @@ def outboxUndoBlock(baseDir: str,httpPrefix: str, \
domainBlockedFull=domainBlocked
if portBlocked:
if portBlocked!=80 and portBlocked!=443:
domainBlockedFull=domainBlocked+':'+str(portBlocked)
if ':' not in domainBlocked:
domainBlockedFull=domainBlocked+':'+str(portBlocked)
removeBlock(baseDir,nickname,domain, \
nicknameBlocked,domainBlockedFull)

View File

@ -110,8 +110,10 @@ def capabilitiesAccept(baseDir: str,httpPrefix: str, \
return None
fullDomain=domain
if port!=80 and port !=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port !=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
# make directories to store capabilities
ocapFilename=getOcapFilename(baseDir,nickname,fullDomain,acceptedActor,'accept')
@ -169,8 +171,10 @@ def capabilitiesUpdate(baseDir: str,httpPrefix: str, \
return None
fullDomain=domain
if port!=80 and port !=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port !=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
# Get the filename of the capability
ocapFilename=getOcapFilename(baseDir,nickname,fullDomain,updateActor,'accept')

View File

@ -2271,7 +2271,8 @@ class PubServer(BaseHTTPRequestHandler):
fullBlockDomain=blockDomain
if blockPort:
if blockPort!=80 and blockPort!=443:
fullBlockDomain=blockDomain+':'+str(blockPort)
if ':' not in blockDomain:
fullBlockDomain=blockDomain+':'+str(blockPort)
if '@' in moderationText:
fullBlockDomain=moderationText.split('@')[1]
if fullBlockDomain or nickname.startswith('#'):
@ -2285,7 +2286,8 @@ class PubServer(BaseHTTPRequestHandler):
fullBlockDomain=blockDomain
if blockPort:
if blockPort!=80 and blockPort!=443:
fullBlockDomain=blockDomain+':'+str(blockPort)
if ':' not in blockDomain:
fullBlockDomain=blockDomain+':'+str(blockPort)
if '@' in moderationText:
fullBlockDomain=moderationText.split('@')[1]
if fullBlockDomain or nickname.startswith('#'):
@ -2487,7 +2489,8 @@ class PubServer(BaseHTTPRequestHandler):
blockingDomainFull=blockingDomain
if blockingPort:
if blockingPort!=80 and blockingPort!=443:
blockingDomainFull=blockingDomain+':'+str(blockingPort)
if ':' not in blockingDomain:
blockingDomainFull=blockingDomain+':'+str(blockingPort)
if blockerNickname==blockingNickname and \
blockingDomain==self.server.domain and \
blockingPort==self.server.port:
@ -2517,7 +2520,8 @@ class PubServer(BaseHTTPRequestHandler):
blockingDomainFull=blockingDomain
if blockingPort:
if blockingPort!=80 and blockingPort!=443:
blockingDomainFull=blockingDomain+':'+str(blockingPort)
if ':' not in blockingDomain:
blockingDomainFull=blockingDomain+':'+str(blockingPort)
if blockerNickname==blockingNickname and \
blockingDomain==self.server.domain and \
blockingPort==self.server.port:
@ -2813,8 +2817,10 @@ def runDaemon(projectVersion, \
httpd.domain=domain
httpd.port=port
httpd.domainFull=domain
if port!=80 and port!=443:
httpd.domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
httpd.domainFull=domain+':'+str(port)
httpd.httpPrefix=httpPrefix
httpd.debug=debug
httpd.federationList=fedList.copy()

View File

@ -42,8 +42,10 @@ def createDelete(session,baseDir: str,federationList: [], \
if ':' in domain:
domain=domain.split(':')[0]
fullDomain=domain
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
statusNumber,published = getStatusNumber()
newDeleteId= \
@ -91,8 +93,10 @@ def sendDeleteViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
@ -157,9 +161,10 @@ def deletePublic(session,baseDir: str,federationList: [], \
"""Makes a public delete activity
"""
fromDomain=domain
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fromDomain=domain+':'+str(port)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomain+'/users/'+nickname+'/followers'
@ -182,9 +187,10 @@ def deletePostPub(session,baseDir: str,federationList: [], \
"""Deletes a given status post
"""
deletedDomain=deleteDomain
if deletePort!=80 and deletePort!=443:
if ':' not in deletedDomain:
deletedDomain=deletedDomain+':'+str(deletePort)
if deletePort:
if deletePort!=80 and deletePort!=443:
if ':' not in deletedDomain:
deletedDomain=deletedDomain+':'+str(deletePort)
objectUrl = deleteHttpsPrefix + '://'+deletedDomain+'/users/'+ \
deleteNickname+'/statuses/'+str(deleteStatusNumber)

View File

@ -42,7 +42,8 @@ def isFollowingActor(baseDir: str,nickname: str,domain: str,actor: str) -> bool:
followerHandle=followerNickname+'@'+followerDomain
if followerPort:
if followerPort!=80 and followerPort!=443:
followerHandle+=':'+str(followerPort)
if ':' not in followerHandle:
followerHandle+=':'+str(followerPort)
if followerHandle in open(followersFile).read():
return True
return False
@ -207,9 +208,11 @@ def getFollowingFeed(baseDir: str,domain: str,port: int,path: str, \
return None
if not validNickname(nickname):
return None
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if headerOnly:
following = {
@ -298,11 +301,12 @@ def storeFollowRequest(baseDir: str, \
accountsDir=baseDir+'/accounts/'+nicknameToFollow+'@'+domainToFollow
if not os.path.isdir(accountsDir):
return False
if port!=80 and port!=443:
approveHandle=nickname+'@'+domain+':'+str(fromPort)
else:
approveHandle=nickname+'@'+domain
approveHandle=nickname+'@'+domain
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in domain:
approveHandle=nickname+'@'+domain+':'+str(fromPort)
# add to a file which contains a list of requests
approveFollowsFilename=accountsDir+'/followrequests.txt'
@ -353,7 +357,8 @@ def receiveFollowRequest(session,baseDir: str,httpPrefix: str, \
if tempPort:
fromPort=tempPort
if tempPort!=80 and tempPort!=443:
domainFull=domain+':'+str(tempPort)
if ':' not in domain:
domainFull=domain+':'+str(tempPort)
if not domainPermitted(domain,federationList):
if debug:
print('DEBUG: follower from domain not permitted - '+domain)
@ -378,7 +383,8 @@ def receiveFollowRequest(session,baseDir: str,httpPrefix: str, \
domainToFollowFull=domainToFollow
if tempPort:
if tempPort!=80 and tempPort!=443:
domainToFollowFull=domainToFollow+':'+str(tempPort)
if ':' not in domainToFollow:
domainToFollowFull=domainToFollow+':'+str(tempPort)
nicknameToFollow=getNicknameFromActor(messageJson['object'])
if not nicknameToFollow:
if debug:
@ -466,14 +472,18 @@ def sendFollowRequest(session,baseDir: str, \
return None
fullDomain=domain
followActor=httpPrefix+'://'+domain+'/users/'+nickname
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
followActor=httpPrefix+'://'+domain+':'+str(port)+'/users/'+nickname
followActor=httpPrefix+'://'+domain+'/users/'+nickname
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
followActor=httpPrefix+'://'+domain+':'+str(port)+'/users/'+nickname
requestDomain=followDomain
if followPort!=80 and followPort!=443:
requestDomain=followDomain+':'+str(followPort)
if followPort:
if followPort!=80 and followPort!=443:
if ':' not in followDomain:
requestDomain=followDomain+':'+str(followPort)
statusNumber,published = getStatusNumber()
@ -511,12 +521,16 @@ def sendFollowRequestViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
followDomainFull=followDomain
if followPort!=80 and followPort!=443:
followDomainFull=followDomain+':'+str(followPort)
if followPort:
if followPort!=80 and followPort!=443:
if ':' not in followDomain:
followDomainFull=followDomain+':'+str(followPort)
followActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname
followedId=httpPrefix+'://'+followDomainFull+'/users/'+followNickname
@ -587,11 +601,15 @@ def sendUnfollowRequestViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
followDomainFull=followDomain
if followPort!=80 and followPort!=443:
followDomainFull=followDomain+':'+str(followPort)
if followPort:
if followPort!=80 and followPort!=443:
if ':' not in followDomain:
followDomainFull=followDomain+':'+str(followPort)
followActor=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname
followedId=httpPrefix+'://'+followDomainFull+'/users/'+followNickname
@ -745,14 +763,16 @@ def outboxUndoFollow(baseDir: str,messageJson: {},debug: bool) -> None:
domainFollowerFull=domainFollower
if portFollower:
if portFollower!=80 and portFollower!=443:
domainFollowerFull=domainFollower+':'+str(portFollower)
if ':' not in domainFollower:
domainFollowerFull=domainFollower+':'+str(portFollower)
nicknameFollowing=getNicknameFromActor(messageJson['object']['object'])
domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object'])
domainFollowingFull=domainFollowing
if portFollowing:
if portFollowing!=80 and portFollowing!=443:
domainFollowingFull=domainFollowing+':'+str(portFollowing)
if ':' not in domainFollowing:
domainFollowingFull=domainFollowing+':'+str(portFollowing)
if unfollowPerson(baseDir,nicknameFollower,domainFollowerFull, \
nicknameFollowing,domainFollowingFull):

View File

@ -187,7 +187,8 @@ def savePostToInboxQueue(baseDir: str,httpPrefix: str,nickname: str, domain: str
return None
if postPort:
if postPort!=80 and postPort!=443:
postDomain=postDomain+':'+str(postPort)
if ':' not in postDomain:
postDomain=postDomain+':'+str(postPort)
if postJsonObject.get('object'):
if isinstance(postJsonObject['object'], dict):
@ -368,8 +369,10 @@ def inboxPostRecipients(baseDir :str,postJsonObject :{},httpPrefix :str,domain :
if ':' in domain:
domain=domain.split(':')[0]
domainBase=domain
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
domainMatch='/'+domain+'/users/'
actor = postJsonObject['actor']
@ -485,14 +488,16 @@ def receiveUndoFollow(session,baseDir: str,httpPrefix: str, \
domainFollowerFull=domainFollower
if portFollower:
if portFollower!=80 and portFollower!=443:
domainFollowerFull=domainFollower+':'+str(portFollower)
if ':' not in domainFollower:
domainFollowerFull=domainFollower+':'+str(portFollower)
nicknameFollowing=getNicknameFromActor(messageJson['object']['object'])
domainFollowing,portFollowing=getDomainFromActor(messageJson['object']['object'])
domainFollowingFull=domainFollowing
if portFollowing:
if portFollowing!=80 and portFollowing!=443:
domainFollowingFull=domainFollowing+':'+str(portFollowing)
if ':' not in domainFollowing:
domainFollowingFull=domainFollowing+':'+str(portFollowing)
if unfollowerOfPerson(baseDir, \
nicknameFollowing,domainFollowingFull, \
@ -719,7 +724,8 @@ def receiveDelete(session,handle: str,baseDir: str, \
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
deletePrefix=httpPrefix+'://'+domainFull+'/'
if not allowDeletion and \
(not messageJson['object'].startswith(deletePrefix) or \

57
like.py
View File

@ -137,9 +137,10 @@ def like(session,baseDir: str,federationList: [],nickname: str,domain: str,port:
return None
fullDomain=domain
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
likeTo=[]
if '/statuses/' in objectUrl:
@ -196,18 +197,20 @@ def likePost(session,baseDir: str,federationList: [], \
"""Likes a given status post
"""
likeDomain=likeDomain
if likePort!=80 and likePort!=443:
if ':' not in likeDomain:
likeDomain=likeDomain+':'+str(likePort)
if likePort:
if likePort!=80 and likePort!=443:
if ':' not in likeDomain:
likeDomain=likeDomain+':'+str(likePort)
objectUrl = \
httpPrefix + '://'+likeDomain+'/users/'+likeNickname+ \
'/statuses/'+str(likeStatusNumber)
if likePort!=80 and likePort!=443:
ccUrl=httpPrefix+'://'+likeDomain+':'+str(likePort)+'/users/'+likeNickname
else:
ccUrl=httpPrefix+'://'+likeDomain+'/users/'+likeNickname
ccUrl=httpPrefix+'://'+likeDomain+'/users/'+likeNickname
if likePort:
if likePort!=80 and likePort!=443:
if ':' not in likeDomain:
ccUrl=httpPrefix+'://'+likeDomain+':'+str(likePort)+'/users/'+likeNickname
return like(session,baseDir,federationList,nickname,domain,port, \
ccList,httpPrefix,objectUrl,clientToServer, \
@ -227,9 +230,10 @@ def undolike(session,baseDir: str,federationList: [],nickname: str,domain: str,p
return None
fullDomain=domain
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
likeTo=[]
if '/statuses/' in objectUrl:
@ -291,17 +295,20 @@ def undoLikePost(session,baseDir: str,federationList: [], \
"""Removes a liked post
"""
likeDomain=likeDomain
if likePort!=80 and likePort!=443:
likeDomain=likeDomain+':'+str(likePort)
if likePort:
if likePort!=80 and likePort!=443:
if ':' not in likeDomain:
likeDomain=likeDomain+':'+str(likePort)
objectUrl = \
httpPrefix + '://'+likeDomain+'/users/'+likeNickname+ \
'/statuses/'+str(likeStatusNumber)
if likePort!=80 and likePort!=443:
ccUrl=httpPrefix+'://'+likeDomain+':'+str(likePort)+'/users/'+likeNickname
else:
ccUrl=httpPrefix+'://'+likeDomain+'/users/'+likeNickname
ccUrl=httpPrefix+'://'+likeDomain+'/users/'+likeNickname
if likePort:
if likePort!=80 and likePort!=443:
if ':' not in likeDomain:
ccUrl=httpPrefix+'://'+likeDomain+':'+str(likePort)+'/users/'+likeNickname
return undoLike(session,baseDir,federationList,nickname,domain,port, \
ccList,httpPrefix,objectUrl,clientToServer, \
@ -319,8 +326,10 @@ def sendLikeViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = ['https://www.w3.org/ns/activitystreams#Public']
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
@ -391,8 +400,10 @@ def sendUndoLikeViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = ['https://www.w3.org/ns/activitystreams#Public']
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'

View File

@ -67,9 +67,10 @@ def attachImage(baseDir: str,httpPrefix: str,domain: str,port: int, \
mediaType='image/gif'
fileExtension='gif'
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
mPath=getMediaPath()
mediaPath=mPath+'/'+createPassword(32)+'.'+fileExtension

View File

@ -56,8 +56,10 @@ def setProfileImage(baseDir: str,httpPrefix :str,nickname: str,domain: str, \
if ':' in domain:
domain=domain.split(':')[0]
fullDomain=domain
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
fullDomain=domain+':'+str(port)
handle=nickname.lower()+'@'+domain.lower()
personFilename=baseDir+'/accounts/'+handle+'.json'
@ -135,8 +137,10 @@ def createPersonBase(baseDir: str,nickname: str,domain: str,port: int, \
storeWebfingerEndpoint(nickname,domain,port,baseDir,webfingerEndpoint)
handle=nickname.lower()+'@'+domain.lower()
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
newPerson = {'@context': ['https://www.w3.org/ns/activitystreams',
'https://w3id.org/security/v1',
@ -545,7 +549,8 @@ def canRemovePost(baseDir: str,nickname: str,domain: str,port: int,postId: str)
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
# is the post by the admin?
adminNickname=getConfigParam(baseDir,'admin')
@ -570,7 +575,8 @@ def removeTagsForNickname(baseDir: str,nickname: str,domain: str,port: int) -> N
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
matchStr=domainFull+'/users/'+nickname+'/'
directory = os.fsencode(baseDir+'/tags/')
for f in os.listdir(directory):

View File

@ -431,9 +431,10 @@ def createPostBase(baseDir: str,nickname: str, domain: str, port: int, \
tags=[]
hashtagsDict={}
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
# convert content to html
content= \
@ -604,9 +605,10 @@ def outboxMessageCreateWrap(httpPrefix: str, \
https://www.w3.org/TR/activitypub/#object-without-create
"""
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
statusNumber,published = getStatusNumber()
if messageJson.get('published'):
published = messageJson['published']
@ -638,8 +640,10 @@ def postIsAddressedToFollowers(baseDir: str,
postJsonObject: {}) -> bool:
"""Returns true if the given post is addressed to followers of the nickname
"""
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if not postJsonObject.get('object'):
return False
@ -699,9 +703,10 @@ def createPublicPost(baseDir: str,
"""Public post
"""
domainFull=domain
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
return createPostBase(baseDir,nickname, domain, port, \
'https://www.w3.org/ns/activitystreams#Public', \
httpPrefix+'://'+domainFull+'/users/'+nickname+'/followers', \
@ -719,9 +724,10 @@ def createUnlistedPost(baseDir: str,
"""Unlisted post. This has the #Public and followers links inverted.
"""
domainFull=domain
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
return createPostBase(baseDir,nickname, domain, port, \
httpPrefix+'://'+domainFull+'/users/'+nickname+'/followers', \
'https://www.w3.org/ns/activitystreams#Public', \
@ -739,9 +745,10 @@ def createFollowersOnlyPost(baseDir: str,
"""Followers only post
"""
domainFull=domain
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
return createPostBase(baseDir,nickname, domain, port, \
httpPrefix+'://'+domainFull+'/users/'+nickname+'/followers', \
None,
@ -810,7 +817,8 @@ def createReportPost(baseDir: str,
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
# add a title to distinguish moderation reports from other posts
reportTitle='Moderation Report'
@ -917,9 +925,10 @@ def sendPost(projectVersion: str, \
"""
withDigest=True
if toPort!=80 and toPort!=443:
if ':' not in toDomain:
toDomain=toDomain+':'+str(toPort)
if toPort:
if toPort!=80 and toPort!=443:
if ':' not in toDomain:
toDomain=toDomain+':'+str(toPort)
handle=httpPrefix+'://'+toDomain+'/@'+toNickname
@ -1010,9 +1019,10 @@ def sendPostViaServer(projectVersion: str, \
return 6
withDigest=True
if toPort!=80 and toPort!=443:
if ':' not in fromDomain:
fromDomain=fromDomain+':'+str(fromPort)
if toPort:
if toPort!=80 and toPort!=443:
if ':' not in fromDomain:
fromDomain=fromDomain+':'+str(fromPort)
handle=httpPrefix+'://'+fromDomain+'/@'+fromNickname
@ -1049,7 +1059,8 @@ def sendPostViaServer(projectVersion: str, \
fromDomainFull=fromDomain
if fromPort:
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
cc=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/followers'
else:
if toDomain.lower().endswith('followers') or \
@ -1057,8 +1068,10 @@ def sendPostViaServer(projectVersion: str, \
toPersonId=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/followers'
else:
toDomainFull=toDomain
if toPort!=80 and toDomain!=443:
toDomainFull=toDomain+':'+str(toPort)
if toPort:
if toPort!=80 and toPort!=443:
if ':' not in toDomain:
toDomainFull=toDomain+':'+str(toPort)
toPersonId=httpPrefix+'://'+toDomainFull+'/users/'+toNickname
postJsonObject = \
createPostBase(baseDir, \
@ -1273,11 +1286,13 @@ def sendToNamedAddresses(session,baseDir: str, \
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
toDomainFull=toDomain
if toPort:
if toPort!=80 and toPort!=443:
toDomainFull=toDomain+':'+str(toPort)
if ':' not in toDomain:
toDomainFull=toDomain+':'+str(toPort)
print('DEBUG: Post sending s2s: '+nickname+'@'+domainFull+' to '+toNickname+'@'+toDomainFull)
cc=[]
sendSignedJson(postJsonObject,session,baseDir, \
@ -1359,8 +1374,10 @@ def createModeration(baseDir: str,nickname: str,domain: str,port: int,httpPrefix
boxDir = createPersonDir(nickname,domain,baseDir,'inbox')
boxname='moderation'
if port!=80 and port!=443:
domain = domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if not pageNumber:
pageNumber=1
@ -1433,8 +1450,10 @@ def createBoxBase(baseDir: str,boxname: str, \
if boxname=='inbox':
sharedBoxDir = createPersonDir('inbox',domain,baseDir,boxname)
if port!=80 and port!=443:
domain = domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
pageStr='?page=true'
if pageNumber:
@ -1660,8 +1679,10 @@ def getPublicPostsOfPerson(nickname: str,domain: str, \
federationList=[]
domainFull=domain
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
handle=httpPrefix+"://"+domainFull+"/@"+nickname
wfRequest = \
webfingerHandle(session,handle,httpPrefix,cachedWebfingers, \

View File

@ -183,7 +183,8 @@ def outboxDelegate(baseDir: str,authenticatedNickname: str,messageJson: {},debug
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
role=messageJson['object']['object'].split(';')[1].strip().lower()
if not role:
@ -216,8 +217,10 @@ def sendRoleViaServer(session,delegatorNickname: str,password: str,
return 6
delegatorDomainFull=delegatorDomain
if fromPort!=80 and fromPort!=443:
delegatorDomainFull=delegatorDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in delegatorDomain:
delegatorDomainFull=delegatorDomain+':'+str(fromPort)
toUrl = httpPrefix+'://'+delegatorDomainFull+'/users/'+nickname
ccUrl = httpPrefix+'://'+delegatorDomainFull+'/users/'+delegatorNickname+'/followers'

View File

@ -101,8 +101,10 @@ def addShare(baseDir: str, \
if imageFilename:
if os.path.isfile(imageFilename):
domainFull=domain
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
if not os.path.isdir(baseDir+'/sharefiles'):
os.mkdir(baseDir+'/sharefiles')
if not os.path.isdir(baseDir+'/sharefiles/'+nickname):
@ -203,8 +205,10 @@ def getSharesFeedForPerson(baseDir: str, \
if not validNickname(nickname):
return None
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
handleDomain=domain
if ':' in handleDomain:
@ -283,8 +287,10 @@ def sendShareViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'
@ -370,8 +376,10 @@ def sendUndoShareViaServer(session,fromNickname: str,password: str,
return 6
fromDomainFull=fromDomain
if fromPort!=80 and fromPort!=443:
fromDomainFull=fromDomain+':'+str(fromPort)
if fromPort:
if fromPort!=80 and fromPort!=443:
if ':' not in fromDomain:
fromDomainFull=fromDomain+':'+str(fromPort)
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl = httpPrefix + '://'+fromDomainFull+'/users/'+fromNickname+'/followers'

View File

@ -98,8 +98,10 @@ def sendSkillViaServer(session,nickname: str,password: str,
return 6
domainFull=domain
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domainFull=domain+':'+str(port)
toUrl = httpPrefix+'://'+domainFull+'/users/'+nickname
ccUrl = httpPrefix+'://'+domainFull+'/users/'+nickname+'/followers'

View File

@ -88,8 +88,10 @@ def testHttpsigBase(withDigest):
messageBodyJsonStr=json.dumps(messageBodyJson)
headersDomain=domain
if port!=80 and port !=443:
headersDomain=domain+':'+str(port)
if port:
if port!=80 and port !=443:
if ':' not in domain:
headersDomain=domain+':'+str(port)
dateStr=strftime("%a, %d %b %Y %H:%M:%S %Z", gmtime())
boxpath='/inbox'

View File

@ -156,9 +156,10 @@ def removeAttachment(baseDir: str,httpPrefix: str,domain: str,postJson: {}):
return
if not postJson['attachment'][0].get('url'):
return
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
attachmentUrl=postJson['attachment'][0]['url']
if not attachmentUrl:
return

View File

@ -79,8 +79,10 @@ def storeWebfingerEndpoint(nickname: str,domain: str,port: int,baseDir: str, \
wfJson: {}) -> bool:
"""Stores webfinger endpoint for a user to a file
"""
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
handle=nickname+'@'+domain
wfSubdir='/wfendpoints'
if not os.path.isdir(baseDir+wfSubdir):
@ -95,8 +97,10 @@ def createWebfingerEndpoint(nickname: str,domain: str,port: int, \
"""Creates a webfinger endpoint for a user
"""
originalDomain=domain
if port!=80 and port!=443:
domain=domain+':'+str(port)
if port:
if port!=80 and port!=443:
if ':' not in domain:
domain=domain+':'+str(port)
account = {
"aliases": [
@ -178,9 +182,10 @@ def webfingerLookup(path: str,baseDir: str,port: int,debug: bool) -> {}:
if debug:
print('DEBUG: WEBFINGER no @ in handle '+handle)
return None
if port!=80 and port !=443:
if ':' not in handle:
handle=handle+':'+str(port)
if port:
if port!=80 and port !=443:
if ':' not in handle:
handle=handle+':'+str(port)
filename=baseDir+'/wfendpoints/'+handle.lower()+'.json'
if debug:
print('DEBUG: WEBFINGER filename '+filename)

View File

@ -225,7 +225,8 @@ def htmlEditProfile(baseDir: str,path: str,domain: str,port: int) -> str:
domainFull=domain
if port:
if port!=80 and port!=443:
domainFull=domain+':'+str(port)
if ':' not in domain:
domainFull=domain+':'+str(port)
actorFilename=baseDir+'/accounts/'+nickname+'@'+domain+'.json'
if not os.path.isfile(actorFilename):
@ -1013,7 +1014,8 @@ def individualPostAsHtml(baseDir: str, \
fullDomain=domain
if port:
if port!=80 and port!=443:
fullDomain=domain+':'+str(port)
if ':' not in domain:
fullDomain=domain+':'+str(port)
if fullDomain not in postJsonObject['actor']:
inboxUrl,pubKeyId,pubKey,fromPersonId,sharedInbox,capabilityAcquisition,avatarUrl2,preferredName = \
@ -1040,7 +1042,8 @@ def individualPostAsHtml(baseDir: str, \
actorDomainFull=actorDomain
if actorPort:
if actorPort!=80 and actorPort!=443:
actorDomainFull=actorDomain+':'+str(actorPort)
if ':' not in actorDomain:
actorDomainFull=actorDomain+':'+str(actorPort)
if isBlocked(baseDir,nickname,domain,actorNickname,actorDomainFull):
blockUnblockStr='<a href="/users/'+nickname+'?unblock='+postJsonObject['actor']+';'+avatarUrl+'">Unblock</a>'
@ -1520,7 +1523,8 @@ def htmlProfileAfterSearch(baseDir: str,path: str,httpPrefix: str, \
searchDomainFull=searchDomain
if searchPort:
if searchPort!=80 and searchPort!=443:
searchDomainFull=searchDomain+':'+str(searchPort)
if ':' not in searchDomain:
searchDomainFull=searchDomain+':'+str(searchPort)
profileStr=''
with open(baseDir+'/epicyon-profile.css', 'r') as cssFile: