Redirect to the inbox

main
Bob Mottram 2020-09-28 15:10:54 +01:00
parent f20c7a841d
commit 963aeb41a9
1 changed files with 215 additions and 150 deletions

205
daemon.py
View File

@ -5594,6 +5594,7 @@ class PubServer(BaseHTTPRequestHandler):
maxPostsInFeed, 'inbox', maxPostsInFeed, 'inbox',
authorized) authorized)
if inboxFeed: if inboxFeed:
if GETstartTime:
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
'show status done', 'show status done',
'show inbox json') 'show inbox json')
@ -5620,6 +5621,7 @@ class PubServer(BaseHTTPRequestHandler):
httpPrefix, httpPrefix,
maxPostsInFeed, 'inbox', maxPostsInFeed, 'inbox',
authorized) authorized)
if GETstartTime:
self._benchmarkGETtimings(GETstartTime, self._benchmarkGETtimings(GETstartTime,
GETtimings, GETtimings,
'show status done', 'show status done',
@ -5642,6 +5644,7 @@ class PubServer(BaseHTTPRequestHandler):
projectVersion, projectVersion,
self._isMinimal(nickname), self._isMinimal(nickname),
YTReplacementDomain) YTReplacementDomain)
if GETstartTime:
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
'show status done', 'show status done',
'show inbox html') 'show inbox html')
@ -5649,6 +5652,7 @@ class PubServer(BaseHTTPRequestHandler):
self._set_headers('text/html', len(msg), self._set_headers('text/html', len(msg),
cookie, callingDomain) cookie, callingDomain)
self._write(msg) self._write(msg)
if GETstartTime:
self._benchmarkGETtimings(GETstartTime, GETtimings, self._benchmarkGETtimings(GETstartTime, GETtimings,
'show status done', 'show status done',
'show inbox') 'show inbox')
@ -9116,29 +9120,61 @@ class PubServer(BaseHTTPRequestHandler):
self._set_headers_head(mediaFileType, fileLength, self._set_headers_head(mediaFileType, fileLength,
etag, callingDomain) etag, callingDomain)
def _redirectAfterPost(self, boxName: str, path: str, def _showSendingScreen(self, authorized: bool, callingDomain: str) -> None:
"""Shows a 'sending post' wait screen
"""
if self.server.defaultTimeline != 'inbox':
return
# make a copy of the headers
currHeaders = self.headers.items()
# show a sending post screen
msg = \
htmlSendingPost(self.server.baseDir,
self.server.translate).encode('utf-8')
self._login_headers('text/html', len(msg), callingDomain)
self._write(msg)
# restore headers
for headerField in currHeaders:
fieldName = headerField[0]
fieldValue = headerField[1]
self.headers[fieldName] = fieldValue
def _clearSendingScreen(self, authorized: bool,
boxName: str, path: str,
callingDomain: str, cookie: str) -> None: callingDomain: str, cookie: str) -> None:
"""Redirects to the given box """Redirects to the given box
""" """
if '/users/' not in path: if boxName != 'inbox':
return return
nickname = path.split('/users/')[1] self._showInbox(authorized,
if '/' in nickname: callingDomain, self.path,
nickname = nickname.split('/')[0] self.server.baseDir,
usersPath = '/users/' + nickname self.server.httpPrefix,
actorStr = self.server.httpPrefix + '://' + self.server.domainFull + \ self.server.domain,
path.split('/users/')[0] + usersPath self.server.domainFull,
if callingDomain.endswith('.onion') and self.server.onionDomain: self.server.port,
actorStr = 'http://' + self.server.onionDomain + usersPath self.server.onionDomain,
elif (callingDomain.endswith('.i2p') and self.server.i2pDomain): self.server.i2pDomain,
actorStr = 'http://' + self.server.i2pDomain + usersPath None, None,
print('Redirecting to: ' + actorStr + '/' + boxName) self.server.proxyType,
self._redirect_headers(actorStr + '/' + boxName, cookie, self.server.debug,
cookie, callingDomain) self.server.recentPostsCache,
self.server.session,
self.server.defaultTimeline,
self.server.maxRecentPosts,
self.server.translate,
self.server.cachedWebfingers,
self.server.personCache,
self.server.allowDeletion,
self.server.projectVersion,
self.server.YTReplacementDomain)
def _receiveNewPostProcess(self, postType: str, path: str, headers: {}, def _receiveNewPostProcess(self, postType: str, path: str, headers: {},
length: int, postBytes, boundary: str, length: int, postBytes, boundary: str,
callingDomain: str, cookie: str) -> int: callingDomain: str, cookie: str,
authorized: bool) -> int:
# Note: this needs to happen synchronously # Note: this needs to happen synchronously
# 0=this is not a new post # 0=this is not a new post
# 1=new post success # 1=new post success
@ -9280,19 +9316,7 @@ class PubServer(BaseHTTPRequestHandler):
else: else:
privateEvent = True privateEvent = True
# make a copy of the headers self._showSendingScreen(authorized, callingDomain)
currHeaders = self.headers.items()
# show a sending post screen
msg = \
htmlSendingPost(self.server.baseDir,
self.server.translate).encode('utf-8')
self._login_headers('text/html', len(msg), callingDomain)
self._write(msg)
# restore headers
for headerField in currHeaders:
fieldName = headerField[0]
fieldValue = headerField[1]
self.headers[fieldName] = fieldValue
if postType == 'newpost': if postType == 'newpost':
messageJson = \ messageJson = \
@ -9312,7 +9336,8 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9324,12 +9349,14 @@ class PubServer(BaseHTTPRequestHandler):
messageJson, messageJson,
self.server.maxReplies, self.server.maxReplies,
self.server.debug) self.server.debug)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9349,7 +9376,8 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9360,12 +9388,14 @@ class PubServer(BaseHTTPRequestHandler):
messageJson, messageJson,
self.server.maxReplies, self.server.maxReplies,
self.server.debug) self.server.debug)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9436,7 +9466,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.YTReplacementDomain) self.server.YTReplacementDomain)
saveJson(postJsonObject, postFilename) saveJson(postJsonObject, postFilename)
print('Edited blog post, resaved ' + postFilename) print('Edited blog post, resaved ' + postFilename)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9446,7 +9477,8 @@ class PubServer(BaseHTTPRequestHandler):
else: else:
print('Edited blog post not found ' + print('Edited blog post not found ' +
str(fields['postUrl'])) str(fields['postUrl']))
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
elif postType == 'newunlisted': elif postType == 'newunlisted':
@ -9469,7 +9501,8 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9480,12 +9513,14 @@ class PubServer(BaseHTTPRequestHandler):
messageJson, messageJson,
self.server.maxReplies, self.server.maxReplies,
self.server.debug) self.server.debug)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9511,7 +9546,8 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9522,12 +9558,14 @@ class PubServer(BaseHTTPRequestHandler):
messageJson, messageJson,
self.server.maxReplies, self.server.maxReplies,
self.server.debug) self.server.debug)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9580,17 +9618,20 @@ class PubServer(BaseHTTPRequestHandler):
fields['ticketUrl']) fields['ticketUrl'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
if self._postToOutbox(messageJson, __version__, nickname): if self._postToOutbox(messageJson, __version__, nickname):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9620,7 +9661,8 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
@ -9633,12 +9675,14 @@ class PubServer(BaseHTTPRequestHandler):
messageJson, messageJson,
self.server.maxReplies, self.server.maxReplies,
self.server.debug) self.server.debug)
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9667,26 +9711,30 @@ class PubServer(BaseHTTPRequestHandler):
fields['location']) fields['location'])
if messageJson: if messageJson:
if fields['schedulePost']: if fields['schedulePost']:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
print('DEBUG: new reminder to ' + print('DEBUG: new reminder to ' +
str(messageJson['object']['to'])) str(messageJson['object']['to']))
if self._postToOutbox(messageJson, __version__, nickname): if self._postToOutbox(messageJson, __version__, nickname):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
elif postType == 'newreport': elif postType == 'newreport':
if attachmentMediaType: if attachmentMediaType:
if attachmentMediaType != 'image': if attachmentMediaType != 'image':
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9707,23 +9755,27 @@ class PubServer(BaseHTTPRequestHandler):
self.server.debug, fields['subject']) self.server.debug, fields['subject'])
if messageJson: if messageJson:
if self._postToOutbox(messageJson, __version__, nickname): if self._postToOutbox(messageJson, __version__, nickname):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
else: else:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
elif postType == 'newquestion': elif postType == 'newquestion':
if not fields.get('duration'): if not fields.get('duration'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
if not fields.get('message'): if not fields.get('message'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
# questionStr = fields['message'] # questionStr = fields['message']
@ -9733,7 +9785,8 @@ class PubServer(BaseHTTPRequestHandler):
qOptions.append(fields['questionOption' + qOptions.append(fields['questionOption' +
str(questionCtr)]) str(questionCtr)])
if not qOptions: if not qOptions:
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
messageJson = \ messageJson = \
@ -9754,33 +9807,40 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug: if self.server.debug:
print('DEBUG: new Question') print('DEBUG: new Question')
if self._postToOutbox(messageJson, __version__, nickname): if self._postToOutbox(messageJson, __version__, nickname):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return 1 return 1
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
elif postType == 'newshare': elif postType == 'newshare':
if not fields.get('itemType'): if not fields.get('itemType'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
if not fields.get('category'): if not fields.get('category'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
if not fields.get('location'): if not fields.get('location'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
if not fields.get('duration'): if not fields.get('duration'):
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
if attachmentMediaType: if attachmentMediaType:
if attachmentMediaType != 'image': if attachmentMediaType != 'image':
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, self.path, callingDomain,
cookie) cookie)
return -1 return -1
@ -9804,15 +9864,18 @@ class PubServer(BaseHTTPRequestHandler):
if os.path.isfile(filename): if os.path.isfile(filename):
os.remove(filename) os.remove(filename)
self.postToNickname = nickname self.postToNickname = nickname
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return 1 return 1
self._redirectAfterPost(self.server.defaultTimeline, self._clearSendingScreen(authorized,
self.server.defaultTimeline,
self.path, callingDomain, cookie) self.path, callingDomain, cookie)
return -1 return -1
def _receiveNewPost(self, postType: str, path: str, def _receiveNewPost(self, postType: str, path: str,
callingDomain: str, cookie: str) -> int: callingDomain: str, cookie: str,
authorized: bool) -> int:
"""A new post has been created """A new post has been created
This creates a thread to send the new post This creates a thread to send the new post
""" """
@ -9914,7 +9977,8 @@ class PubServer(BaseHTTPRequestHandler):
self._receiveNewPostProcess(postType, self._receiveNewPostProcess(postType,
path, headers, length, path, headers, length,
postBytes, boundary, postBytes, boundary,
callingDomain, cookie) callingDomain, cookie,
authorized)
return pageNumber return pageNumber
def _cryptoAPIreadHandle(self): def _cryptoAPIreadHandle(self):
@ -10376,7 +10440,8 @@ class PubServer(BaseHTTPRequestHandler):
pageNumber = \ pageNumber = \
self._receiveNewPost(currPostType, self.path, self._receiveNewPost(currPostType, self.path,
callingDomain, cookie) callingDomain, cookie,
authorized)
if pageNumber: if pageNumber:
nickname = self.path.split('/users/')[1] nickname = self.path.split('/users/')[1]
if '/' in nickname: if '/' in nickname: