mirror of https://gitlab.com/bashrc2/epicyon
Tidying of person options
parent
c4413ea3a9
commit
6b5b0ea16a
659
daemon.py
659
daemon.py
|
@ -1181,6 +1181,342 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
'/users/' + nickname + '/statuses/' + userEnding2[1]
|
'/users/' + nickname + '/statuses/' + userEnding2[1]
|
||||||
return locatePost(baseDir, nickname, domain, messageId), nickname
|
return locatePost(baseDir, nickname, domain, messageId), nickname
|
||||||
|
|
||||||
|
def _personOptions(self, path: str, callingDomain: str, cookie: str,
|
||||||
|
baseDir: str, httpPrefix: str,
|
||||||
|
domain: str, domainFull: str, port: int,
|
||||||
|
onionDomain: str, i2pDomain: str,
|
||||||
|
debug: bool):
|
||||||
|
"""Receive POST from person options screen
|
||||||
|
"""
|
||||||
|
pageNumber = 1
|
||||||
|
usersPath = path.split('/personoptions')[0]
|
||||||
|
originPathStr = httpPrefix + '://' + domainFull + usersPath
|
||||||
|
|
||||||
|
chooserNickname = getNicknameFromActor(originPathStr)
|
||||||
|
if not chooserNickname:
|
||||||
|
if callingDomain.endswith('.onion') and onionDomain:
|
||||||
|
originPathStr = 'http://' + onionDomain + usersPath
|
||||||
|
elif (callingDomain.endswith('.i2p') and i2pDomain):
|
||||||
|
originPathStr = 'http://' + i2pDomain + usersPath
|
||||||
|
print('WARN: unable to find nickname in ' + originPathStr)
|
||||||
|
self._redirect_headers(originPathStr, cookie, callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
length = int(self.headers['Content-length'])
|
||||||
|
|
||||||
|
try:
|
||||||
|
optionsConfirmParams = self.rfile.read(length).decode('utf-8')
|
||||||
|
except SocketError as e:
|
||||||
|
if e.errno == errno.ECONNRESET:
|
||||||
|
print('WARN: POST optionsConfirmParams ' +
|
||||||
|
'connection reset by peer')
|
||||||
|
else:
|
||||||
|
print('WARN: POST optionsConfirmParams socket error')
|
||||||
|
self.send_response(400)
|
||||||
|
self.end_headers()
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
except ValueError as e:
|
||||||
|
print('ERROR: POST optionsConfirmParams rfile.read failed')
|
||||||
|
print(e)
|
||||||
|
self.send_response(400)
|
||||||
|
self.end_headers()
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
optionsConfirmParams = \
|
||||||
|
urllib.parse.unquote_plus(optionsConfirmParams)
|
||||||
|
|
||||||
|
# page number to return to
|
||||||
|
if 'pageNumber=' in optionsConfirmParams:
|
||||||
|
pageNumberStr = optionsConfirmParams.split('pageNumber=')[1]
|
||||||
|
if '&' in pageNumberStr:
|
||||||
|
pageNumberStr = pageNumberStr.split('&')[0]
|
||||||
|
if pageNumberStr.isdigit():
|
||||||
|
pageNumber = int(pageNumberStr)
|
||||||
|
|
||||||
|
# actor for the person
|
||||||
|
optionsActor = optionsConfirmParams.split('actor=')[1]
|
||||||
|
if '&' in optionsActor:
|
||||||
|
optionsActor = optionsActor.split('&')[0]
|
||||||
|
|
||||||
|
# url of the avatar
|
||||||
|
optionsAvatarUrl = optionsConfirmParams.split('avatarUrl=')[1]
|
||||||
|
if '&' in optionsAvatarUrl:
|
||||||
|
optionsAvatarUrl = optionsAvatarUrl.split('&')[0]
|
||||||
|
|
||||||
|
# link to a post, which can then be included in reports
|
||||||
|
postUrl = None
|
||||||
|
if 'postUrl' in optionsConfirmParams:
|
||||||
|
postUrl = optionsConfirmParams.split('postUrl=')[1]
|
||||||
|
if '&' in postUrl:
|
||||||
|
postUrl = postUrl.split('&')[0]
|
||||||
|
|
||||||
|
# petname for this person
|
||||||
|
petname = None
|
||||||
|
if 'optionpetname' in optionsConfirmParams:
|
||||||
|
petname = optionsConfirmParams.split('optionpetname=')[1]
|
||||||
|
if '&' in petname:
|
||||||
|
petname = petname.split('&')[0]
|
||||||
|
# Limit the length of the petname
|
||||||
|
if len(petname) > 20 or \
|
||||||
|
' ' in petname or '/' in petname or \
|
||||||
|
'?' in petname or '#' in petname:
|
||||||
|
petname = None
|
||||||
|
|
||||||
|
# notes about this person
|
||||||
|
personNotes = None
|
||||||
|
if 'optionnotes' in optionsConfirmParams:
|
||||||
|
personNotes = optionsConfirmParams.split('optionnotes=')[1]
|
||||||
|
if '&' in personNotes:
|
||||||
|
personNotes = personNotes.split('&')[0]
|
||||||
|
personNotes = urllib.parse.unquote_plus(personNotes.strip())
|
||||||
|
# Limit the length of the notes
|
||||||
|
if len(personNotes) > 64000:
|
||||||
|
personNotes = None
|
||||||
|
|
||||||
|
# get the nickname
|
||||||
|
optionsNickname = getNicknameFromActor(optionsActor)
|
||||||
|
if not optionsNickname:
|
||||||
|
if callingDomain.endswith('.onion') and onionDomain:
|
||||||
|
originPathStr = 'http://' + onionDomain + usersPath
|
||||||
|
elif (callingDomain.endswith('.i2p') and i2pDomain):
|
||||||
|
originPathStr = 'http://' + i2pDomain + usersPath
|
||||||
|
print('WARN: unable to find nickname in ' + optionsActor)
|
||||||
|
self._redirect_headers(originPathStr, cookie, callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
optionsDomain, optionsPort = getDomainFromActor(optionsActor)
|
||||||
|
optionsDomainFull = optionsDomain
|
||||||
|
if optionsPort:
|
||||||
|
if optionsPort != 80 and optionsPort != 443:
|
||||||
|
if ':' not in optionsDomain:
|
||||||
|
optionsDomainFull = optionsDomain + ':' + \
|
||||||
|
str(optionsPort)
|
||||||
|
if chooserNickname == optionsNickname and \
|
||||||
|
optionsDomain == domain and \
|
||||||
|
optionsPort == port:
|
||||||
|
if debug:
|
||||||
|
print('You cannot perform an option action on yourself')
|
||||||
|
|
||||||
|
# view button on person option screen
|
||||||
|
if '&submitView=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Viewing ' + optionsActor)
|
||||||
|
self._redirect_headers(optionsActor,
|
||||||
|
cookie, callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# petname submit button on person option screen
|
||||||
|
if '&submitPetname=' in optionsConfirmParams and petname:
|
||||||
|
if debug:
|
||||||
|
print('Change petname to ' + petname)
|
||||||
|
handle = optionsNickname + '@' + optionsDomainFull
|
||||||
|
setPetName(baseDir,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
handle, petname)
|
||||||
|
self._redirect_headers(usersPath + '/' +
|
||||||
|
self.server.defaultTimeline +
|
||||||
|
'?page='+str(pageNumber), cookie,
|
||||||
|
callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# person notes submit button on person option screen
|
||||||
|
if '&submitPersonNotes=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Change person notes')
|
||||||
|
handle = optionsNickname + '@' + optionsDomainFull
|
||||||
|
if not personNotes:
|
||||||
|
personNotes = ''
|
||||||
|
setPersonNotes(baseDir,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
handle, personNotes)
|
||||||
|
self._redirect_headers(usersPath + '/' +
|
||||||
|
self.server.defaultTimeline +
|
||||||
|
'?page='+str(pageNumber), cookie,
|
||||||
|
callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# person on calendar checkbox on person option screen
|
||||||
|
if '&submitOnCalendar=' in optionsConfirmParams:
|
||||||
|
onCalendar = None
|
||||||
|
if 'onCalendar=' in optionsConfirmParams:
|
||||||
|
onCalendar = optionsConfirmParams.split('onCalendar=')[1]
|
||||||
|
if '&' in onCalendar:
|
||||||
|
onCalendar = onCalendar.split('&')[0]
|
||||||
|
if onCalendar == 'on':
|
||||||
|
addPersonToCalendar(baseDir,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
optionsNickname,
|
||||||
|
optionsDomainFull)
|
||||||
|
else:
|
||||||
|
removePersonFromCalendar(baseDir,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
optionsNickname,
|
||||||
|
optionsDomainFull)
|
||||||
|
self._redirect_headers(usersPath + '/' +
|
||||||
|
self.server.defaultTimeline +
|
||||||
|
'?page='+str(pageNumber), cookie,
|
||||||
|
callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# block person button on person option screen
|
||||||
|
if '&submitBlock=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Adding block by ' + chooserNickname +
|
||||||
|
' of ' + optionsActor)
|
||||||
|
addBlock(baseDir, chooserNickname,
|
||||||
|
domain,
|
||||||
|
optionsNickname, optionsDomainFull)
|
||||||
|
|
||||||
|
# unblock button on person option screen
|
||||||
|
if '&submitUnblock=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Unblocking ' + optionsActor)
|
||||||
|
msg = \
|
||||||
|
htmlUnblockConfirm(self.server.translate,
|
||||||
|
baseDir,
|
||||||
|
usersPath,
|
||||||
|
optionsActor,
|
||||||
|
optionsAvatarUrl).encode('utf-8')
|
||||||
|
self._set_headers('text/html', len(msg),
|
||||||
|
cookie, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# follow button on person option screen
|
||||||
|
if '&submitFollow=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Following ' + optionsActor)
|
||||||
|
msg = \
|
||||||
|
htmlFollowConfirm(self.server.translate,
|
||||||
|
baseDir,
|
||||||
|
usersPath,
|
||||||
|
optionsActor,
|
||||||
|
optionsAvatarUrl).encode('utf-8')
|
||||||
|
self._set_headers('text/html', len(msg),
|
||||||
|
cookie, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# unfollow button on person option screen
|
||||||
|
if '&submitUnfollow=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Unfollowing ' + optionsActor)
|
||||||
|
msg = \
|
||||||
|
htmlUnfollowConfirm(self.server.translate,
|
||||||
|
baseDir,
|
||||||
|
usersPath,
|
||||||
|
optionsActor,
|
||||||
|
optionsAvatarUrl).encode('utf-8')
|
||||||
|
self._set_headers('text/html', len(msg),
|
||||||
|
cookie, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# DM button on person option screen
|
||||||
|
if '&submitDM=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Sending DM to ' + optionsActor)
|
||||||
|
reportPath = self.path.replace('/personoptions', '') + '/newdm'
|
||||||
|
msg = htmlNewPost(False, self.server.translate,
|
||||||
|
baseDir,
|
||||||
|
httpPrefix,
|
||||||
|
reportPath, None,
|
||||||
|
[optionsActor], None,
|
||||||
|
pageNumber,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
domainFull).encode('utf-8')
|
||||||
|
self._set_headers('text/html', len(msg),
|
||||||
|
cookie, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# snooze button on person option screen
|
||||||
|
if '&submitSnooze=' in optionsConfirmParams:
|
||||||
|
usersPath = self.path.split('/personoptions')[0]
|
||||||
|
thisActor = httpPrefix + '://' + domainFull + usersPath
|
||||||
|
if debug:
|
||||||
|
print('Snoozing ' + optionsActor + ' ' + thisActor)
|
||||||
|
if '/users/' in thisActor:
|
||||||
|
nickname = thisActor.split('/users/')[1]
|
||||||
|
personSnooze(baseDir, nickname,
|
||||||
|
domain, optionsActor)
|
||||||
|
if callingDomain.endswith('.onion') and onionDomain:
|
||||||
|
thisActor = 'http://' + onionDomain + usersPath
|
||||||
|
elif (callingDomain.endswith('.i2p') and i2pDomain):
|
||||||
|
thisActor = 'http://' + i2pDomain + usersPath
|
||||||
|
self._redirect_headers(thisActor + '/' +
|
||||||
|
self.server.defaultTimeline +
|
||||||
|
'?page='+str(pageNumber), cookie,
|
||||||
|
callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# unsnooze button on person option screen
|
||||||
|
if '&submitUnSnooze=' in optionsConfirmParams:
|
||||||
|
usersPath = path.split('/personoptions')[0]
|
||||||
|
thisActor = httpPrefix + '://' + domainFull + usersPath
|
||||||
|
if debug:
|
||||||
|
print('Unsnoozing ' + optionsActor + ' ' + thisActor)
|
||||||
|
if '/users/' in thisActor:
|
||||||
|
nickname = thisActor.split('/users/')[1]
|
||||||
|
personUnsnooze(baseDir, nickname,
|
||||||
|
domain, optionsActor)
|
||||||
|
if callingDomain.endswith('.onion') and onionDomain:
|
||||||
|
thisActor = 'http://' + onionDomain + usersPath
|
||||||
|
elif (callingDomain.endswith('.i2p') and i2pDomain):
|
||||||
|
thisActor = 'http://' + i2pDomain + usersPath
|
||||||
|
self._redirect_headers(thisActor + '/' +
|
||||||
|
self.server.defaultTimeline +
|
||||||
|
'?page=' + str(pageNumber), cookie,
|
||||||
|
callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# report button on person option screen
|
||||||
|
if '&submitReport=' in optionsConfirmParams:
|
||||||
|
if debug:
|
||||||
|
print('Reporting ' + optionsActor)
|
||||||
|
reportPath = \
|
||||||
|
path.replace('/personoptions', '') + '/newreport'
|
||||||
|
msg = htmlNewPost(False, self.server.translate,
|
||||||
|
baseDir,
|
||||||
|
httpPrefix,
|
||||||
|
reportPath, None, [],
|
||||||
|
postUrl, pageNumber,
|
||||||
|
chooserNickname,
|
||||||
|
domain,
|
||||||
|
domainFull).encode('utf-8')
|
||||||
|
self._set_headers('text/html', len(msg),
|
||||||
|
cookie, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
|
# redirect back from person options screen
|
||||||
|
if callingDomain.endswith('.onion') and onionDomain:
|
||||||
|
originPathStr = 'http://' + onionDomain + usersPath
|
||||||
|
elif callingDomain.endswith('.i2p') and i2pDomain:
|
||||||
|
originPathStr = 'http://' + i2pDomain + usersPath
|
||||||
|
self._redirect_headers(originPathStr, cookie, callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
def _profileUpdate(self, callingDomain: str, cookie: str,
|
def _profileUpdate(self, callingDomain: str, cookie: str,
|
||||||
authorized: bool, path: str,
|
authorized: bool, path: str,
|
||||||
baseDir: str, httpPrefix: str,
|
baseDir: str, httpPrefix: str,
|
||||||
|
@ -8746,322 +9082,13 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
# an option was chosen from person options screen
|
# an option was chosen from person options screen
|
||||||
# view/follow/block/report
|
# view/follow/block/report
|
||||||
if authorized and self.path.endswith('/personoptions'):
|
if authorized and self.path.endswith('/personoptions'):
|
||||||
pageNumber = 1
|
self._personOptions(self, self.path, callingDomain, cookie,
|
||||||
usersPath = self.path.split('/personoptions')[0]
|
self.server.baseDir, self.server.httpPrefix,
|
||||||
originPathStr = \
|
self.server.domain, self.server.domainFull,
|
||||||
self.server.httpPrefix + '://' + \
|
self.server.port,
|
||||||
self.server.domainFull + usersPath
|
self.server.onionDomain,
|
||||||
|
self.server.i2pDomain,
|
||||||
chooserNickname = getNicknameFromActor(originPathStr)
|
self.server.debug)
|
||||||
if not chooserNickname:
|
|
||||||
if callingDomain.endswith('.onion') and \
|
|
||||||
self.server.onionDomain:
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.onionDomain + usersPath
|
|
||||||
elif (callingDomain.endswith('.i2p') and
|
|
||||||
self.server.i2pDomain):
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.i2pDomain + usersPath
|
|
||||||
print('WARN: unable to find nickname in ' + originPathStr)
|
|
||||||
self._redirect_headers(originPathStr, cookie, callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
length = int(self.headers['Content-length'])
|
|
||||||
try:
|
|
||||||
optionsConfirmParams = self.rfile.read(length).decode('utf-8')
|
|
||||||
except SocketError as e:
|
|
||||||
if e.errno == errno.ECONNRESET:
|
|
||||||
print('WARN: POST optionsConfirmParams ' +
|
|
||||||
'connection reset by peer')
|
|
||||||
else:
|
|
||||||
print('WARN: POST optionsConfirmParams socket error')
|
|
||||||
self.send_response(400)
|
|
||||||
self.end_headers()
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
except ValueError as e:
|
|
||||||
print('ERROR: POST optionsConfirmParams rfile.read failed')
|
|
||||||
print(e)
|
|
||||||
self.send_response(400)
|
|
||||||
self.end_headers()
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
optionsConfirmParams = \
|
|
||||||
urllib.parse.unquote_plus(optionsConfirmParams)
|
|
||||||
# page number to return to
|
|
||||||
if 'pageNumber=' in optionsConfirmParams:
|
|
||||||
pageNumberStr = optionsConfirmParams.split('pageNumber=')[1]
|
|
||||||
if '&' in pageNumberStr:
|
|
||||||
pageNumberStr = pageNumberStr.split('&')[0]
|
|
||||||
if pageNumberStr.isdigit():
|
|
||||||
pageNumber = int(pageNumberStr)
|
|
||||||
# actor for the person
|
|
||||||
optionsActor = optionsConfirmParams.split('actor=')[1]
|
|
||||||
if '&' in optionsActor:
|
|
||||||
optionsActor = optionsActor.split('&')[0]
|
|
||||||
# url of the avatar
|
|
||||||
optionsAvatarUrl = optionsConfirmParams.split('avatarUrl=')[1]
|
|
||||||
if '&' in optionsAvatarUrl:
|
|
||||||
optionsAvatarUrl = optionsAvatarUrl.split('&')[0]
|
|
||||||
# link to a post, which can then be included in reports
|
|
||||||
postUrl = None
|
|
||||||
if 'postUrl' in optionsConfirmParams:
|
|
||||||
postUrl = optionsConfirmParams.split('postUrl=')[1]
|
|
||||||
if '&' in postUrl:
|
|
||||||
postUrl = postUrl.split('&')[0]
|
|
||||||
petname = None
|
|
||||||
if 'optionpetname' in optionsConfirmParams:
|
|
||||||
petname = optionsConfirmParams.split('optionpetname=')[1]
|
|
||||||
if '&' in petname:
|
|
||||||
petname = petname.split('&')[0]
|
|
||||||
# Limit the length of the petname
|
|
||||||
if len(petname) > 20 or \
|
|
||||||
' ' in petname or '/' in petname or \
|
|
||||||
'?' in petname or '#' in petname:
|
|
||||||
petname = None
|
|
||||||
|
|
||||||
personNotes = None
|
|
||||||
if 'optionnotes' in optionsConfirmParams:
|
|
||||||
personNotes = optionsConfirmParams.split('optionnotes=')[1]
|
|
||||||
if '&' in personNotes:
|
|
||||||
personNotes = personNotes.split('&')[0]
|
|
||||||
personNotes = urllib.parse.unquote_plus(personNotes.strip())
|
|
||||||
# Limit the length of the notes
|
|
||||||
if len(personNotes) > 64000:
|
|
||||||
personNotes = None
|
|
||||||
|
|
||||||
optionsNickname = getNicknameFromActor(optionsActor)
|
|
||||||
if not optionsNickname:
|
|
||||||
if callingDomain.endswith('.onion') and \
|
|
||||||
self.server.onionDomain:
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.onionDomain + usersPath
|
|
||||||
elif (callingDomain.endswith('.i2p') and
|
|
||||||
self.server.i2pDomain):
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.i2pDomain + usersPath
|
|
||||||
print('WARN: unable to find nickname in ' + optionsActor)
|
|
||||||
self._redirect_headers(originPathStr, cookie, callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
optionsDomain, optionsPort = getDomainFromActor(optionsActor)
|
|
||||||
optionsDomainFull = optionsDomain
|
|
||||||
if optionsPort:
|
|
||||||
if optionsPort != 80 and optionsPort != 443:
|
|
||||||
if ':' not in optionsDomain:
|
|
||||||
optionsDomainFull = optionsDomain + ':' + \
|
|
||||||
str(optionsPort)
|
|
||||||
if chooserNickname == optionsNickname and \
|
|
||||||
optionsDomain == self.server.domain and \
|
|
||||||
optionsPort == self.server.port:
|
|
||||||
if self.server.debug:
|
|
||||||
print('You cannot perform an option action on yourself')
|
|
||||||
|
|
||||||
if '&submitView=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Viewing ' + optionsActor)
|
|
||||||
self._redirect_headers(optionsActor,
|
|
||||||
cookie, callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitPetname=' in optionsConfirmParams and petname:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Change petname to ' + petname)
|
|
||||||
handle = optionsNickname + '@' + optionsDomainFull
|
|
||||||
setPetName(self.server.baseDir,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
handle, petname)
|
|
||||||
self._redirect_headers(usersPath + '/' +
|
|
||||||
self.server.defaultTimeline +
|
|
||||||
'?page='+str(pageNumber), cookie,
|
|
||||||
callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitPersonNotes=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Change person notes')
|
|
||||||
handle = optionsNickname + '@' + optionsDomainFull
|
|
||||||
if not personNotes:
|
|
||||||
personNotes = ''
|
|
||||||
setPersonNotes(self.server.baseDir,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
handle, personNotes)
|
|
||||||
self._redirect_headers(usersPath + '/' +
|
|
||||||
self.server.defaultTimeline +
|
|
||||||
'?page='+str(pageNumber), cookie,
|
|
||||||
callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitOnCalendar=' in optionsConfirmParams:
|
|
||||||
onCalendar = None
|
|
||||||
if 'onCalendar=' in optionsConfirmParams:
|
|
||||||
onCalendar = optionsConfirmParams.split('onCalendar=')[1]
|
|
||||||
if '&' in onCalendar:
|
|
||||||
onCalendar = onCalendar.split('&')[0]
|
|
||||||
if onCalendar == 'on':
|
|
||||||
addPersonToCalendar(self.server.baseDir,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
optionsNickname,
|
|
||||||
optionsDomainFull)
|
|
||||||
else:
|
|
||||||
removePersonFromCalendar(self.server.baseDir,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
optionsNickname,
|
|
||||||
optionsDomainFull)
|
|
||||||
self._redirect_headers(usersPath + '/' +
|
|
||||||
self.server.defaultTimeline +
|
|
||||||
'?page='+str(pageNumber), cookie,
|
|
||||||
callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitBlock=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Adding block by ' + chooserNickname +
|
|
||||||
' of ' + optionsActor)
|
|
||||||
addBlock(self.server.baseDir, chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
optionsNickname, optionsDomainFull)
|
|
||||||
if '&submitUnblock=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Unblocking ' + optionsActor)
|
|
||||||
msg = \
|
|
||||||
htmlUnblockConfirm(self.server.translate,
|
|
||||||
self.server.baseDir,
|
|
||||||
usersPath,
|
|
||||||
optionsActor,
|
|
||||||
optionsAvatarUrl).encode('utf-8')
|
|
||||||
self._set_headers('text/html', len(msg),
|
|
||||||
cookie, callingDomain)
|
|
||||||
self._write(msg)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitFollow=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Following ' + optionsActor)
|
|
||||||
msg = \
|
|
||||||
htmlFollowConfirm(self.server.translate,
|
|
||||||
self.server.baseDir,
|
|
||||||
usersPath,
|
|
||||||
optionsActor,
|
|
||||||
optionsAvatarUrl).encode('utf-8')
|
|
||||||
self._set_headers('text/html', len(msg),
|
|
||||||
cookie, callingDomain)
|
|
||||||
self._write(msg)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitUnfollow=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Unfollowing ' + optionsActor)
|
|
||||||
msg = \
|
|
||||||
htmlUnfollowConfirm(self.server.translate,
|
|
||||||
self.server.baseDir,
|
|
||||||
usersPath,
|
|
||||||
optionsActor,
|
|
||||||
optionsAvatarUrl).encode('utf-8')
|
|
||||||
self._set_headers('text/html', len(msg),
|
|
||||||
cookie, callingDomain)
|
|
||||||
self._write(msg)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitDM=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Sending DM to ' + optionsActor)
|
|
||||||
reportPath = self.path.replace('/personoptions', '') + '/newdm'
|
|
||||||
msg = htmlNewPost(False, self.server.translate,
|
|
||||||
self.server.baseDir,
|
|
||||||
self.server.httpPrefix,
|
|
||||||
reportPath, None,
|
|
||||||
[optionsActor], None,
|
|
||||||
pageNumber,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
self.server.domainFull).encode('utf-8')
|
|
||||||
self._set_headers('text/html', len(msg),
|
|
||||||
cookie, callingDomain)
|
|
||||||
self._write(msg)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitSnooze=' in optionsConfirmParams:
|
|
||||||
usersPath = self.path.split('/personoptions')[0]
|
|
||||||
thisActor = \
|
|
||||||
self.server.httpPrefix + '://' + \
|
|
||||||
self.server.domainFull+usersPath
|
|
||||||
if self.server.debug:
|
|
||||||
print('Snoozing ' + optionsActor + ' ' + thisActor)
|
|
||||||
if '/users/' in thisActor:
|
|
||||||
nickname = thisActor.split('/users/')[1]
|
|
||||||
personSnooze(self.server.baseDir, nickname,
|
|
||||||
self.server.domain, optionsActor)
|
|
||||||
if callingDomain.endswith('.onion') and \
|
|
||||||
self.server.onionDomain:
|
|
||||||
thisActor = \
|
|
||||||
'http://' + self.server.onionDomain + usersPath
|
|
||||||
elif (callingDomain.endswith('.i2p') and
|
|
||||||
self.server.i2pDomain):
|
|
||||||
thisActor = \
|
|
||||||
'http://' + self.server.i2pDomain + usersPath
|
|
||||||
self._redirect_headers(thisActor + '/' +
|
|
||||||
self.server.defaultTimeline +
|
|
||||||
'?page='+str(pageNumber), cookie,
|
|
||||||
callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitUnSnooze=' in optionsConfirmParams:
|
|
||||||
usersPath = self.path.split('/personoptions')[0]
|
|
||||||
thisActor = \
|
|
||||||
self.server.httpPrefix + '://' + \
|
|
||||||
self.server.domainFull + usersPath
|
|
||||||
if self.server.debug:
|
|
||||||
print('Unsnoozing ' + optionsActor + ' ' + thisActor)
|
|
||||||
if '/users/' in thisActor:
|
|
||||||
nickname = thisActor.split('/users/')[1]
|
|
||||||
personUnsnooze(self.server.baseDir, nickname,
|
|
||||||
self.server.domain, optionsActor)
|
|
||||||
if callingDomain.endswith('.onion') and \
|
|
||||||
self.server.onionDomain:
|
|
||||||
thisActor = \
|
|
||||||
'http://' + self.server.onionDomain + usersPath
|
|
||||||
elif (callingDomain.endswith('.i2p') and
|
|
||||||
self.server.i2pDomain):
|
|
||||||
thisActor = \
|
|
||||||
'http://' + self.server.i2pDomain + usersPath
|
|
||||||
self._redirect_headers(thisActor + '/' +
|
|
||||||
self.server.defaultTimeline +
|
|
||||||
'?page=' + str(pageNumber), cookie,
|
|
||||||
callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
if '&submitReport=' in optionsConfirmParams:
|
|
||||||
if self.server.debug:
|
|
||||||
print('Reporting ' + optionsActor)
|
|
||||||
reportPath = \
|
|
||||||
self.path.replace('/personoptions', '') + '/newreport'
|
|
||||||
msg = htmlNewPost(False, self.server.translate,
|
|
||||||
self.server.baseDir,
|
|
||||||
self.server.httpPrefix,
|
|
||||||
reportPath, None, [],
|
|
||||||
postUrl, pageNumber,
|
|
||||||
chooserNickname,
|
|
||||||
self.server.domain,
|
|
||||||
self.server.domainFull).encode('utf-8')
|
|
||||||
self._set_headers('text/html', len(msg),
|
|
||||||
cookie, callingDomain)
|
|
||||||
self._write(msg)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
|
||||||
|
|
||||||
if callingDomain.endswith('.onion') and self.server.onionDomain:
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.onionDomain + usersPath
|
|
||||||
elif callingDomain.endswith('.i2p') and self.server.i2pDomain:
|
|
||||||
originPathStr = \
|
|
||||||
'http://' + self.server.i2pDomain + usersPath
|
|
||||||
self._redirect_headers(originPathStr, cookie, callingDomain)
|
|
||||||
self.server.POSTbusy = False
|
|
||||||
return
|
return
|
||||||
|
|
||||||
self._benchmarkPOSTtimings(POSTstartTime, POSTtimings, 14)
|
self._benchmarkPOSTtimings(POSTstartTime, POSTtimings, 14)
|
||||||
|
|
Loading…
Reference in New Issue