Tidying of session creation

merge-requests/30/head
Bob Mottram 2021-12-10 11:39:11 +00:00
parent e2cc26b416
commit 937de16731
1 changed files with 116 additions and 249 deletions

241
daemon.py
View File

@ -693,6 +693,19 @@ class PubServer(BaseHTTPRequestHandler):
return keyId return keyId
return None return None
def _establishSession(self, callingFunction: str) -> bool:
"""Recreates session if needed
"""
if self.server.session:
return True
print('DEBUG: creating new session during ' + callingFunction)
self.server.session = createSession(self.server.proxyType)
if self.server.session:
return True
print('ERROR: GET failed to create session during ' +
callingFunction)
return False
def _secureMode(self, force: bool = False) -> bool: def _secureMode(self, force: bool = False) -> bool:
"""http authentication of GET requests for json """http authentication of GET requests for json
""" """
@ -712,13 +725,7 @@ class PubServer(BaseHTTPRequestHandler):
print('AUTH: Secure mode GET request not permitted: ' + keyId) print('AUTH: Secure mode GET request not permitted: ' + keyId)
return False return False
# make sure we have a session if not self._establishSession("secure mode"):
if not self.server.session:
print('DEBUG: creating new session during authorized fetch')
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session during ' +
'secure mode')
return False return False
# obtain the public key # obtain the public key
@ -3485,14 +3492,7 @@ class PubServer(BaseHTTPRequestHandler):
return return
# profile search # profile search
nickname = getNicknameFromActor(actorStr) nickname = getNicknameFromActor(actorStr)
if not self.server.session: if not self._establishSession("handle search"):
print('Starting new session during handle search')
self.server.session = \
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: POST failed to create session ' +
'during handle search')
self._404()
self.server.POSTbusy = False self.server.POSTbusy = False
return return
profilePathStr = path.replace('/searchhandle', '') profilePathStr = path.replace('/searchhandle', '')
@ -6809,14 +6809,7 @@ class PubServer(BaseHTTPRequestHandler):
if not nickname.startswith('rss.'): if not nickname.startswith('rss.'):
accountDir = acctDir(self.server.baseDir, nickname, domain) accountDir = acctDir(self.server.baseDir, nickname, domain)
if os.path.isdir(accountDir): if os.path.isdir(accountDir):
if not self.server.session: if not self._establishSession("RSS request"):
print('Starting new session during RSS request')
self.server.session = \
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during RSS request')
self._404()
return return
msg = \ msg = \
@ -6858,13 +6851,7 @@ class PubServer(BaseHTTPRequestHandler):
debug: bool) -> None: debug: bool) -> None:
"""Returns an RSS2 feed for all blogs on this instance """Returns an RSS2 feed for all blogs on this instance
""" """
if not self.server.session: if not self._establishSession("getRSS2site"):
print('Starting new session during RSS request')
self.server.session = \
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during RSS request')
self._404() self._404()
return return
@ -6918,13 +6905,7 @@ class PubServer(BaseHTTPRequestHandler):
debug: bool) -> None: debug: bool) -> None:
"""Returns the newswire feed """Returns the newswire feed
""" """
if not self.server.session: if not self._establishSession("getNewswireFeed"):
print('Starting new session during RSS request')
self.server.session = \
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during RSS request')
self._404() self._404()
return return
@ -6958,13 +6939,7 @@ class PubServer(BaseHTTPRequestHandler):
debug: bool) -> None: debug: bool) -> None:
"""Returns the hashtag categories feed """Returns the hashtag categories feed
""" """
if not self.server.session: if not self._establishSession("getHashtagCategoriesFeed"):
print('Starting new session during RSS categories request')
self.server.session = \
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during RSS categories request')
self._404() self._404()
return return
@ -7002,13 +6977,7 @@ class PubServer(BaseHTTPRequestHandler):
if not nickname.startswith('rss.'): if not nickname.startswith('rss.'):
accountDir = acctDir(baseDir, nickname, domain) accountDir = acctDir(baseDir, nickname, domain)
if os.path.isdir(accountDir): if os.path.isdir(accountDir):
if not self.server.session: if not self._establishSession("getRSS3Feed"):
print('Starting new session during RSS3 request')
self.server.session = \
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during RSS3 request')
self._404() self._404()
return return
msg = \ msg = \
@ -7615,14 +7584,8 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("announceButton"):
print('Starting new session during repeat button')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during repeat button')
self._404() self._404()
self.server.GETbusy = False
return return
self.server.actorRepeat = path.split('?actor=')[1] self.server.actorRepeat = path.split('?actor=')[1]
announceToStr = \ announceToStr = \
@ -7733,7 +7696,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
repeatPrivate: bool, debug: bool, repeatPrivate: bool, debug: bool,
recentPostsCache: {}): recentPostsCache: {}) -> None:
"""Undo announce/repeat button was pressed """Undo announce/repeat button was pressed
""" """
pageNumber = 1 pageNumber = 1
@ -7774,14 +7737,8 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("undoAnnounceButton"):
print('Starting new session during undo repeat')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during undo repeat')
self._404() self._404()
self.server.GETbusy = False
return return
undoAnnounceActor = \ undoAnnounceActor = \
httpPrefix + '://' + domainFull + \ httpPrefix + '://' + domainFull + \
@ -7840,7 +7797,7 @@ class PubServer(BaseHTTPRequestHandler):
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, debug: bool): proxyType: str, debug: bool) -> None:
"""Follow approve button was pressed """Follow approve button was pressed
""" """
originPathStr = path.split('/followapprove=')[0] originPathStr = path.split('/followapprove=')[0]
@ -7852,14 +7809,8 @@ class PubServer(BaseHTTPRequestHandler):
followingHandle = \ followingHandle = \
handleNickname + '@' + getFullDomain(handleDomain, handlePort) handleNickname + '@' + getFullDomain(handleDomain, handlePort)
if '@' in followingHandle: if '@' in followingHandle:
if not self.server.session: if not self._establishSession("followApproveButton"):
print('Starting new session during follow approval')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during follow approval')
self._404() self._404()
self.server.GETbusy = False
return return
manualApproveFollowRequestThread(self.server.session, manualApproveFollowRequestThread(self.server.session,
baseDir, httpPrefix, baseDir, httpPrefix,
@ -8007,7 +7958,7 @@ class PubServer(BaseHTTPRequestHandler):
domain: str, domainFull: str, port: int, domain: str, domainFull: str, port: int,
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, debug: bool): proxyType: str, debug: bool) -> None:
"""Follow deny button was pressed """Follow deny button was pressed
""" """
originPathStr = path.split('/followdeny=')[0] originPathStr = path.split('/followdeny=')[0]
@ -8053,7 +8004,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""Press the like button """Press the like button
""" """
pageNumber = 1 pageNumber = 1
@ -8092,11 +8043,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("likeButton"):
print('Starting new session during like')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session during like')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -8225,7 +8172,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""A button is pressed to undo """A button is pressed to undo
""" """
pageNumber = 1 pageNumber = 1
@ -8263,12 +8210,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("undoLikeButton"):
print('Starting new session during undo like')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during undo like')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -8383,7 +8325,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""Press an emoji reaction button """Press an emoji reaction button
Note that this is not the emoji reaction selection icon at the Note that this is not the emoji reaction selection icon at the
bottom of the post bottom of the post
@ -8439,12 +8381,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("reactionButton"):
print('Starting new session during emoji reaction')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: ' +
'GET failed to create session during emoji reaction')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -8578,7 +8515,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""A button is pressed to undo emoji reaction """A button is pressed to undo emoji reaction
""" """
pageNumber = 1 pageNumber = 1
@ -8632,12 +8569,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain) callingDomain)
return return
emojiContent = urllib.parse.unquote_plus(emojiContentEncoded) emojiContent = urllib.parse.unquote_plus(emojiContentEncoded)
if not self.server.session: if not self._establishSession("undoReactionButton"):
print('Starting new session during undo emoji reaction')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during undo emoji reaction')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -8851,7 +8783,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""Bookmark button was pressed """Bookmark button was pressed
""" """
pageNumber = 1 pageNumber = 1
@ -8890,12 +8822,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("bookmarkButton"):
print('Starting new session during bookmark')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during bookmark')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -8986,7 +8913,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""Button pressed to undo a bookmark """Button pressed to undo a bookmark
""" """
pageNumber = 1 pageNumber = 1
@ -9024,12 +8951,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actorPathStr, cookie, self._redirect_headers(actorPathStr, cookie,
callingDomain) callingDomain)
return return
if not self.server.session: if not self._establishSession("undoBookmarkButton"):
print('Starting new session during undo bookmark')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during undo bookmark')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -9121,7 +9043,7 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
GETstartTime, GETstartTime,
proxyType: str, cookie: str, proxyType: str, cookie: str,
debug: str): debug: str) -> None:
"""Delete button is pressed on a post """Delete button is pressed on a post
""" """
if not cookie: if not cookie:
@ -9175,12 +9097,7 @@ class PubServer(BaseHTTPRequestHandler):
self._redirect_headers(actor + '/' + timelineStr, self._redirect_headers(actor + '/' + timelineStr,
cookie, callingDomain) cookie, callingDomain)
return return
if not self.server.session: if not self._establishSession("deleteButton"):
print('Starting new session during delete')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during delete')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return
@ -9506,15 +9423,10 @@ class PubServer(BaseHTTPRequestHandler):
} }
if self._requestHTTP(): if self._requestHTTP():
if not self.server.session: if not self._establishSession("showRepliesToPost"):
print('DEBUG: creating new session during get replies')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during get replies')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return True
recentPostsCache = self.server.recentPostsCache recentPostsCache = self.server.recentPostsCache
maxRecentPosts = self.server.maxRecentPosts maxRecentPosts = self.server.maxRecentPosts
translate = self.server.translate translate = self.server.translate
@ -9605,17 +9517,10 @@ class PubServer(BaseHTTPRequestHandler):
# send the replies json # send the replies json
if self._requestHTTP(): if self._requestHTTP():
if not self.server.session: if not self._establishSession("showRepliesToPost2"):
print('DEBUG: creating new session ' +
'during get replies 2')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to ' +
'create session ' +
'during get replies 2')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return return True
recentPostsCache = self.server.recentPostsCache recentPostsCache = self.server.recentPostsCache
maxRecentPosts = self.server.maxRecentPosts maxRecentPosts = self.server.maxRecentPosts
translate = self.server.translate translate = self.server.translate
@ -11850,12 +11755,7 @@ class PubServer(BaseHTTPRequestHandler):
searchPath.replace('/' + sharesFileType, ''), searchPath.replace('/' + sharesFileType, ''),
baseDir) baseDir)
if getPerson: if getPerson:
if not self.server.session: if not self._establishSession("showSharesFeed"):
print('Starting new session during profile')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during profile')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return True return True
@ -11975,12 +11875,7 @@ class PubServer(BaseHTTPRequestHandler):
searchPath.replace('/following', ''), searchPath.replace('/following', ''),
baseDir) baseDir)
if getPerson: if getPerson:
if not self.server.session: if not self._establishSession("showFollowingFeed"):
print('Starting new session during following')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during following')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return True return True
@ -12102,12 +11997,7 @@ class PubServer(BaseHTTPRequestHandler):
searchPath.replace('/followers', ''), searchPath.replace('/followers', ''),
baseDir) baseDir)
if getPerson: if getPerson:
if not self.server.session: if not self._establishSession("showFollowersFeed"):
print('Starting new session during following2')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during following2')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return True return True
@ -12248,12 +12138,7 @@ class PubServer(BaseHTTPRequestHandler):
if not actorJson: if not actorJson:
return False return False
if self._requestHTTP(): if self._requestHTTP():
if not self.server.session: if not self._establishSession("showPersonProfile"):
print('Starting new session during person lookup')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during person lookup')
self._404() self._404()
self.server.GETbusy = False self.server.GETbusy = False
return True return True
@ -12442,13 +12327,9 @@ class PubServer(BaseHTTPRequestHandler):
pageNumber = 1 pageNumber = 1
elif pageNumber > 10: elif pageNumber > 10:
pageNumber = 10 pageNumber = 10
if not self.server.session: if not self._establishSession("showBlogPage"):
print('Starting new session during blog page')
self.server.session = createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during blog page')
self._404() self._404()
self.server.GETbusy = False
return True return True
msg = htmlBlogPage(authorized, msg = htmlBlogPage(authorized,
self.server.session, self.server.session,
@ -13764,15 +13645,12 @@ class PubServer(BaseHTTPRequestHandler):
'_GET', '_mastoApi[callingDomain]', '_GET', '_mastoApi[callingDomain]',
self.server.debug) self.server.debug)
if not self.server.session: if not self._establishSession("GET"):
print('Starting new session during GET')
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session duing GET')
self._404() self._404()
fitnessPerformance(GETstartTime, self.server.fitness, fitnessPerformance(GETstartTime, self.server.fitness,
'_GET', 'session fail', '_GET', 'session fail',
self.server.debug) self.server.debug)
self.server.GETbusy = False
return return
fitnessPerformance(GETstartTime, self.server.fitness, fitnessPerformance(GETstartTime, self.server.fitness,
@ -14095,13 +13973,7 @@ class PubServer(BaseHTTPRequestHandler):
self.path == '/blogs' or self.path == '/blogs' or
self.path == '/blogs/'): self.path == '/blogs/'):
if '/rss.xml' not in self.path: if '/rss.xml' not in self.path:
if not self.server.session: if not self._establishSession("show the main blog page"):
print('Starting new session during blog view')
self.server.session = \
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session ' +
'during blog view')
self._404() self._404()
return return
msg = htmlBlogView(authorized, msg = htmlBlogView(authorized,
@ -17460,15 +17332,10 @@ class PubServer(BaseHTTPRequestHandler):
def do_POST(self): def do_POST(self):
POSTstartTime = time.time() POSTstartTime = time.time()
if not self.server.session: if not self._establishSession("POST"):
print('Starting new session from POST')
self.server.session = \
createSession(self.server.proxyType)
fitnessPerformance(POSTstartTime, self.server.fitness, fitnessPerformance(POSTstartTime, self.server.fitness,
'_POST', 'createSession', '_POST', 'createSession',
self.server.debug) self.server.debug)
if not self.server.session:
print('ERROR: POST failed to create session during POST')
self._404() self._404()
return return