Merge branch 'main' of gitlab.com:bashrc2/epicyon

merge-requests/30/head
Bob Mottram 2021-12-11 17:46:18 +00:00
commit 983a7242a4
21 changed files with 166 additions and 27 deletions

View File

@ -29,6 +29,8 @@ from webfinger import webfingerUpdate
from mastoapiv1 import mastoApiV1Response
from metadata import metaDataNodeInfo
from metadata import metadataCustomEmoji
from enigma import getEnigmaPubKey
from enigma import setEnigmaPubKey
from pgp import getEmailAddress
from pgp import setEmailAddress
from pgp import getPGPpubKey
@ -5379,6 +5381,18 @@ class PubServer(BaseHTTPRequestHandler):
setCwtchAddress(actorJson, '')
actorChanged = True
# change Enigma public key
currentEnigmaPubKey = getEnigmaPubKey(actorJson)
if fields.get('enigmapubkey'):
if fields['enigmapubkey'] != currentEnigmaPubKey:
setEnigmaPubKey(actorJson,
fields['enigmapubkey'])
actorChanged = True
else:
if currentEnigmaPubKey:
setEnigmaPubKey(actorJson, '')
actorChanged = True
# change PGP public key
currentPGPpubKey = getPGPpubKey(actorJson)
if fields.get('pgp'):
@ -7039,6 +7053,7 @@ class PubServer(BaseHTTPRequestHandler):
isGroup = False
donateUrl = None
websiteUrl = None
EnigmaPubKey = None
PGPpubKey = None
PGPfingerprint = None
xmppAddress = None
@ -7076,6 +7091,7 @@ class PubServer(BaseHTTPRequestHandler):
jamiAddress = getJamiAddress(actorJson)
cwtchAddress = getCwtchAddress(actorJson)
emailAddress = getEmailAddress(actorJson)
EnigmaPubKey = getEnigmaPubKey(actorJson)
PGPpubKey = getPGPpubKey(actorJson)
PGPfingerprint = getPGPfingerprint(actorJson)
if actorJson.get('alsoKnownAs'):
@ -7110,6 +7126,7 @@ class PubServer(BaseHTTPRequestHandler):
ssbAddress, blogAddress,
toxAddress, briarAddress,
jamiAddress, cwtchAddress,
EnigmaPubKey,
PGPpubKey, PGPfingerprint,
emailAddress,
self.server.dormantMonths,

74
enigma.py 100644
View File

@ -0,0 +1,74 @@
__filename__ = "enigma.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "1.2.0"
__maintainer__ = "Bob Mottram"
__email__ = "bob@libreserver.org"
__status__ = "Production"
__module_group__ = "Profile Metadata"
def getEnigmaPubKey(actorJson: {}) -> str:
"""Returns Enigma public key for the given actor
"""
if not actorJson.get('attachment'):
return ''
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if not propertyValue['name'].lower().startswith('enigma'):
continue
if not propertyValue.get('type'):
continue
if not propertyValue.get('value'):
continue
if propertyValue['type'] != 'PropertyValue':
continue
return propertyValue['value']
return ''
def setEnigmaPubKey(actorJson: {}, enigmaPubKey: str) -> None:
"""Sets a Enigma public key for the given actor
"""
removeKey = False
if not enigmaPubKey:
removeKey = True
if not actorJson.get('attachment'):
actorJson['attachment'] = []
# remove any existing value
propertyFound = None
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if not propertyValue.get('type'):
continue
if not propertyValue['name'].lower().startswith('enigma'):
continue
propertyFound = propertyValue
break
if propertyFound:
actorJson['attachment'].remove(propertyValue)
if removeKey:
return
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if not propertyValue.get('type'):
continue
if not propertyValue['name'].lower().startswith('enigma'):
continue
if propertyValue['type'] != 'PropertyValue':
continue
propertyValue['value'] = enigmaPubKey
return
newenigmaPubKey = {
"name": "Enigma",
"type": "PropertyValue",
"value": enigmaPubKey
}
actorJson['attachment'].append(newenigmaPubKey)

View File

@ -500,5 +500,6 @@
"New feed URL": "موجز جديد URL",
"New link title and URL": "عنوان الارتباط الجديد وعنوان URL",
"Theme Designer": "مصمم المظهر",
"Reset": "إعادة ضبط"
"Reset": "إعادة ضبط",
"Encryption Keys": "مفاتيح التشفير"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL de feed nou",
"New link title and URL": "Títol i URL de l'enllaç nous",
"Theme Designer": "Dissenyador temàtic",
"Reset": "Restableix"
"Reset": "Restableix",
"Encryption Keys": "Claus de xifratge"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL porthiant newydd",
"New link title and URL": "Teitl dolen ac URL newydd",
"Theme Designer": "Dylunydd Thema",
"Reset": "Ail gychwyn"
"Reset": "Ail gychwyn",
"Encryption Keys": "Allweddi Amgryptio"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "Neue Feed-URL",
"New link title and URL": "Neuer Linktitel und URL",
"Theme Designer": "Themendesigner",
"Reset": "Zurücksetzen"
"Reset": "Zurücksetzen",
"Encryption Keys": "Verschlüsselungsschlüssel"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "New feed URL",
"New link title and URL": "New link title and URL",
"Theme Designer": "Theme Designer",
"Reset": "Reset"
"Reset": "Reset",
"Encryption Keys": "Encryption Keys"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL de nuevo feed",
"New link title and URL": "Nuevo título de enlace y URL",
"Theme Designer": "Diseñadora de temas",
"Reset": "Reiniciar"
"Reset": "Reiniciar",
"Encryption Keys": "Claves de cifrado"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "Nouvelle URL de flux",
"New link title and URL": "Nouveau titre et URL du lien",
"Theme Designer": "Concepteur de thème",
"Reset": "Réinitialiser"
"Reset": "Réinitialiser",
"Encryption Keys": "Clés de cryptage"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL beathaithe nua",
"New link title and URL": "Teideal nasc nua agus URL",
"Theme Designer": "Dearthóir Téama",
"Reset": "Athshocraigh"
"Reset": "Athshocraigh",
"Encryption Keys": "Eochracha Criptithe"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "नया फ़ीड URL",
"New link title and URL": "नया लिंक शीर्षक और URL",
"Theme Designer": "थीम डिजाइनर",
"Reset": "रीसेट"
"Reset": "रीसेट",
"Encryption Keys": "एन्क्रिप्शन कुंजी"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "Nuovo URL del feed",
"New link title and URL": "Nuovo titolo e URL del collegamento",
"Theme Designer": "Progettista di temi",
"Reset": "Ripristina"
"Reset": "Ripristina",
"Encryption Keys": "Chiavi di crittografia"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "新しいフィードURL",
"New link title and URL": "新しいリンクのタイトルとURL",
"Theme Designer": "テーマデザイナー",
"Reset": "リセット"
"Reset": "リセット",
"Encryption Keys": "暗号化キー"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL-ya feed nû",
"New link title and URL": "Sernav û URL-ya girêdana nû",
"Theme Designer": "Theme Designer",
"Reset": "Reset"
"Reset": "Reset",
"Encryption Keys": "Bişkojkên Şîfrekirinê"
}

View File

@ -496,5 +496,6 @@
"New feed URL": "New feed URL",
"New link title and URL": "New link title and URL",
"Theme Designer": "Theme Designer",
"Reset": "Reset"
"Reset": "Reset",
"Encryption Keys": "Encryption Keys"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "Novo URL de feed",
"New link title and URL": "Novo título e URL do link",
"Theme Designer": "Designer de Tema",
"Reset": "Redefinir"
"Reset": "Redefinir",
"Encryption Keys": "Chaves de criptografia"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL нового канала",
"New link title and URL": "Новое название ссылки и URL",
"Theme Designer": "Дизайнер тем",
"Reset": "Сброс настроек"
"Reset": "Сброс настроек",
"Encryption Keys": "Ключи шифрования"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "URL mpya ya mipasho",
"New link title and URL": "Kichwa kipya cha kiungo na URL",
"Theme Designer": "Mbuni wa Mandhari",
"Reset": "Weka upya"
"Reset": "Weka upya",
"Encryption Keys": "Vifunguo vya Usimbaji"
}

View File

@ -500,5 +500,6 @@
"New feed URL": "新供稿网址",
"New link title and URL": "新链接标题和 URL",
"Theme Designer": "主题设计师",
"Reset": "重启"
"Reset": "重启",
"Encryption Keys": "加密密钥"
}

View File

@ -49,6 +49,7 @@ def htmlPersonOptions(defaultTimeline: str,
briarAddress: str,
jamiAddress: str,
cwtchAddress: str,
EnigmaPubKey: str,
PGPpubKey: str,
PGPfingerprint: str,
emailAddress: str,
@ -226,6 +227,9 @@ def htmlPersonOptions(defaultTimeline: str,
if cwtchAddress:
optionsStr += \
'<p class="imText">Cwtch: ' + removeHtml(cwtchAddress) + '</p>\n'
if EnigmaPubKey:
optionsStr += \
'<p class="imText">Enigma: ' + removeHtml(EnigmaPubKey) + '</p>\n'
if PGPfingerprint:
optionsStr += '<p class="pgp">PGP: ' + \
removeHtml(PGPfingerprint).replace('\n', '<br>') + '</p>\n'

View File

@ -47,6 +47,7 @@ from ssb import getSSBAddress
from pgp import getEmailAddress
from pgp import getPGPfingerprint
from pgp import getPGPpubKey
from enigma import getEnigmaPubKey
from tox import getToxAddress
from briar import getBriarAddress
from jami import getJamiAddress
@ -631,6 +632,7 @@ def htmlProfile(signingPrivateKeyPem: str,
donateUrl = getDonationUrl(profileJson)
websiteUrl = getWebsite(profileJson, translate)
blogAddress = getBlogAddress(profileJson)
EnigmaPubKey = getEnigmaPubKey(profileJson)
PGPpubKey = getPGPpubKey(profileJson)
PGPfingerprint = getPGPfingerprint(profileJson)
emailAddress = getEmailAddress(profileJson)
@ -643,7 +645,7 @@ def htmlProfile(signingPrivateKeyPem: str,
cwtchAddress = getCwtchAddress(profileJson)
if donateUrl or websiteUrl or xmppAddress or matrixAddress or \
ssbAddress or toxAddress or briarAddress or \
jamiAddress or cwtchAddress or PGPpubKey or \
jamiAddress or cwtchAddress or PGPpubKey or EnigmaPubKey or \
PGPfingerprint or emailAddress:
donateSection = '<div class="container">\n'
donateSection += ' <center>\n'
@ -696,6 +698,10 @@ def htmlProfile(signingPrivateKeyPem: str,
donateSection += \
'<p>Cwtch: <label class="toxaddr">' + \
cwtchAddress + '</label></p>\n'
if EnigmaPubKey:
donateSection += \
'<p>Enigma: <label class="toxaddr">' + \
EnigmaPubKey + '</label></p>\n'
if PGPfingerprint:
donateSection += \
'<p class="pgp">PGP: ' + \
@ -1851,8 +1857,6 @@ def _htmlEditProfileContactInfo(nickname: str,
briarAddress: str,
jamiAddress: str,
cwtchAddress: str,
PGPfingerprint: str,
PGPpubKey: str,
translate: {}) -> str:
"""Contact Information section of edit profile screen
"""
@ -1869,15 +1873,32 @@ def _htmlEditProfileContactInfo(nickname: str,
editProfileForm += editTextField('Briar', 'briarAddress', briarAddress)
editProfileForm += editTextField('Jami', 'jamiAddress', jamiAddress)
editProfileForm += editTextField('Cwtch', 'cwtchAddress', cwtchAddress)
editProfileForm += \
'<a href="/users/' + nickname + \
'/followingaccounts"><label class="labels">' + \
translate['Following'] + '</label></a><br>\n'
editProfileForm += endEditSection()
return editProfileForm
def _htmlEditProfileEncryptionKeys(PGPfingerprint: str,
PGPpubKey: str,
EnigmaPubKey: str,
translate: {}) -> str:
"""Contact Information section of edit profile screen
"""
editProfileForm = beginEditSection(translate['Encryption Keys'])
enigmaUrl = 'https://github.com/enigma-reloaded/enigma-reloaded'
editProfileForm += \
editTextField('<a href="' + enigmaUrl + '">Enigma</a>',
'enigmapubkey', EnigmaPubKey)
editProfileForm += editTextField(translate['PGP Fingerprint'],
'openpgp', PGPfingerprint)
editProfileForm += \
editTextArea(translate['PGP'], 'pgp', PGPpubKey, 600,
'-----BEGIN PGP PUBLIC KEY BLOCK-----', False)
editProfileForm += \
'<a href="/users/' + nickname + \
'/followingaccounts"><label class="labels">' + \
translate['Following'] + '</label></a><br>\n'
editProfileForm += endEditSection()
return editProfileForm
@ -2079,7 +2100,8 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
notifyLikes = notifyReactions = ''
hideLikeButton = hideReactionButton = mediaInstanceStr = ''
blogsInstanceStr = newsInstanceStr = movedTo = twitterStr = ''
bioStr = donateUrl = websiteUrl = emailAddress = PGPpubKey = ''
bioStr = donateUrl = websiteUrl = emailAddress = ''
PGPpubKey = EnigmaPubKey = ''
PGPfingerprint = xmppAddress = matrixAddress = ''
ssbAddress = blogAddress = toxAddress = jamiAddress = ''
cwtchAddress = briarAddress = manuallyApprovesFollowers = ''
@ -2099,6 +2121,7 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
jamiAddress = getJamiAddress(actorJson)
cwtchAddress = getCwtchAddress(actorJson)
emailAddress = getEmailAddress(actorJson)
EnigmaPubKey = getEnigmaPubKey(actorJson)
PGPpubKey = getPGPpubKey(actorJson)
PGPfingerprint = getPGPfingerprint(actorJson)
if actorJson.get('name'):
@ -2239,8 +2262,12 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
xmppAddress, matrixAddress,
ssbAddress, toxAddress,
briarAddress, jamiAddress,
cwtchAddress, PGPfingerprint,
PGPpubKey, translate)
cwtchAddress, translate)
# Encryption Keys
editProfileForm += \
_htmlEditProfileEncryptionKeys(PGPfingerprint,
PGPpubKey, EnigmaPubKey, translate)
# Customize images and banners
editProfileForm += _htmlEditProfileBackground(newsInstance, translate)