diff --git a/daemon.py b/daemon.py index 2eb064f63..b04cc7e3f 100644 --- a/daemon.py +++ b/daemon.py @@ -4851,6 +4851,36 @@ class PubServer(BaseHTTPRequestHandler): curr_session, proxy_type: str) -> None: """Receive a vote via POST """ + first_post_id = '' + if '?firstpost=' in path: + first_post_id = path.split('?firstpost=')[1] + path = path.split('?firstpost=')[0] + if ';firstpost=' in path: + first_post_id = path.split(';firstpost=')[1] + path = path.split(';firstpost=')[0] + if first_post_id: + if '?' in first_post_id: + first_post_id = first_post_id.split('?')[0] + if ';' in first_post_id: + first_post_id = first_post_id.split(';')[0] + first_post_id = first_post_id.replace('/', '--') + first_post_id = ';firstpost=' + first_post_id.replace('#', '--') + + last_post_id = '' + if '?lastpost=' in path: + last_post_id = path.split('?lastpost=')[1] + path = path.split('?lastpost=')[0] + if ';lastpost=' in path: + last_post_id = path.split(';lastpost=')[1] + path = path.split(';lastpost=')[0] + if last_post_id: + if '?' in last_post_id: + last_post_id = last_post_id.split('?')[0] + if ';' in last_post_id: + last_post_id = last_post_id.split(';')[0] + last_post_id = last_post_id.replace('/', '--') + last_post_id = ';lastpost=' + last_post_id.replace('#', '--') + page_number = 1 if '?page=' in path: page_number_str = path.split('?page=')[1] @@ -4860,7 +4890,6 @@ class PubServer(BaseHTTPRequestHandler): page_number_str = "1" if page_number_str.isdigit(): page_number = int(page_number_str) - path = path.split('?page=')[0] # the actor who votes users_path = path.replace('/question', '') @@ -4926,7 +4955,7 @@ class PubServer(BaseHTTPRequestHandler): actor = 'http://' + i2p_domain + users_path actor_path_str = \ actor + '/' + self.server.default_timeline + \ - '?page=' + str(page_number) + '?page=' + str(page_number) + first_post_id + last_post_id self._redirect_headers(actor_path_str, cookie, calling_domain) self.server.postreq_busy = False @@ -21998,7 +22027,9 @@ class PubServer(BaseHTTPRequestHandler): else: # a vote/question/poll is posted if self.path.endswith('/question') or \ - '/question?page=' in self.path: + '/question?page=' in self.path or \ + '/question?firstpost=' in self.path or \ + '/question?lastpost=' in self.path: self._receive_vote(calling_domain, cookie, self.path, self.server.http_prefix,