From da5e8103eda006680cfafae0811151fee133d064 Mon Sep 17 00:00:00 2001 From: Cathal Garvey Date: Fri, 22 Jan 2021 00:28:33 +0000 Subject: [PATCH 01/14] Adding Idempotent IDNA Decodes to Domain Checks This operation _should_ be safe for non-IDNA domains. However, because so many different systems like Tor, Briar, i2p, etcetera, are supported by Epicyon, perhaps even this seemingly safe host transformation should be made opt-in as an argument to epicyon. --- daemon.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/daemon.py b/daemon.py index bae485674..b0e2cc084 100644 --- a/daemon.py +++ b/daemon.py @@ -17,6 +17,7 @@ from socket import error as SocketError import errno from functools import partial import pyqrcode +import idna # for saving images from hashlib import sha256 from hashlib import sha1 @@ -9759,7 +9760,9 @@ class PubServer(BaseHTTPRequestHandler): def do_GET(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - callingDomain = self.headers['Host'] + # IDNA decoding is an idempotent operation so this should not break 'normal' domains. + # For non-IDNA domains perhaps this behaviour should be disabled: TODO add config option? + callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ @@ -11908,7 +11911,8 @@ class PubServer(BaseHTTPRequestHandler): def do_HEAD(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - callingDomain = self.headers['Host'] + # As in the GET handler this should be idempotent but for security maybe make configurable. + callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ @@ -12842,7 +12846,8 @@ class PubServer(BaseHTTPRequestHandler): callingDomain = self.server.domainFull if self.headers.get('Host'): - callingDomain = self.headers['Host'] + # As notes in the GET handler, this should be idempotent but should be configurable just in case + callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ From 7feb38e3822e952f27e573e75154fdb2062a1556 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 11:18:21 +0000 Subject: [PATCH 02/14] Fix line lengths --- daemon.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/daemon.py b/daemon.py index 19d2b8dba..81b664b01 100644 --- a/daemon.py +++ b/daemon.py @@ -9876,8 +9876,10 @@ class PubServer(BaseHTTPRequestHandler): def do_GET(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - # IDNA decoding is an idempotent operation so this should not break 'normal' domains. - # For non-IDNA domains perhaps this behaviour should be disabled: TODO add config option? + # IDNA decoding is an idempotent operation so this + # should not break 'normal' domains. + # For non-IDNA domains perhaps this behaviour should + # be disabled: TODO add config option? callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ @@ -12037,7 +12039,8 @@ class PubServer(BaseHTTPRequestHandler): def do_HEAD(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - # As in the GET handler this should be idempotent but for security maybe make configurable. + # As in the GET handler this should be idempotent but + # for security maybe make configurable. callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ @@ -12989,7 +12992,8 @@ class PubServer(BaseHTTPRequestHandler): callingDomain = self.server.domainFull if self.headers.get('Host'): - # As notes in the GET handler, this should be idempotent but should be configurable just in case + # As notes in the GET handler, this should be idempotent + # but should be configurable just in case callingDomain = idna.decode(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ From 192498859af961a0b10081fc5be73a8aee78cc60 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 11:38:12 +0000 Subject: [PATCH 03/14] Don't do idna conversion for local network addresses --- daemon.py | 16 ++++------------ utils.py | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/daemon.py b/daemon.py index 81b664b01..03c9300f2 100644 --- a/daemon.py +++ b/daemon.py @@ -17,7 +17,6 @@ from socket import error as SocketError import errno from functools import partial import pyqrcode -import idna # for saving images from hashlib import sha256 from hashlib import sha1 @@ -184,6 +183,7 @@ from shares import addShare from shares import removeShare from shares import expireShares from categories import setHashtagCategory +from utils import decodedHost from utils import isPublicPost from utils import getLockedAccount from utils import hasUsersPath @@ -9876,11 +9876,7 @@ class PubServer(BaseHTTPRequestHandler): def do_GET(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - # IDNA decoding is an idempotent operation so this - # should not break 'normal' domains. - # For non-IDNA domains perhaps this behaviour should - # be disabled: TODO add config option? - callingDomain = idna.decode(self.headers['Host']) + callingDomain = decodedHost(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ @@ -12039,9 +12035,7 @@ class PubServer(BaseHTTPRequestHandler): def do_HEAD(self): callingDomain = self.server.domainFull if self.headers.get('Host'): - # As in the GET handler this should be idempotent but - # for security maybe make configurable. - callingDomain = idna.decode(self.headers['Host']) + callingDomain = decodedHost(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ @@ -12992,9 +12986,7 @@ class PubServer(BaseHTTPRequestHandler): callingDomain = self.server.domainFull if self.headers.get('Host'): - # As notes in the GET handler, this should be idempotent - # but should be configurable just in case - callingDomain = idna.decode(self.headers['Host']) + callingDomain = decodedHost(self.headers['Host']) if self.server.onionDomain: if callingDomain != self.server.domain and \ callingDomain != self.server.domainFull and \ diff --git a/utils.py b/utils.py index fe2deda4c..35d68de22 100644 --- a/utils.py +++ b/utils.py @@ -14,11 +14,36 @@ import json from socket import error as SocketError import errno import urllib.request +import idna from pprint import pprint from calendar import monthrange from followingCalendar import addPersonToCalendar +def _localNetworkHost(host: str) -> bool: + """Returns true if the given host is on the local network + """ + if host.startswith('192.') or \ + host.startswith('127.') or \ + host.startswith('10.'): + return True + return False + + +def decodedHost(host: str) -> str: + """Convert hostname to internationalized domain + https://en.wikipedia.org/wiki/Internationalized_domain_name + """ + if ':' not in host: + if not _localNetworkHost(host): + if not host.endswith('.onion'): + if not host.endswith('.i2p'): + # For domains on ports numbers don't use idna + # eg. mydomain:8000 + return idna.decode(host) + return host + + def getLockedAccount(actorJson: {}) -> bool: """Returns whether the given account requires follower approval """ From 7ac901980fdd2d7aa1e933046d995405d41be61c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 11:51:42 +0000 Subject: [PATCH 04/14] Check for localhost --- utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 35d68de22..232adfa55 100644 --- a/utils.py +++ b/utils.py @@ -23,7 +23,8 @@ from followingCalendar import addPersonToCalendar def _localNetworkHost(host: str) -> bool: """Returns true if the given host is on the local network """ - if host.startswith('192.') or \ + if host.startswith('localhost') or \ + host.startswith('192.') or \ host.startswith('127.') or \ host.startswith('10.'): return True From fd12451f5acc4e0ad94b66d61aad6540abb9840a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 12:24:40 +0000 Subject: [PATCH 05/14] Tests for international domain handling --- tests.py | 15 +++++++++++++++ utils.py | 11 +++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/tests.py b/tests.py index 2bebb1f2c..d87d1229c 100644 --- a/tests.py +++ b/tests.py @@ -33,6 +33,7 @@ from follow import clearFollows from follow import clearFollowers from follow import sendFollowRequestViaServer from follow import sendUnfollowRequestViaServer +from utils import decodedHost from utils import getFullDomain from utils import validNickname from utils import firstParagraphFromString @@ -3059,9 +3060,23 @@ def testMastoApi(): assert nickname2 == nickname +def testDomainHandling(): + print('testDomainHandling') + testDomain = 'localhost' + assert decodedHost(testDomain) == testDomain + testDomain = '127.0.0.1:60' + assert decodedHost(testDomain) == testDomain + testDomain = '192.168.5.153' + assert decodedHost(testDomain) == testDomain + testDomain = 'xn--espaa-rta.icom.museum' + print(decodedHost(testDomain)) + assert decodedHost(testDomain) == "españa.icom.museum" + + def runAllTests(): print('Running tests...') testFunctions() + testDomainHandling() testMastoApi() testLinksWithinPost() testReplyToPublicPost() diff --git a/utils.py b/utils.py index 232adfa55..4ca5350f1 100644 --- a/utils.py +++ b/utils.py @@ -36,12 +36,11 @@ def decodedHost(host: str) -> str: https://en.wikipedia.org/wiki/Internationalized_domain_name """ if ':' not in host: - if not _localNetworkHost(host): - if not host.endswith('.onion'): - if not host.endswith('.i2p'): - # For domains on ports numbers don't use idna - # eg. mydomain:8000 - return idna.decode(host) + # eg. mydomain:8000 + if not _localNetworkHost(host): + if not host.endswith('.onion'): + if not host.endswith('.i2p'): + return idna.decode(host) return host From 2e26a05568be732964532694f5e495c078fc9bd1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 12:25:21 +0000 Subject: [PATCH 06/14] Tidying --- tests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests.py b/tests.py index d87d1229c..b6cf6e8ba 100644 --- a/tests.py +++ b/tests.py @@ -3069,7 +3069,6 @@ def testDomainHandling(): testDomain = '192.168.5.153' assert decodedHost(testDomain) == testDomain testDomain = 'xn--espaa-rta.icom.museum' - print(decodedHost(testDomain)) assert decodedHost(testDomain) == "españa.icom.museum" From 402206b85c2010ed0e756d4e7a94700b51a1d131 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 13:43:12 +0000 Subject: [PATCH 07/14] Emoji style on profile screen --- epicyon-profile.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/epicyon-profile.css b/epicyon-profile.css index b4f1e85f3..7e1fd85e4 100644 --- a/epicyon-profile.css +++ b/epicyon-profile.css @@ -538,6 +538,16 @@ a:focus { border-radius: 0px; } +.emoji { + float: none; + width: 50px; + margin-left: 0px; + margin-right: 0px; + padding-right: 0px; + border-radius: 0px; + vertical-align: middle; +} + .container img.emoji { float: none; width: 50px; From 2b1bb3e82f20130644c1c03fb77caa80514dc886 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 14:31:37 +0000 Subject: [PATCH 08/14] Pinned post endpoint --- daemon.py | 34 ++++++++++++++++++++++++++++++++-- posts.py | 27 +++++++++++++++++++++------ 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/daemon.py b/daemon.py index 03c9300f2..4941280fc 100644 --- a/daemon.py +++ b/daemon.py @@ -68,6 +68,8 @@ from person import removeAccount from person import canRemovePost from person import personSnooze from person import personUnsnooze +from posts import outboxMessageCreateWrap +from posts import getPinnedPostAsJson from posts import pinPost from posts import jsonPinPost from posts import undoPinnedPost @@ -10150,7 +10152,34 @@ class PubServer(BaseHTTPRequestHandler): if '/users/' in self.path: usersInPath = True - if usersInPath and self.path.endswith('/collections/featured'): + if not htmlGET and \ + usersInPath and self.path.endswith('/pinned'): + nickname = self.path.split('/users/')[1] + if '/' in nickname: + nickname = nickname.split('/')[0] + pinnedPostJson = \ + getPinnedPostAsJson(self.server.baseDir, + self.server.httpPrefix, + nickname, self.server.domain, + self.server.domainFull) + messageJson = {} + if pinnedPostJson: + messageJson = \ + outboxMessageCreateWrap(self.server.httpPrefix, + nickname, + self.server.domain, + self.server.port, + pinnedPostJson) + msg = json.dumps(messageJson, + ensure_ascii=False).encode('utf-8') + msglen = len(msg) + self._set_headers('application/json', + msglen, None, callingDomain) + self._write(msg) + return + + if not htmlGET and \ + usersInPath and self.path.endswith('/collections/featured'): nickname = self.path.split('/users/')[1] if '/' in nickname: nickname = nickname.split('/')[0] @@ -10162,7 +10191,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.domainFull) return - if usersInPath and self.path.endswith('/collections/featuredTags'): + if not htmlGET and \ + usersInPath and self.path.endswith('/collections/featuredTags'): self._getFeaturedTagsCollection(callingDomain, self.path, self.server.httpPrefix, diff --git a/posts.py b/posts.py index c98806837..d0ce828df 100644 --- a/posts.py +++ b/posts.py @@ -1298,14 +1298,13 @@ def undoPinnedPost(baseDir: str, nickname: str, domain: str) -> None: os.remove(pinnedFilename) -def jsonPinPost(baseDir: str, httpPrefix: str, - nickname: str, domain: str, - domainFull: str) -> {}: - """Returns a pinned post as json +def getPinnedPostAsJson(baseDir: str, httpPrefix: str, + nickname: str, domain: str, + domainFull: str) -> {}: + """Returns the pinned profile post as json """ accountDir = baseDir + '/accounts/' + nickname + '@' + domain pinnedFilename = accountDir + '/pinToProfile.txt' - itemsList = [] pinnedPostJson = {} actor = httpPrefix + '://' + domainFull + '/users/' + nickname if os.path.isfile(pinnedFilename): @@ -1338,7 +1337,23 @@ def jsonPinPost(baseDir: str, httpPrefix: str, 'type': 'Note', 'url': actor.replace('/users/', '/@') + '/pinned' } - itemsList = [pinnedPostJson] + return pinnedPostJson + + +def jsonPinPost(baseDir: str, httpPrefix: str, + nickname: str, domain: str, + domainFull: str) -> {}: + """Returns a pinned post as json + """ + pinnedPostJson = \ + getPinnedPostAsJson(baseDir, httpPrefix, + nickname, domain, + domainFull) + itemsList = [] + if pinnedPostJson: + itemsList = [pinnedPostJson] + + actor = httpPrefix + '://' + domainFull + '/users/' + nickname return { '@context': [ 'https://www.w3.org/ns/activitystreams', From 545f5d0523d026396204aa37b5ef0be651303604 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 14:56:41 +0000 Subject: [PATCH 09/14] Set id on pinned post json --- daemon.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/daemon.py b/daemon.py index 4941280fc..29d7820ac 100644 --- a/daemon.py +++ b/daemon.py @@ -10170,6 +10170,11 @@ class PubServer(BaseHTTPRequestHandler): self.server.domain, self.server.port, pinnedPostJson) + messageJson['id'] = pinnedPostJson['id'] + '/activity' + messageJson['object']['id'] = pinnedPostJson['id'] + messageJson['object']['url'] = \ + pinnedPostJson['id'].replace('/users/', '/@') + messageJson['object']['atomUri'] = pinnedPostJson['id'] msg = json.dumps(messageJson, ensure_ascii=False).encode('utf-8') msglen = len(msg) From 506a55904a17dad7356d9e67c62e95b01e3ee721 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 14:59:16 +0000 Subject: [PATCH 10/14] Preserve post id --- daemon.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/daemon.py b/daemon.py index 29d7820ac..bb4235bfa 100644 --- a/daemon.py +++ b/daemon.py @@ -10164,17 +10164,17 @@ class PubServer(BaseHTTPRequestHandler): self.server.domainFull) messageJson = {} if pinnedPostJson: + postId = pinnedPostJson['id'] messageJson = \ outboxMessageCreateWrap(self.server.httpPrefix, nickname, self.server.domain, self.server.port, pinnedPostJson) - messageJson['id'] = pinnedPostJson['id'] + '/activity' - messageJson['object']['id'] = pinnedPostJson['id'] - messageJson['object']['url'] = \ - pinnedPostJson['id'].replace('/users/', '/@') - messageJson['object']['atomUri'] = pinnedPostJson['id'] + messageJson['id'] = postId + '/activity' + messageJson['object']['id'] = postId + messageJson['object']['url'] = postId.replace('/users/', '/@') + messageJson['object']['atomUri'] = postId msg = json.dumps(messageJson, ensure_ascii=False).encode('utf-8') msglen = len(msg) From 3680d24247e0f1f1d5701b8f4caffce666c86a31 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 15:02:02 +0000 Subject: [PATCH 11/14] Extra invalid nickname --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 4ca5350f1..d50ed71d1 100644 --- a/utils.py +++ b/utils.py @@ -1121,7 +1121,7 @@ def validNickname(domain: str, nickname: str) -> bool: 'tlreplies', 'tlmedia', 'tlblogs', 'tlevents', 'tlblogs', 'tlfeatures', 'moderation', 'moderationaction', - 'activity', 'undo', + 'activity', 'undo', 'pinned', 'reply', 'replies', 'question', 'like', 'likes', 'users', 'statuses', 'tags', 'accounts', 'channels', 'profile', From fe2711adb82d87e7f8c69ebd7d71aac40b69bcf7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 17:39:11 +0000 Subject: [PATCH 12/14] Header background --- theme/purple/theme.json | 1 + 1 file changed, 1 insertion(+) diff --git a/theme/purple/theme.json b/theme/purple/theme.json index 42ce3939e..a922c81c4 100644 --- a/theme/purple/theme.json +++ b/theme/purple/theme.json @@ -1,4 +1,5 @@ { + "column-left-header-background": "#35244d", "newswire-publish-icon": "True", "full-width-timeline-buttons": "False", "icons-as-buttons": "False", From b9ebc6115df0fa2c42c03555b24991310fc71bfe Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 25 Jan 2021 20:37:27 +0000 Subject: [PATCH 13/14] Show version number on about screen --- daemon.py | 7 ++++--- translations/ar.json | 4 +++- translations/ca.json | 4 +++- translations/cy.json | 4 +++- translations/de.json | 4 +++- translations/en.json | 4 +++- translations/es.json | 4 +++- translations/fr.json | 4 +++- translations/ga.json | 4 +++- translations/hi.json | 4 +++- translations/it.json | 4 +++- translations/ja.json | 4 +++- translations/oc.json | 4 +++- translations/pt.json | 4 +++- translations/ru.json | 4 +++- translations/zh.json | 4 +++- webapp_about.py | 10 ++++++---- 17 files changed, 55 insertions(+), 22 deletions(-) diff --git a/daemon.py b/daemon.py index bb4235bfa..90ebc18f1 100644 --- a/daemon.py +++ b/daemon.py @@ -10440,20 +10440,21 @@ class PubServer(BaseHTTPRequestHandler): htmlAbout(self.server.cssCache, self.server.baseDir, 'http', self.server.onionDomain, - None) + None, self.server.translate) elif callingDomain.endswith('.i2p'): msg = \ htmlAbout(self.server.cssCache, self.server.baseDir, 'http', self.server.i2pDomain, - None) + None, self.server.translate) else: msg = \ htmlAbout(self.server.cssCache, self.server.baseDir, self.server.httpPrefix, self.server.domainFull, - self.server.onionDomain) + self.server.onionDomain, + self.server.translate) msg = msg.encode('utf-8') msglen = len(msg) self._login_headers('text/html', msglen, callingDomain) diff --git a/translations/ar.json b/translations/ar.json index 08839363d..14c244723 100644 --- a/translations/ar.json +++ b/translations/ar.json @@ -361,5 +361,7 @@ "Moved to new account address": "انتقل إلى عنوان الحساب الجديد", "Yet another Epicyon Instance": "مثال آخر Epicyon", "Other accounts": "حسابات أخرى", - "Pin this post to your profile.": "تثبيت هذه الوظيفة في ملف التعريف الخاص بك." + "Pin this post to your profile.": "تثبيت هذه الوظيفة في ملف التعريف الخاص بك.", + "Administered by": "تدار من قبل", + "Version": "الإصدار" } diff --git a/translations/ca.json b/translations/ca.json index 8df71695f..5eb0f01d3 100644 --- a/translations/ca.json +++ b/translations/ca.json @@ -361,5 +361,7 @@ "Moved to new account address": "S'ha mogut a l'adreça del compte nova", "Yet another Epicyon Instance": "Encara una altra instància Epicyon", "Other accounts": "Altres comptes", - "Pin this post to your profile.": "Fixa aquesta publicació al teu perfil." + "Pin this post to your profile.": "Fixa aquesta publicació al teu perfil.", + "Administered by": "Administrat per", + "Version": "Versió" } diff --git a/translations/cy.json b/translations/cy.json index 3a54c4961..500106838 100644 --- a/translations/cy.json +++ b/translations/cy.json @@ -361,5 +361,7 @@ "Moved to new account address": "Wedi'i symud i gyfeiriad cyfrif newydd", "Yet another Epicyon Instance": "Digwyddiad Epicyon arall", "Other accounts": "Cyfrifon eraill", - "Pin this post to your profile.": "Piniwch y post hwn i'ch proffil." + "Pin this post to your profile.": "Piniwch y post hwn i'ch proffil.", + "Administered by": "Gweinyddir gan", + "Version": "Fersiwn" } diff --git a/translations/de.json b/translations/de.json index 4f3a5128b..6da6054c0 100644 --- a/translations/de.json +++ b/translations/de.json @@ -361,5 +361,7 @@ "Moved to new account address": "An neue Kontoadresse verschoben", "Yet another Epicyon Instance": "Noch eine Epicyon-Instanz", "Other accounts": "Andere Konten", - "Pin this post to your profile.": "Pin diesen Beitrag zu Ihrem Profil." + "Pin this post to your profile.": "Pin diesen Beitrag zu Ihrem Profil.", + "Administered by": "Verwaltet von", + "Version": "Ausführung" } diff --git a/translations/en.json b/translations/en.json index 3bc9c885a..58c97cf3f 100644 --- a/translations/en.json +++ b/translations/en.json @@ -361,5 +361,7 @@ "Moved to new account address": "Moved to new account address", "Yet another Epicyon Instance": "Yet another Epicyon Instance", "Other accounts": "Other accounts", - "Pin this post to your profile.": "Pin this post to your profile." + "Pin this post to your profile.": "Pin this post to your profile.", + "Administered by": "Administered by", + "Version": "Version" } diff --git a/translations/es.json b/translations/es.json index 523c834bf..ef064cfc4 100644 --- a/translations/es.json +++ b/translations/es.json @@ -361,5 +361,7 @@ "Moved to new account address": "Movido a la nueva dirección de la cuenta", "Yet another Epicyon Instance": "Otra instancia más de Epicyon", "Other accounts": "Otras cuentas", - "Pin this post to your profile.": "Fija esta publicación a tu perfil." + "Pin this post to your profile.": "Fija esta publicación a tu perfil.", + "Administered by": "Administrado por", + "Version": "Versión" } diff --git a/translations/fr.json b/translations/fr.json index 7697e692c..6c28048fc 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -361,5 +361,7 @@ "Moved to new account address": "Déplacé vers une nouvelle adresse de compte", "Yet another Epicyon Instance": "Encore une autre instance Epicyon", "Other accounts": "Autres comptes", - "Pin this post to your profile.": "Épinglez ce message à votre profil." + "Pin this post to your profile.": "Épinglez ce message à votre profil.", + "Administered by": "Administré par", + "Version": "Version" } diff --git a/translations/ga.json b/translations/ga.json index e803f9504..187295784 100644 --- a/translations/ga.json +++ b/translations/ga.json @@ -361,5 +361,7 @@ "Moved to new account address": "Ar athraíodh a ionad go seoladh cuntas nua", "Yet another Epicyon Instance": "Institiúid Epicyon eile fós", "Other accounts": "Cuntais eile", - "Pin this post to your profile.": "Bioráin an post seo le do phróifíl." + "Pin this post to your profile.": "Bioráin an post seo le do phróifíl.", + "Administered by": "Riartha ag", + "Version": "Leagan" } diff --git a/translations/hi.json b/translations/hi.json index 2493caf75..0481275c3 100644 --- a/translations/hi.json +++ b/translations/hi.json @@ -361,5 +361,7 @@ "Moved to new account address": "नए खाते के पते पर ले जाया गया", "Yet another Epicyon Instance": "फिर भी एक और एपिकॉन उदाहरण", "Other accounts": "अन्य खाते", - "Pin this post to your profile.": "इस पोस्ट को अपनी प्रोफाइल पर पिन करें।" + "Pin this post to your profile.": "इस पोस्ट को अपनी प्रोफाइल पर पिन करें।", + "Administered by": "द्वारा प्रशासित", + "Version": "संस्करण" } diff --git a/translations/it.json b/translations/it.json index a009ece6b..255998ad9 100644 --- a/translations/it.json +++ b/translations/it.json @@ -361,5 +361,7 @@ "Moved to new account address": "Spostato al nuovo indirizzo dell'account", "Yet another Epicyon Instance": "Ancora un'altra istanza di Epicyon", "Other accounts": "Altri account", - "Pin this post to your profile.": "Metti questo post sul tuo profilo." + "Pin this post to your profile.": "Metti questo post sul tuo profilo.", + "Administered by": "Amministrato da", + "Version": "Versione" } diff --git a/translations/ja.json b/translations/ja.json index 50460c8b6..838169403 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -361,5 +361,7 @@ "Moved to new account address": "新しいアカウントアドレスに移動しました", "Yet another Epicyon Instance": "さらに別のエピキオンインスタンス", "Other accounts": "その他のアカウント", - "Pin this post to your profile.": "この投稿をプロフィールに固定します。" + "Pin this post to your profile.": "この投稿をプロフィールに固定します。", + "Administered by": "管理者", + "Version": "バージョン" } diff --git a/translations/oc.json b/translations/oc.json index f82ba1ea4..e6b8813f8 100644 --- a/translations/oc.json +++ b/translations/oc.json @@ -357,5 +357,7 @@ "Moved to new account address": "Moved to new account address", "Yet another Epicyon Instance": "Yet another Epicyon Instance", "Other accounts": "Other accounts", - "Pin this post to your profile.": "Pin this post to your profile." + "Pin this post to your profile.": "Pin this post to your profile.", + "Administered by": "Administered by", + "Version": "Version" } diff --git a/translations/pt.json b/translations/pt.json index 8601ff19d..192d0de42 100644 --- a/translations/pt.json +++ b/translations/pt.json @@ -361,5 +361,7 @@ "Moved to new account address": "Movido para o novo endereço da conta", "Yet another Epicyon Instance": "Mais uma instância do Epicyon", "Other accounts": "Outras contas", - "Pin this post to your profile.": "Fixar esta postagem em seu perfil." + "Pin this post to your profile.": "Fixar esta postagem em seu perfil.", + "Administered by": "Administrado por", + "Version": "Versão" } diff --git a/translations/ru.json b/translations/ru.json index 89a9896cc..bec84afb1 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -361,5 +361,7 @@ "Moved to new account address": "Перемещен на новый адрес учетной записи", "Yet another Epicyon Instance": "Еще один экземпляр Эпикиона", "Other accounts": "Другие аккаунты", - "Pin this post to your profile.": "Закрепите это сообщение в своем профиле." + "Pin this post to your profile.": "Закрепите это сообщение в своем профиле.", + "Administered by": "Под управлением", + "Version": "Версия" } diff --git a/translations/zh.json b/translations/zh.json index 67e0daf4f..aa6a65f7c 100644 --- a/translations/zh.json +++ b/translations/zh.json @@ -361,5 +361,7 @@ "Moved to new account address": "移至新帐户地址", "Yet another Epicyon Instance": "另一个Epicyon实例", "Other accounts": "其他账户", - "Pin this post to your profile.": "将此帖子固定到您的个人资料。" + "Pin this post to your profile.": "将此帖子固定到您的个人资料。", + "Administered by": "由...管理", + "Version": "版" } diff --git a/webapp_about.py b/webapp_about.py index f84c31c41..600136f79 100644 --- a/webapp_about.py +++ b/webapp_about.py @@ -14,7 +14,7 @@ from webapp_utils import htmlFooter def htmlAbout(cssCache: {}, baseDir: str, httpPrefix: str, - domainFull: str, onionDomain: str) -> str: + domainFull: str, onionDomain: str, translate: {}) -> str: """Show the about screen """ adminNickname = getConfigParam(baseDir, 'admin') @@ -50,8 +50,10 @@ def htmlAbout(cssCache: {}, baseDir: str, httpPrefix: str, adminActor = '/users/' + adminNickname aboutForm += \ '
\n' + \ - '

Administered by ' + adminNickname + '

\n' + \ - '
\n' + '

' + \ + translate['Administered by'] + ' ' + adminNickname + '. ' + \ + translate['Version'] + ' ' + __version__ + \ + '

\n\n' aboutForm += htmlFooter() return aboutForm From 419353ccf9aa574d6f36205d69885e0bfd960431 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 26 Jan 2021 10:07:42 +0000 Subject: [PATCH 14/14] Version 1.2.0 --- acceptreject.py | 2 +- announce.py | 2 +- auth.py | 2 +- availability.py | 2 +- blocking.py | 2 +- blog.py | 2 +- bookmarks.py | 2 +- briar.py | 2 +- cache.py | 2 +- categories.py | 2 +- content.py | 2 +- context.py | 2 +- daemon.py | 2 +- delete.py | 2 +- devices.py | 2 +- donate.py | 2 +- epicyon.py | 2 +- feeds.py | 2 +- filters.py | 2 +- follow.py | 2 +- followingCalendar.py | 2 +- git.py | 2 +- happening.py | 2 +- httpsig.py | 2 +- inbox.py | 2 +- jami.py | 2 +- like.py | 2 +- linked_data_sig.py | 2 +- manualapprove.py | 2 +- mastoapiv1.py | 2 +- matrix.py | 2 +- media.py | 2 +- metadata.py | 2 +- migrate.py | 2 +- newsdaemon.py | 2 +- newswire.py | 2 +- outbox.py | 2 +- person.py | 2 +- petnames.py | 2 +- pgp.py | 2 +- posts.py | 2 +- question.py | 2 +- roles.py | 2 +- schedule.py | 2 +- session.py | 4 ++-- shares.py | 2 +- skills.py | 2 +- socnet.py | 2 +- ssb.py | 2 +- tests.py | 2 +- theme.py | 2 +- threads.py | 2 +- tox.py | 2 +- utils.py | 2 +- webapp_about.py | 2 +- webapp_calendar.py | 2 +- webapp_column_left.py | 2 +- webapp_column_right.py | 2 +- webapp_confirm.py | 2 +- webapp_create_post.py | 2 +- webapp_frontscreen.py | 2 +- webapp_hashtagswarm.py | 2 +- webapp_headerbuttons.py | 2 +- webapp_login.py | 2 +- webapp_media.py | 2 +- webapp_moderation.py | 2 +- webapp_person_options.py | 2 +- webapp_post.py | 2 +- webapp_profile.py | 2 +- webapp_question.py | 2 +- webapp_search.py | 2 +- webapp_suspended.py | 2 +- webapp_timeline.py | 2 +- webapp_tos.py | 2 +- webapp_utils.py | 2 +- webfinger.py | 2 +- xmpp.py | 2 +- 77 files changed, 78 insertions(+), 78 deletions(-) diff --git a/acceptreject.py b/acceptreject.py index 8db41534c..712d9ef7a 100644 --- a/acceptreject.py +++ b/acceptreject.py @@ -1,7 +1,7 @@ __filename__ = "acceptreject.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/announce.py b/announce.py index 08b1bdd20..c8c54c61a 100644 --- a/announce.py +++ b/announce.py @@ -1,7 +1,7 @@ __filename__ = "announce.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/auth.py b/auth.py index e0690a983..5d3dbdf8e 100644 --- a/auth.py +++ b/auth.py @@ -1,7 +1,7 @@ __filename__ = "auth.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/availability.py b/availability.py index 1dc7b03cf..d0c116c41 100644 --- a/availability.py +++ b/availability.py @@ -1,7 +1,7 @@ __filename__ = "availability.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/blocking.py b/blocking.py index 6fa7af3dd..f0759f963 100644 --- a/blocking.py +++ b/blocking.py @@ -1,7 +1,7 @@ __filename__ = "blocking.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/blog.py b/blog.py index 0f61bcf9d..a8dfcbaa8 100644 --- a/blog.py +++ b/blog.py @@ -1,7 +1,7 @@ __filename__ = "blog.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/bookmarks.py b/bookmarks.py index e4a43d70d..4749ba505 100644 --- a/bookmarks.py +++ b/bookmarks.py @@ -1,7 +1,7 @@ __filename__ = "bookmarks.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/briar.py b/briar.py index 4df6c09d5..63a3123b1 100644 --- a/briar.py +++ b/briar.py @@ -1,7 +1,7 @@ __filename__ = "briar.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/cache.py b/cache.py index 2486ff968..0505ef543 100644 --- a/cache.py +++ b/cache.py @@ -1,7 +1,7 @@ __filename__ = "cache.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/categories.py b/categories.py index 2ca2ed4a3..fc13a7c76 100644 --- a/categories.py +++ b/categories.py @@ -1,7 +1,7 @@ __filename__ = "categories.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/content.py b/content.py index c1c3a5121..fef7d66e9 100644 --- a/content.py +++ b/content.py @@ -1,7 +1,7 @@ __filename__ = "content.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/context.py b/context.py index 1b4495f73..1a0a3ad17 100644 --- a/context.py +++ b/context.py @@ -1,7 +1,7 @@ __filename__ = "inbox.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/daemon.py b/daemon.py index 90ebc18f1..5ad42d349 100644 --- a/daemon.py +++ b/daemon.py @@ -1,7 +1,7 @@ __filename__ = "daemon.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/delete.py b/delete.py index 240845a89..8d8d0b37a 100644 --- a/delete.py +++ b/delete.py @@ -1,7 +1,7 @@ __filename__ = "delete.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/devices.py b/devices.py index 3f0ef52bc..0f0ef44a9 100644 --- a/devices.py +++ b/devices.py @@ -1,7 +1,7 @@ __filename__ = "devices.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/donate.py b/donate.py index 1a4384ac7..0ccdebf99 100644 --- a/donate.py +++ b/donate.py @@ -1,7 +1,7 @@ __filename__ = "donate.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/epicyon.py b/epicyon.py index 3aaca074c..e5f3ecbf4 100644 --- a/epicyon.py +++ b/epicyon.py @@ -1,7 +1,7 @@ __filename__ = "epicyon.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/feeds.py b/feeds.py index a3a77ca5c..a1671d5cd 100644 --- a/feeds.py +++ b/feeds.py @@ -1,7 +1,7 @@ __filename__ = "feeds.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/filters.py b/filters.py index 58c165564..3b470abc9 100644 --- a/filters.py +++ b/filters.py @@ -1,7 +1,7 @@ __filename__ = "filters.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/follow.py b/follow.py index 25e4124ac..085c7aecb 100644 --- a/follow.py +++ b/follow.py @@ -1,7 +1,7 @@ __filename__ = "follow.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/followingCalendar.py b/followingCalendar.py index 45707c26f..64e795090 100644 --- a/followingCalendar.py +++ b/followingCalendar.py @@ -1,7 +1,7 @@ __filename__ = "followingCalendar.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/git.py b/git.py index af2b935c3..c7dee20df 100644 --- a/git.py +++ b/git.py @@ -1,7 +1,7 @@ __filename__ = "git.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/happening.py b/happening.py index 69a878747..3c78521be 100644 --- a/happening.py +++ b/happening.py @@ -1,7 +1,7 @@ __filename__ = "happening.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/httpsig.py b/httpsig.py index 0df2850dc..78cb1b9c2 100644 --- a/httpsig.py +++ b/httpsig.py @@ -2,7 +2,7 @@ __filename__ = "posts.py" __author__ = "Bob Mottram" __credits__ = ['lamia'] __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/inbox.py b/inbox.py index bc499f8bb..b572a3043 100644 --- a/inbox.py +++ b/inbox.py @@ -1,7 +1,7 @@ __filename__ = "inbox.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/jami.py b/jami.py index 5edf13f2a..ee89d68c2 100644 --- a/jami.py +++ b/jami.py @@ -1,7 +1,7 @@ __filename__ = "jami.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/like.py b/like.py index 289c930c9..8378032fb 100644 --- a/like.py +++ b/like.py @@ -1,7 +1,7 @@ __filename__ = "like.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/linked_data_sig.py b/linked_data_sig.py index 2410e9c2d..9f4b009a7 100644 --- a/linked_data_sig.py +++ b/linked_data_sig.py @@ -3,7 +3,7 @@ __author__ = "Bob Mottram" __credits__ = ['Based on ' + 'https://github.com/tsileo/little-boxes'] __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/manualapprove.py b/manualapprove.py index f442c8e5c..86315a797 100644 --- a/manualapprove.py +++ b/manualapprove.py @@ -1,7 +1,7 @@ __filename__ = "manualapprove.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/mastoapiv1.py b/mastoapiv1.py index dd2ff9ffc..93384289c 100644 --- a/mastoapiv1.py +++ b/mastoapiv1.py @@ -1,7 +1,7 @@ __filename__ = "mastoapiv1.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/matrix.py b/matrix.py index 4fef875cc..958b36618 100644 --- a/matrix.py +++ b/matrix.py @@ -1,7 +1,7 @@ __filename__ = "matrix.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/media.py b/media.py index d37487ae2..eb0df3d43 100644 --- a/media.py +++ b/media.py @@ -1,7 +1,7 @@ __filename__ = "media.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/metadata.py b/metadata.py index eeac04827..14db42f3e 100644 --- a/metadata.py +++ b/metadata.py @@ -1,7 +1,7 @@ __filename__ = "metadata.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/migrate.py b/migrate.py index cf8c5eb04..9d050f114 100644 --- a/migrate.py +++ b/migrate.py @@ -1,7 +1,7 @@ __filename__ = "migrate.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/newsdaemon.py b/newsdaemon.py index d1e85756c..0a6a8f5cc 100644 --- a/newsdaemon.py +++ b/newsdaemon.py @@ -1,7 +1,7 @@ __filename__ = "newsdaemon.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/newswire.py b/newswire.py index 5ebd2f9b2..ccaf983bf 100644 --- a/newswire.py +++ b/newswire.py @@ -1,7 +1,7 @@ __filename__ = "newswire.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/outbox.py b/outbox.py index 42504fa52..ce0bf15d9 100644 --- a/outbox.py +++ b/outbox.py @@ -1,7 +1,7 @@ __filename__ = "outbox.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/person.py b/person.py index 95c6f9bca..2392b271e 100644 --- a/person.py +++ b/person.py @@ -1,7 +1,7 @@ __filename__ = "person.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/petnames.py b/petnames.py index d586deb0e..21c46095a 100644 --- a/petnames.py +++ b/petnames.py @@ -1,7 +1,7 @@ __filename__ = "petnames.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/pgp.py b/pgp.py index 3a25de50b..5a332a7f3 100644 --- a/pgp.py +++ b/pgp.py @@ -1,7 +1,7 @@ __filename__ = "pgp.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/posts.py b/posts.py index d0ce828df..6dd6c7e31 100644 --- a/posts.py +++ b/posts.py @@ -1,7 +1,7 @@ __filename__ = "posts.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/question.py b/question.py index 31e83f29c..4655e9bc8 100644 --- a/question.py +++ b/question.py @@ -1,7 +1,7 @@ __filename__ = "question.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/roles.py b/roles.py index 459a53b24..d0f05602d 100644 --- a/roles.py +++ b/roles.py @@ -1,7 +1,7 @@ __filename__ = "roles.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/schedule.py b/schedule.py index 181c67288..5b4616d54 100644 --- a/schedule.py +++ b/schedule.py @@ -1,7 +1,7 @@ __filename__ = "schedule.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/session.py b/session.py index 0e4116f52..cf235fd76 100644 --- a/session.py +++ b/session.py @@ -1,7 +1,7 @@ __filename__ = "session.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" @@ -54,7 +54,7 @@ def createSession(proxyType: str): def getJson(session, url: str, headers: {}, params: {}, - version='1.1.0', httpPrefix='https', + version='1.2.0', httpPrefix='https', domain='testdomain') -> {}: if not isinstance(url, str): print('url: ' + str(url)) diff --git a/shares.py b/shares.py index d106c32a6..871b63ff5 100644 --- a/shares.py +++ b/shares.py @@ -1,7 +1,7 @@ __filename__ = "shares.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/skills.py b/skills.py index bbd221eb9..bd245de09 100644 --- a/skills.py +++ b/skills.py @@ -1,7 +1,7 @@ __filename__ = "skills.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/socnet.py b/socnet.py index 555512231..42fbfd072 100644 --- a/socnet.py +++ b/socnet.py @@ -1,7 +1,7 @@ __filename__ = "socnet.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/ssb.py b/ssb.py index 74804013f..0996a1438 100644 --- a/ssb.py +++ b/ssb.py @@ -1,7 +1,7 @@ __filename__ = "ssb.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/tests.py b/tests.py index b6cf6e8ba..f2ef8b22d 100644 --- a/tests.py +++ b/tests.py @@ -1,7 +1,7 @@ __filename__ = "tests.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/theme.py b/theme.py index df7f4c80a..e641b8829 100644 --- a/theme.py +++ b/theme.py @@ -1,7 +1,7 @@ __filename__ = "theme.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/threads.py b/threads.py index 89a43a1eb..c07de0821 100644 --- a/threads.py +++ b/threads.py @@ -1,7 +1,7 @@ __filename__ = "threads.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/tox.py b/tox.py index 2281f4f87..502e64ec2 100644 --- a/tox.py +++ b/tox.py @@ -1,7 +1,7 @@ __filename__ = "tox.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/utils.py b/utils.py index d50ed71d1..76e02f8ac 100644 --- a/utils.py +++ b/utils.py @@ -1,7 +1,7 @@ __filename__ = "utils.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_about.py b/webapp_about.py index 600136f79..9493c1b59 100644 --- a/webapp_about.py +++ b/webapp_about.py @@ -1,7 +1,7 @@ __filename__ = "webapp_about.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_calendar.py b/webapp_calendar.py index d919e6535..0135cc08e 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -1,7 +1,7 @@ __filename__ = "webapp_calendar.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_column_left.py b/webapp_column_left.py index f9d608757..ee7a6de77 100644 --- a/webapp_column_left.py +++ b/webapp_column_left.py @@ -1,7 +1,7 @@ __filename__ = "webapp_column_left.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_column_right.py b/webapp_column_right.py index cf0fb10e8..2a5b778d0 100644 --- a/webapp_column_right.py +++ b/webapp_column_right.py @@ -1,7 +1,7 @@ __filename__ = "webapp_column_right.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_confirm.py b/webapp_confirm.py index c6bbc00b7..121777268 100644 --- a/webapp_confirm.py +++ b/webapp_confirm.py @@ -1,7 +1,7 @@ __filename__ = "webapp_confirm.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_create_post.py b/webapp_create_post.py index dbc773877..d15bc8880 100644 --- a/webapp_create_post.py +++ b/webapp_create_post.py @@ -1,7 +1,7 @@ __filename__ = "webapp_create_post.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_frontscreen.py b/webapp_frontscreen.py index 5994654d0..473e223a1 100644 --- a/webapp_frontscreen.py +++ b/webapp_frontscreen.py @@ -1,7 +1,7 @@ __filename__ = "webapp_frontscreen.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_hashtagswarm.py b/webapp_hashtagswarm.py index 96a20a6bd..076e54108 100644 --- a/webapp_hashtagswarm.py +++ b/webapp_hashtagswarm.py @@ -1,7 +1,7 @@ __filename__ = "webapp_hashtagswarm.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_headerbuttons.py b/webapp_headerbuttons.py index 0ab548174..29052c322 100644 --- a/webapp_headerbuttons.py +++ b/webapp_headerbuttons.py @@ -1,7 +1,7 @@ __filename__ = "webapp_headerbuttons.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_login.py b/webapp_login.py index a8871b3c5..cb640135a 100644 --- a/webapp_login.py +++ b/webapp_login.py @@ -1,7 +1,7 @@ __filename__ = "webapp_login.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_media.py b/webapp_media.py index ff6b07d24..f837e9c20 100644 --- a/webapp_media.py +++ b/webapp_media.py @@ -1,7 +1,7 @@ __filename__ = "webapp_media.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_moderation.py b/webapp_moderation.py index c15cbaf48..0195f1c64 100644 --- a/webapp_moderation.py +++ b/webapp_moderation.py @@ -1,7 +1,7 @@ __filename__ = "webapp_moderation.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_person_options.py b/webapp_person_options.py index cbf9049d9..2e13c3d0a 100644 --- a/webapp_person_options.py +++ b/webapp_person_options.py @@ -1,7 +1,7 @@ __filename__ = "webapp_person_options.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_post.py b/webapp_post.py index 89ebbf613..ee2eab64f 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -1,7 +1,7 @@ __filename__ = "webapp_post.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_profile.py b/webapp_profile.py index b351d17e5..b150863f0 100644 --- a/webapp_profile.py +++ b/webapp_profile.py @@ -1,7 +1,7 @@ __filename__ = "webapp_profile.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_question.py b/webapp_question.py index 5d788579e..bf09c69e5 100644 --- a/webapp_question.py +++ b/webapp_question.py @@ -1,7 +1,7 @@ __filename__ = "webapp_question.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_search.py b/webapp_search.py index c833a9419..858cedec5 100644 --- a/webapp_search.py +++ b/webapp_search.py @@ -1,7 +1,7 @@ __filename__ = "webapp_search.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_suspended.py b/webapp_suspended.py index aacbaab19..074cff7ca 100644 --- a/webapp_suspended.py +++ b/webapp_suspended.py @@ -1,7 +1,7 @@ __filename__ = "webapp_suspended.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_timeline.py b/webapp_timeline.py index 5840234e3..21c029e7b 100644 --- a/webapp_timeline.py +++ b/webapp_timeline.py @@ -1,7 +1,7 @@ __filename__ = "webapp_timeline.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_tos.py b/webapp_tos.py index 15e3869ab..da59e0632 100644 --- a/webapp_tos.py +++ b/webapp_tos.py @@ -1,7 +1,7 @@ __filename__ = "webapp_tos.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webapp_utils.py b/webapp_utils.py index fc830f51d..5b7bf67e9 100644 --- a/webapp_utils.py +++ b/webapp_utils.py @@ -1,7 +1,7 @@ __filename__ = "webapp_utils.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/webfinger.py b/webfinger.py index 6fe57a80d..45d247449 100644 --- a/webfinger.py +++ b/webfinger.py @@ -1,7 +1,7 @@ __filename__ = "webfinger.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" diff --git a/xmpp.py b/xmpp.py index 661ae92d2..1fd0a6b22 100644 --- a/xmpp.py +++ b/xmpp.py @@ -1,7 +1,7 @@ __filename__ = "xmpp.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" -__version__ = "1.1.0" +__version__ = "1.2.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production"