Add jami address to profile

merge-requests/30/head
Bob Mottram 2020-11-29 12:50:41 +00:00
parent cab122e47d
commit c9b0d113ab
4 changed files with 128 additions and 2 deletions

View File

@ -40,6 +40,8 @@ from ssb import getSSBAddress
from ssb import setSSBAddress from ssb import setSSBAddress
from tox import getToxAddress from tox import getToxAddress
from tox import setToxAddress from tox import setToxAddress
from jami import getJamiAddress
from jami import setJamiAddress
from matrix import getMatrixAddress from matrix import getMatrixAddress
from matrix import setMatrixAddress from matrix import setMatrixAddress
from donate import getDonationUrl from donate import getDonationUrl
@ -3787,6 +3789,18 @@ class PubServer(BaseHTTPRequestHandler):
setToxAddress(actorJson, '') setToxAddress(actorJson, '')
actorChanged = True actorChanged = True
# change jami address
currentJamiAddress = getJamiAddress(actorJson)
if fields.get('jamiAddress'):
if fields['jamiAddress'] != currentJamiAddress:
setJamiAddress(actorJson,
fields['jamiAddress'])
actorChanged = True
else:
if currentJamiAddress:
setJamiAddress(actorJson, '')
actorChanged = True
# change PGP public key # change PGP public key
currentPGPpubKey = getPGPpubKey(actorJson) currentPGPpubKey = getPGPpubKey(actorJson)
if fields.get('pgp'): if fields.get('pgp'):
@ -4747,6 +4761,7 @@ class PubServer(BaseHTTPRequestHandler):
matrixAddress = None matrixAddress = None
blogAddress = None blogAddress = None
toxAddress = None toxAddress = None
jamiAddress = None
ssbAddress = None ssbAddress = None
emailAddress = None emailAddress = None
actorJson = getPersonFromCache(baseDir, actorJson = getPersonFromCache(baseDir,
@ -4760,6 +4775,7 @@ class PubServer(BaseHTTPRequestHandler):
ssbAddress = getSSBAddress(actorJson) ssbAddress = getSSBAddress(actorJson)
blogAddress = getBlogAddress(actorJson) blogAddress = getBlogAddress(actorJson)
toxAddress = getToxAddress(actorJson) toxAddress = getToxAddress(actorJson)
jamiAddress = getJamiAddress(actorJson)
emailAddress = getEmailAddress(actorJson) emailAddress = getEmailAddress(actorJson)
PGPpubKey = getPGPpubKey(actorJson) PGPpubKey = getPGPpubKey(actorJson)
PGPfingerprint = getPGPfingerprint(actorJson) PGPfingerprint = getPGPfingerprint(actorJson)
@ -4775,7 +4791,7 @@ class PubServer(BaseHTTPRequestHandler):
pageNumber, donateUrl, pageNumber, donateUrl,
xmppAddress, matrixAddress, xmppAddress, matrixAddress,
ssbAddress, blogAddress, ssbAddress, blogAddress,
toxAddress, toxAddress, jamiAddress,
PGPpubKey, PGPfingerprint, PGPpubKey, PGPfingerprint,
emailAddress).encode('utf-8') emailAddress).encode('utf-8')
self._set_headers('text/html', len(msg), self._set_headers('text/html', len(msg),

93
jami.py 100644
View File

@ -0,0 +1,93 @@
__filename__ = "jami.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "1.1.0"
__maintainer__ = "Bob Mottram"
__email__ = "bob@freedombone.net"
__status__ = "Production"
def getJamiAddress(actorJson: {}) -> str:
"""Returns jami address 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('jami'):
continue
if not propertyValue.get('type'):
continue
if not propertyValue.get('value'):
continue
if propertyValue['type'] != 'PropertyValue':
continue
propertyValue['value'] = propertyValue['value'].strip()
if len(propertyValue['value']) < 2:
continue
if '"' in propertyValue['value']:
continue
if ' ' in propertyValue['value']:
continue
if ',' in propertyValue['value']:
continue
if '.' in propertyValue['value']:
continue
return propertyValue['value']
return ''
def setJamiAddress(actorJson: {}, jamiAddress: str) -> None:
"""Sets an jami address for the given actor
"""
notJamiAddress = False
if len(jamiAddress) < 2:
notJamiAddress = True
if '"' in jamiAddress:
notJamiAddress = True
if ' ' in jamiAddress:
notJamiAddress = True
if '.' in jamiAddress:
notJamiAddress = True
if ',' in jamiAddress:
notJamiAddress = 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('jami'):
continue
propertyFound = propertyValue
break
if propertyFound:
actorJson['attachment'].remove(propertyFound)
if notJamiAddress:
return
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if not propertyValue.get('type'):
continue
if not propertyValue['name'].lower().startswith('jami'):
continue
if propertyValue['type'] != 'PropertyValue':
continue
propertyValue['value'] = jamiAddress
return
newJamiAddress = {
"name": "Jami",
"type": "PropertyValue",
"value": jamiAddress
}
actorJson['attachment'].append(newJamiAddress)

View File

@ -34,6 +34,7 @@ def htmlPersonOptions(defaultTimeline: str,
ssbAddress: str, ssbAddress: str,
blogAddress: str, blogAddress: str,
toxAddress: str, toxAddress: str,
jamiAddress: str,
PGPpubKey: str, PGPpubKey: str,
PGPfingerprint: str, PGPfingerprint: str,
emailAddress) -> str: emailAddress) -> str:
@ -131,6 +132,9 @@ def htmlPersonOptions(defaultTimeline: str,
if toxAddress: if toxAddress:
optionsStr += \ optionsStr += \
'<p class="imText">Tox: ' + toxAddress + '</p>\n' '<p class="imText">Tox: ' + toxAddress + '</p>\n'
if jamiAddress:
optionsStr += \
'<p class="imText">Jami: ' + jamiAddress + '</p>\n'
if PGPfingerprint: if PGPfingerprint:
optionsStr += '<p class="pgp">PGP: ' + \ optionsStr += '<p class="pgp">PGP: ' + \
PGPfingerprint.replace('\n', '<br>') + '</p>\n' PGPfingerprint.replace('\n', '<br>') + '</p>\n'

View File

@ -31,6 +31,7 @@ from pgp import getEmailAddress
from pgp import getPGPfingerprint from pgp import getPGPfingerprint
from pgp import getPGPpubKey from pgp import getPGPpubKey
from tox import getToxAddress from tox import getToxAddress
from jami import getJamiAddress
from webapp_frontscreen import htmlFrontScreen from webapp_frontscreen import htmlFrontScreen
from webapp_utils import scheduledPostsExist from webapp_utils import scheduledPostsExist
from webapp_utils import getPersonAvatarUrl from webapp_utils import getPersonAvatarUrl
@ -436,8 +437,9 @@ def htmlProfile(rssIconAtTop: bool,
matrixAddress = getMatrixAddress(profileJson) matrixAddress = getMatrixAddress(profileJson)
ssbAddress = getSSBAddress(profileJson) ssbAddress = getSSBAddress(profileJson)
toxAddress = getToxAddress(profileJson) toxAddress = getToxAddress(profileJson)
jamiAddress = getJamiAddress(profileJson)
if donateUrl or xmppAddress or matrixAddress or \ if donateUrl or xmppAddress or matrixAddress or \
ssbAddress or toxAddress or PGPpubKey or \ ssbAddress or toxAddress or jamiAddress or PGPpubKey or \
PGPfingerprint or emailAddress: PGPfingerprint or emailAddress:
donateSection = '<div class="container">\n' donateSection = '<div class="container">\n'
donateSection += ' <center>\n' donateSection += ' <center>\n'
@ -465,6 +467,10 @@ def htmlProfile(rssIconAtTop: bool,
donateSection += \ donateSection += \
'<p>Tox: <label class="toxaddr">' + \ '<p>Tox: <label class="toxaddr">' + \
toxAddress + '</label></p>\n' toxAddress + '</label></p>\n'
if jamiAddress:
donateSection += \
'<p>Jami: <label class="toxaddr">' + \
jamiAddress + '</label></p>\n'
if PGPfingerprint: if PGPfingerprint:
donateSection += \ donateSection += \
'<p class="pgp">PGP: ' + \ '<p class="pgp">PGP: ' + \
@ -863,6 +869,7 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
ssbAddress = getSSBAddress(actorJson) ssbAddress = getSSBAddress(actorJson)
blogAddress = getBlogAddress(actorJson) blogAddress = getBlogAddress(actorJson)
toxAddress = getToxAddress(actorJson) toxAddress = getToxAddress(actorJson)
jamiAddress = getJamiAddress(actorJson)
emailAddress = getEmailAddress(actorJson) emailAddress = getEmailAddress(actorJson)
PGPpubKey = getPGPpubKey(actorJson) PGPpubKey = getPGPpubKey(actorJson)
PGPfingerprint = getPGPfingerprint(actorJson) PGPfingerprint = getPGPfingerprint(actorJson)
@ -1194,6 +1201,12 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
editProfileForm += \ editProfileForm += \
' <input type="text" name="toxAddress" value="' + \ ' <input type="text" name="toxAddress" value="' + \
toxAddress + '">\n' toxAddress + '">\n'
editProfileForm += '<label class="labels">Jami</label><br>\n'
editProfileForm += \
' <input type="text" name="jamiAddress" value="' + \
jamiAddress + '">\n'
editProfileForm += '<label class="labels">' + \ editProfileForm += '<label class="labels">' + \
translate['Email'] + '</label><br>\n' translate['Email'] + '</label><br>\n'
editProfileForm += \ editProfileForm += \