mirror of https://gitlab.com/bashrc2/epicyon
Fix follower ports
parent
f02839e32f
commit
3813809958
|
@ -137,22 +137,23 @@ def acceptFollow(baseDir: str,domain : str,messageJson: {}, \
|
|||
if not followedNickname:
|
||||
return
|
||||
|
||||
acceptedDomainFull=acceptedDomain
|
||||
if acceptedPort:
|
||||
acceptedDomainFull=acceptedDomain+':'+str(acceptedPort)
|
||||
|
||||
# are capabilities attached? If so then store them
|
||||
if messageJson.get('capabilities'):
|
||||
if isinstance(messageJson['capabilities'], dict):
|
||||
acceptedDomainFull=acceptedDomain
|
||||
if acceptedPort:
|
||||
acceptedDomainFull=acceptedDomain+':'+str(acceptedPort)
|
||||
capabilitiesGrantedSave(baseDir, \
|
||||
nickname,acceptedDomainFull, \
|
||||
messageJson['capabilities'])
|
||||
|
||||
if followPerson(baseDir, \
|
||||
nickname,acceptedDomain, \
|
||||
followedNickname,followedDomain, \
|
||||
nickname,acceptedDomainFull, \
|
||||
followedNickname,followedDomainFull, \
|
||||
federationList,debug):
|
||||
if debug:
|
||||
print('DEBUG: '+nickname+'@'+acceptedDomain+' followed '+followedNickname+'@'+followedDomain)
|
||||
print('DEBUG: '+nickname+'@'+acceptedDomainFull+' followed '+followedNickname+'@'+followedDomainFull)
|
||||
else:
|
||||
if debug:
|
||||
print('DEBUG: Unable to create follow - '+nickname+'@'+acceptedDomain+' -> '+followedNickname+'@'+followedDomain)
|
||||
|
|
13
follow.py
13
follow.py
|
@ -243,8 +243,11 @@ def receiveFollowRequest(session,baseDir: str,httpPrefix: str, \
|
|||
return False
|
||||
domain,tempPort=getDomainFromActor(messageJson['actor'])
|
||||
fromPort=port
|
||||
domainFull=domain
|
||||
if tempPort:
|
||||
fromPort=tempPort
|
||||
if tempPort!=80 and tempPort!=443:
|
||||
domainFull=domain+':'+str(tempPort)
|
||||
if not domainPermitted(domain,federationList):
|
||||
if debug:
|
||||
print('DEBUG: follower from domain not permitted - '+domain)
|
||||
|
@ -264,6 +267,10 @@ def receiveFollowRequest(session,baseDir: str,httpPrefix: str, \
|
|||
if debug:
|
||||
print('DEBUG: follow domain not permitted '+domainToFollow)
|
||||
return False
|
||||
domainToFollowFull=domainToFollow
|
||||
if tempPort:
|
||||
if tempPort!=80 and tempPort!=443:
|
||||
domainToFollowFull=domainToFollow+':'+str(tempPort)
|
||||
nicknameToFollow=getNicknameFromActor(messageJson['object'])
|
||||
if not nicknameToFollow:
|
||||
if debug:
|
||||
|
@ -276,8 +283,10 @@ def receiveFollowRequest(session,baseDir: str,httpPrefix: str, \
|
|||
print('DEBUG: followed account not found - '+ \
|
||||
baseDir+'/accounts/'+handleToFollow)
|
||||
return False
|
||||
if not followerOfPerson(baseDir,nicknameToFollow,domainToFollow, \
|
||||
nickname,domain,federationList,debug):
|
||||
|
||||
|
||||
if not followerOfPerson(baseDir,nicknameToFollow,domainToFollowFull, \
|
||||
nickname,domainFull,federationList,debug):
|
||||
if debug:
|
||||
print('DEBUG: '+nickname+'@'+domain+ \
|
||||
' is already a follower of '+ \
|
||||
|
|
2
inbox.py
2
inbox.py
|
@ -582,6 +582,8 @@ def receiveAnnounce(session,handle: str,baseDir: str, \
|
|||
if debug:
|
||||
print('DEBUG: '+messageJson['type']+' has no actor')
|
||||
return False
|
||||
if debug:
|
||||
print('DEBUG: receiving announce on '+handle)
|
||||
if not messageJson.get('object'):
|
||||
if debug:
|
||||
print('DEBUG: '+messageJson['type']+' has no object')
|
||||
|
|
22
posts.py
22
posts.py
|
@ -788,6 +788,8 @@ def sendSignedJson(postJsonObject: {},session,baseDir: str, \
|
|||
personCache: {}, debug: bool) -> int:
|
||||
"""Sends a signed json object to an inbox/outbox
|
||||
"""
|
||||
if debug:
|
||||
print('DEBUG: sendSignedJson start')
|
||||
if not session:
|
||||
print('WARN: No session specified for sendSignedJson')
|
||||
return 8
|
||||
|
@ -802,6 +804,8 @@ def sendSignedJson(postJsonObject: {},session,baseDir: str, \
|
|||
toDomain=toDomain+':'+str(toPort)
|
||||
|
||||
handle=httpPrefix+'://'+toDomain+'/@'+toNickname
|
||||
if debug:
|
||||
print('DEBUG: handle - '+handle+' toPort '+str(toPort))
|
||||
|
||||
# lookup the inbox for the To handle
|
||||
wfRequest=webfingerHandle(session,handle,httpPrefix,cachedWebfingers)
|
||||
|
@ -831,10 +835,16 @@ def sendSignedJson(postJsonObject: {},session,baseDir: str, \
|
|||
print('DEBUG: Sending to endpoint '+inboxUrl)
|
||||
|
||||
if not inboxUrl:
|
||||
if debug:
|
||||
print('DEBUG: missing inboxUrl')
|
||||
return 3
|
||||
if not pubKey:
|
||||
if debug:
|
||||
print('DEBUG: missing pubkey')
|
||||
return 4
|
||||
if not toPersonId:
|
||||
if debug:
|
||||
print('DEBUG: missing personId')
|
||||
return 5
|
||||
# sharedInbox and capabilities are optional
|
||||
|
||||
|
@ -846,6 +856,8 @@ def sendSignedJson(postJsonObject: {},session,baseDir: str, \
|
|||
return 6
|
||||
|
||||
if toDomain not in inboxUrl:
|
||||
if debug:
|
||||
print('DEBUG: '+toDomain+' not in '+inboxUrl)
|
||||
return 7
|
||||
postPath='/'+inboxUrl.split('/')[-1]
|
||||
|
||||
|
@ -858,6 +870,8 @@ def sendSignedJson(postJsonObject: {},session,baseDir: str, \
|
|||
while len(sendThreads)>10:
|
||||
sendThreads[0].kill()
|
||||
sendThreads.pop(0)
|
||||
if debug:
|
||||
print('DEBUG: starting thread to send post')
|
||||
thr = threadWithTrace(target=threadSendPost, \
|
||||
args=(session, \
|
||||
postJsonObject.copy(), \
|
||||
|
@ -964,6 +978,9 @@ def sendToFollowers(session,baseDir: str, \
|
|||
|
||||
# for each instance
|
||||
for followerDomain,followerHandles in grouped.items():
|
||||
if debug:
|
||||
print('DEBUG: follower handles for '+followerDomain)
|
||||
pprint(followerHandles)
|
||||
toPort=port
|
||||
index=0
|
||||
toDomain=followerHandles[index].split('@')[1]
|
||||
|
@ -976,7 +993,7 @@ def sendToFollowers(session,baseDir: str, \
|
|||
nickname='inbox'
|
||||
toNickname='inbox'
|
||||
if debug:
|
||||
print('Sending from '+nickname+'@'+domain+' to '+toNickname+'@'+toDomain)
|
||||
print('DEBUG: Sending from '+nickname+'@'+domain+' to '+toNickname+'@'+toDomain)
|
||||
sendSignedJson(postJsonObject,session,baseDir, \
|
||||
nickname,domain,port, \
|
||||
toNickname,toDomain,toPort, \
|
||||
|
@ -984,6 +1001,9 @@ def sendToFollowers(session,baseDir: str, \
|
|||
federationList, \
|
||||
sendThreads,postLog,cachedWebfingers, \
|
||||
personCache,debug)
|
||||
if debug:
|
||||
print('DEBUG: End of sendToFollowers')
|
||||
|
||||
|
||||
def createInbox(baseDir: str,nickname: str,domain: str,port: int,httpPrefix: str, \
|
||||
itemsPerPage: int,headerOnly: bool,ocapAlways: bool,pageNumber=None) -> {}:
|
||||
|
|
10
tests.py
10
tests.py
|
@ -1091,19 +1091,23 @@ def testClientToServer():
|
|||
sessionBob = createSession(bobDomain,bobPort,useTor)
|
||||
password='bobpass'
|
||||
outboxPath=bobDir+'/accounts/bob@'+bobDomain+'/outbox'
|
||||
inboxPath=aliceDir+'/accounts/alice@'+aliceDomain+'/inbox'
|
||||
assert len([name for name in os.listdir(outboxPath) if os.path.isfile(os.path.join(outboxPath, name))])==0
|
||||
assert len([name for name in os.listdir(inboxPath) if os.path.isfile(os.path.join(inboxPath, name))])==0
|
||||
sendAnnounceViaServer(sessionBob,'bob',password, \
|
||||
bobDomain,bobPort, \
|
||||
httpPrefix,outboxPostId, \
|
||||
cachedWebfingers, \
|
||||
personCache,True)
|
||||
for i in range(10):
|
||||
if os.path.isdir(outboxPath):
|
||||
for i in range(20):
|
||||
if os.path.isdir(outboxPath) and os.path.isdir(inboxPath):
|
||||
if len([name for name in os.listdir(outboxPath) if os.path.isfile(os.path.join(outboxPath, name))])==1:
|
||||
break
|
||||
if len([name for name in os.listdir(inboxPath) if os.path.isfile(os.path.join(inboxPath, name))])==1:
|
||||
break
|
||||
time.sleep(1)
|
||||
|
||||
assert len([name for name in os.listdir(outboxPath) if os.path.isfile(os.path.join(outboxPath, name))])==1
|
||||
assert len([name for name in os.listdir(inboxPath) if os.path.isfile(os.path.join(inboxPath, name))])==1
|
||||
print('Post repeated')
|
||||
|
||||
# stop the servers
|
||||
|
|
16
utils.py
16
utils.py
|
@ -98,8 +98,16 @@ def followPerson(baseDir: str,nickname: str, domain: str, \
|
|||
return False
|
||||
if debug:
|
||||
print('DEBUG: follow of domain '+followDomain)
|
||||
handle=nickname.lower()+'@'+domain.lower()
|
||||
handleToFollow=followNickname.lower()+'@'+followDomain.lower()
|
||||
|
||||
if ':' in domain:
|
||||
handle=nickname+'@'+domain.split(':')[0].lower()
|
||||
else:
|
||||
handle=nickname+'@'+domain.lower()
|
||||
|
||||
if ':' in followDomain:
|
||||
handleToFollow=followNickname+'@'+followDomain.split(':')[0].lower()
|
||||
else:
|
||||
handleToFollow=followNickname+'@'+followDomain.lower()
|
||||
if not os.path.isdir(baseDir+'/accounts'):
|
||||
os.mkdir(baseDir+'/accounts')
|
||||
if not os.path.isdir(baseDir+'/accounts/'+handle):
|
||||
|
@ -111,14 +119,14 @@ def followPerson(baseDir: str,nickname: str, domain: str, \
|
|||
print('DEBUG: follow already exists')
|
||||
return True
|
||||
with open(filename, "a") as followfile:
|
||||
followfile.write(handleToFollow+'\n')
|
||||
followfile.write(followNickname+'@'+followDomain+'\n')
|
||||
if debug:
|
||||
print('DEBUG: follow added')
|
||||
return True
|
||||
if debug:
|
||||
print('DEBUG: creating new following file')
|
||||
with open(filename, "w") as followfile:
|
||||
followfile.write(handleToFollow+'\n')
|
||||
followfile.write(followNickname+'@'+followDomain+'\n')
|
||||
return True
|
||||
|
||||
def locatePost(baseDir: str,nickname: str,domain: str,postUrl: str,replies=False) -> str:
|
||||
|
|
Loading…
Reference in New Issue