forked from indymedia/epicyon
Outbox thread
parent
7603b85ff7
commit
97665c08cb
42
daemon.py
42
daemon.py
|
@ -244,6 +244,21 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
return False
|
||||
return True
|
||||
|
||||
def _postToOutboxThread(self,messageJson: {}) -> bool:
|
||||
"""Creates a thread to send a post
|
||||
"""
|
||||
if self.server.outboxThread:
|
||||
print('Waiting for previous outbox thread to end')
|
||||
while self.server.outboxThread.isAlive():
|
||||
time.sleep(1)
|
||||
|
||||
print('Creating outbox thread')
|
||||
self.server.outboxThread= \
|
||||
threadWithTrace(target=self._postToOutbox, \
|
||||
args=(messageJson.copy()),daemon=True)
|
||||
print('Starting outbox thread')
|
||||
self.server.outboxThread.start()
|
||||
|
||||
def _postToOutbox(self,messageJson: {}) -> bool:
|
||||
"""post is received by the outbox
|
||||
Client to server message post
|
||||
|
@ -929,7 +944,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.debug, \
|
||||
self.server.projectVersion)
|
||||
if announceJson:
|
||||
self._postToOutbox(announceJson)
|
||||
self._postToOutboxThread(announceJson)
|
||||
self.server.GETbusy=False
|
||||
self._redirect_headers(actor+'/inbox',cookie)
|
||||
return
|
||||
|
@ -962,7 +977,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
'type': 'Announce'
|
||||
}
|
||||
}
|
||||
self._postToOutbox(newUndoAnnounce)
|
||||
self._postToOutboxThread(newUndoAnnounce)
|
||||
self.server.GETbusy=False
|
||||
self._redirect_headers(actor+'/inbox',cookie)
|
||||
return
|
||||
|
@ -1027,7 +1042,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
'actor': likeActor,
|
||||
'object': likeUrl
|
||||
}
|
||||
self._postToOutbox(likeJson)
|
||||
self._postToOutboxThread(likeJson)
|
||||
self.server.GETbusy=False
|
||||
self._redirect_headers(actor+'/inbox',cookie)
|
||||
return
|
||||
|
@ -1057,7 +1072,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
'object': likeUrl
|
||||
}
|
||||
}
|
||||
self._postToOutbox(undoLikeJson)
|
||||
self._postToOutboxThread(undoLikeJson)
|
||||
self.server.GETbusy=False
|
||||
self._redirect_headers(actor+'/inbox',cookie)
|
||||
return
|
||||
|
@ -1976,7 +1991,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fields['replyTo'], fields['replyTo'],fields['subject'])
|
||||
if messageJson:
|
||||
self.postToNickname=nickname
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domainFull, \
|
||||
|
@ -1998,7 +2013,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fields['replyTo'], fields['replyTo'],fields['subject'])
|
||||
if messageJson:
|
||||
self.postToNickname=nickname
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domain, \
|
||||
|
@ -2020,7 +2035,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fields['replyTo'], fields['replyTo'],fields['subject'])
|
||||
if messageJson:
|
||||
self.postToNickname=nickname
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domain, \
|
||||
|
@ -2049,7 +2064,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.postToNickname=nickname
|
||||
if self.server.debug:
|
||||
print('DEBUG: new DM to '+str(messageJson['object']['to']))
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
populateReplies(self.server.baseDir, \
|
||||
self.server.httpPrefix, \
|
||||
self.server.domain, \
|
||||
|
@ -2079,7 +2094,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.debug,fields['subject'])
|
||||
if messageJson:
|
||||
self.postToNickname=nickname
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
return 1
|
||||
else:
|
||||
return -1
|
||||
|
@ -2461,7 +2476,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
'object': actorJson
|
||||
}
|
||||
self.postToNickname=nickname
|
||||
self._postToOutbox(updateActorJson)
|
||||
self._postToOutboxThread(updateActorJson)
|
||||
self._redirect_headers(actorStr,cookie)
|
||||
self.server.POSTbusy=False
|
||||
return
|
||||
|
@ -2737,7 +2752,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
pprint(deleteJson)
|
||||
self.postToNickname=getNicknameFromActor(removePostActor)
|
||||
if self.postToNickname:
|
||||
self._postToOutbox(deleteJson)
|
||||
self._postToOutboxThread(deleteJson)
|
||||
self._redirect_headers(originPathStr+'/outbox',cookie)
|
||||
self.server.POSTbusy=False
|
||||
return
|
||||
|
@ -2818,7 +2833,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
}
|
||||
pathUsersSection=self.path.split('/users/')[1]
|
||||
self.postToNickname=pathUsersSection.split('/')[0]
|
||||
self._postToOutbox(unfollowJson)
|
||||
self._postToOutboxThread(unfollowJson)
|
||||
self._redirect_headers(originPathStr,cookie)
|
||||
self.server.POSTbusy=False
|
||||
return
|
||||
|
@ -3165,7 +3180,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
# https://www.w3.org/TR/activitypub/#object-without-create
|
||||
if self.outboxAuthenticated:
|
||||
if self._postToOutbox(messageJson):
|
||||
if self._postToOutboxThread(messageJson):
|
||||
if messageJson.get('id'):
|
||||
self.headers['Location']= \
|
||||
messageJson['id'].replace('/activity','').replace('/undo','')
|
||||
|
@ -3293,6 +3308,7 @@ def runDaemon(projectVersion, \
|
|||
else:
|
||||
httpd = ThreadingHTTPServer(serverAddress, PubServer)
|
||||
# max POST size of 10M
|
||||
httpd.outboxThread=None
|
||||
httpd.projectVersion=projectVersion
|
||||
httpd.maxPostLength=1024*1024*30
|
||||
httpd.maxMediaSize=httpd.maxPostLength
|
||||
|
|
Loading…
Reference in New Issue