From 695a49b3e8121c07062f6a0d1be900f1bff5b946 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 15 Feb 2021 22:49:57 -0500 Subject: [PATCH 01/17] Add stub setup.py This allows one to use commands such as "python3 setup.py install". --- setup.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 setup.py diff --git a/setup.py b/setup.py new file mode 100644 index 000000000..6819ec0fd --- /dev/null +++ b/setup.py @@ -0,0 +1,6 @@ +#!/usr/bin/python3 + +import setuptools + +if __name__ == "__main__": + setuptools.setup() From 00094e53c685b68e0871e7922e9280892646eddb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 15 Feb 2021 22:58:14 -0500 Subject: [PATCH 02/17] Update cryptography dependency for CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d6501a39a..d3e2d1587 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,6 @@ image: debian:testing test: script: - apt-get update - - apt-get install -y python3-crypto python3-dateutil python3-idna python3-numpy python3-pil.imagetk python3-pycryptodome python3-requests python3-socks python3-setuptools python3-pyqrcode + - apt-get install -y python3-cryptography python3-dateutil python3-idna python3-numpy python3-pil.imagetk python3-requests python3-socks python3-setuptools python3-pyqrcode - python3 epicyon.py --tests - python3 epicyon.py --testsnetwork From c89caff0907e1df402ff763be8573e8a37a6175f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 16 Feb 2021 21:00:26 +0000 Subject: [PATCH 03/17] Fix blog url --- posts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posts.py b/posts.py index fa0d72452..bc0c13379 100644 --- a/posts.py +++ b/posts.py @@ -1478,7 +1478,7 @@ def createBlogPost(baseDir: str, inReplyTo, inReplyToAtomUri, subject, schedulePost, eventDate, eventTime, location, True) - + blogJson['object']['url'] = blogJson['object']['url'].replace('/@', '/users/') _appendCitationsToBlogPost(baseDir, nickname, domain, blogJson) return blogJson From 33164809bcaf8b3ba0aa59310c76662963c1d54b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 16 Feb 2021 22:07:04 +0000 Subject: [PATCH 04/17] Default blog header font --- epicyon-blog.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epicyon-blog.css b/epicyon-blog.css index 94caa1b5c..8c5a82e86 100644 --- a/epicyon-blog.css +++ b/epicyon-blog.css @@ -46,7 +46,7 @@ --timeline-border-radius: 30px; --focus-color: white; --line-spacing: 130%; - --header-font: 'Bedstead'; + --header-font: 'Arial, Helvetica, sans-serif'; --main-link-color-hover: #bbb; } From e60ad9c7334b9b6497c2d3160ba5b902379fb7e3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 09:45:29 +0000 Subject: [PATCH 05/17] Remove authorization for blog post edit It will be checked later --- daemon.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index f2515ad8e..0f81c6199 100644 --- a/daemon.py +++ b/daemon.py @@ -11601,8 +11601,7 @@ class PubServer(BaseHTTPRequestHandler): print('DEBUG: replydm path ' + self.path) # Edit a blog post - if authorized and \ - '/tlblogs' in self.path and \ + if '/tlblogs' in self.path and \ '?editblogpost=' in self.path and \ '?actor=' in self.path: messageId = self.path.split('?editblogpost=')[1] From 4cfa6ec63bf0fa25ffd774cb9076dd7e93376b8f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 09:52:06 +0000 Subject: [PATCH 06/17] Check users in path --- daemon.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index 0f81c6199..f994ee2b2 100644 --- a/daemon.py +++ b/daemon.py @@ -11601,7 +11601,8 @@ class PubServer(BaseHTTPRequestHandler): print('DEBUG: replydm path ' + self.path) # Edit a blog post - if '/tlblogs' in self.path and \ + if authorized and \ + '/users/' in self.path and \ '?editblogpost=' in self.path and \ '?actor=' in self.path: messageId = self.path.split('?editblogpost=')[1] From 13251684aa7dfe2a3c135c328971dd90e933f8c7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 09:56:17 +0000 Subject: [PATCH 07/17] Get nickname from actor --- daemon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index f994ee2b2..8f292eacc 100644 --- a/daemon.py +++ b/daemon.py @@ -11611,7 +11611,7 @@ class PubServer(BaseHTTPRequestHandler): actor = self.path.split('?actor=')[1] if '?' in actor: actor = actor.split('?')[0] - nickname = getNicknameFromActor(self.path) + nickname = getNicknameFromActor(self.path.split('?')[0]) if nickname == actor: postUrl = \ self.server.httpPrefix + '://' + \ From 2458915cf80ed813aeda462bdb52be4ea7f89048 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 11:16:32 +0000 Subject: [PATCH 08/17] Get nickname from POST --- daemon.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemon.py b/daemon.py index 8f292eacc..aa7d1f8f4 100644 --- a/daemon.py +++ b/daemon.py @@ -12321,6 +12321,8 @@ class PubServer(BaseHTTPRequestHandler): nicknameStr = path.split('/users/')[1] if '/' in nicknameStr: nickname = nicknameStr.split('/')[0] + elif '?' in nicknameStr: + nickname = nicknameStr.split('?')[0] else: return -1 length = int(headers['Content-Length']) From 17dc05c72b05306af823f8f2b00e391ed4bbc25e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 11:19:25 +0000 Subject: [PATCH 09/17] Reverse sequence --- daemon.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index aa7d1f8f4..b6273a028 100644 --- a/daemon.py +++ b/daemon.py @@ -12319,10 +12319,10 @@ class PubServer(BaseHTTPRequestHandler): headers['Content-Type']) nickname = None nicknameStr = path.split('/users/')[1] - if '/' in nicknameStr: - nickname = nicknameStr.split('/')[0] - elif '?' in nicknameStr: + if '?' in nicknameStr: nickname = nicknameStr.split('?')[0] + elif '/' in nicknameStr: + nickname = nicknameStr.split('/')[0] else: return -1 length = int(headers['Content-Length']) From c9e5f0554f656cca26cfb87c65682d0c01892a72 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 11:22:34 +0000 Subject: [PATCH 10/17] Debug --- daemon.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index b6273a028..83e6b1647 100644 --- a/daemon.py +++ b/daemon.py @@ -12320,11 +12320,13 @@ class PubServer(BaseHTTPRequestHandler): nickname = None nicknameStr = path.split('/users/')[1] if '?' in nicknameStr: - nickname = nicknameStr.split('?')[0] - elif '/' in nicknameStr: + nicknameStr = nicknameStr.split('?')[0] + if '/' in nicknameStr: nickname = nicknameStr.split('/')[0] else: return -1 + if self.server.debug: + print('DEBUG: POST nickname ' + nickname) length = int(headers['Content-Length']) if length > self.server.maxPostLength: print('POST size too large') From 2eb08042f0faf610b530aea920cfb6c66915104a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 11:26:14 +0000 Subject: [PATCH 11/17] Line length --- posts.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posts.py b/posts.py index bc0c13379..66b64b83e 100644 --- a/posts.py +++ b/posts.py @@ -1478,7 +1478,8 @@ def createBlogPost(baseDir: str, inReplyTo, inReplyToAtomUri, subject, schedulePost, eventDate, eventTime, location, True) - blogJson['object']['url'] = blogJson['object']['url'].replace('/@', '/users/') + blogJson['object']['url'] = \ + blogJson['object']['url'].replace('/@', '/users/') _appendCitationsToBlogPost(baseDir, nickname, domain, blogJson) return blogJson From ac2f09c1a62a3cf3affcb8456b8df3952ba267c6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 11:58:52 +0000 Subject: [PATCH 12/17] More debug --- daemon.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/daemon.py b/daemon.py index 83e6b1647..3415c8647 100644 --- a/daemon.py +++ b/daemon.py @@ -12406,12 +12406,15 @@ class PubServer(BaseHTTPRequestHandler): if not fields.get('message') and \ not fields.get('imageDescription') and \ not fields.get('pinToProfile'): + print('WARN: no message, image description or pin') return -1 if fields.get('submitPost'): if fields['submitPost'] != \ self.server.translate['Submit']: + print('WARN: no submit field ' + fields['submitPost']) return -1 else: + print('WARN: no submitPost') return 2 if not fields.get('imageDescription'): From f3ef2c0c0253bf07515ccc6b2d7487330c309abc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 13:29:46 +0000 Subject: [PATCH 13/17] Check for nickname --- daemon.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index 3415c8647..5e4cd4731 100644 --- a/daemon.py +++ b/daemon.py @@ -12323,7 +12323,9 @@ class PubServer(BaseHTTPRequestHandler): nicknameStr = nicknameStr.split('?')[0] if '/' in nicknameStr: nickname = nicknameStr.split('/')[0] - else: + if not nickname: + print('WARN: no nickname found when receiving ' + postType + + ' path ' + path) return -1 if self.server.debug: print('DEBUG: POST nickname ' + nickname) From d1b2fe7bf0f4ece1bcde223e741320e0f9fe2c74 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 13:34:08 +0000 Subject: [PATCH 14/17] Set nickname --- daemon.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemon.py b/daemon.py index 5e4cd4731..b93cfd613 100644 --- a/daemon.py +++ b/daemon.py @@ -12323,6 +12323,8 @@ class PubServer(BaseHTTPRequestHandler): nicknameStr = nicknameStr.split('?')[0] if '/' in nicknameStr: nickname = nicknameStr.split('/')[0] + else: + nickname = nicknameStr if not nickname: print('WARN: no nickname found when receiving ' + postType + ' path ' + path) From 037e46cae62c670aa029bb5170365d4d69d80d03 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 13:43:06 +0000 Subject: [PATCH 15/17] Include path in debug --- daemon.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index b93cfd613..97d5384f2 100644 --- a/daemon.py +++ b/daemon.py @@ -12316,7 +12316,8 @@ class PubServer(BaseHTTPRequestHandler): if ' boundary=' in headers['Content-Type']: if self.server.debug: print('DEBUG: receiving POST headers ' + - headers['Content-Type']) + headers['Content-Type'] + + ' path ' + path) nickname = None nicknameStr = path.split('/users/')[1] if '?' in nicknameStr: @@ -12325,12 +12326,12 @@ class PubServer(BaseHTTPRequestHandler): nickname = nicknameStr.split('/')[0] else: nickname = nicknameStr + if self.server.debug: + print('DEBUG: POST nickname ' + str(nickname)) if not nickname: print('WARN: no nickname found when receiving ' + postType + ' path ' + path) return -1 - if self.server.debug: - print('DEBUG: POST nickname ' + nickname) length = int(headers['Content-Length']) if length > self.server.maxPostLength: print('POST size too large') From 322651f7fec4058abb0d647fe4b4e7a70785a788 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 14:01:45 +0000 Subject: [PATCH 16/17] More descriptive --- posts.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/posts.py b/posts.py index 66b64b83e..d2187a04d 100644 --- a/posts.py +++ b/posts.py @@ -3101,10 +3101,12 @@ def _createBoxIndexed(recentPostsCache: {}, # but have their own separate index indexBoxName = boxname timelineNickname = nickname + tlFeatures = False if boxname == "tlbookmarks": boxname = "bookmarks" indexBoxName = boxname elif boxname == "tlfeatures": + tlFeatures = True boxname = "tlblogs" indexBoxName = boxname timelineNickname = 'news' @@ -3227,8 +3229,8 @@ def _createBoxIndexed(recentPostsCache: {}, _addPostToTimeline(fullPostFilename, boxname, postsInBox, boxActor) else: - # if this is the features timeline if timelineNickname != nickname: + # if this is the features timeline fullPostFilename = \ locatePost(baseDir, timelineNickname, domain, postUrl, False) @@ -3236,9 +3238,11 @@ def _createBoxIndexed(recentPostsCache: {}, _addPostToTimeline(fullPostFilename, boxname, postsInBox, boxActor) else: - print('WARN: unable to locate post ' + postUrl) + print('WARN: features timeline. ' + + 'Unable to locate post ' + postUrl) else: - print('WARN: unable to locate post ' + postUrl) + print('WARN: Unable to locate post ' + postUrl + + ' nickname ' + nickname) postsCtr += 1 From 5436667446851a6b68f35657bd3d01e5c8c6e849 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 17 Feb 2021 14:10:47 +0000 Subject: [PATCH 17/17] Remove any additional parameters from nickname --- daemon.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemon.py b/daemon.py index 97d5384f2..8f1dfd3aa 100644 --- a/daemon.py +++ b/daemon.py @@ -13574,6 +13574,8 @@ class PubServer(BaseHTTPRequestHandler): authorized) if pageNumber: nickname = self.path.split('/users/')[1] + if '?' in nickname: + nickname = nickname.split('?')[0] if '/' in nickname: nickname = nickname.split('/')[0]