forked from indymedia/epicyon
SSB profile field
parent
963f8226f8
commit
c59cf2fe1a
14
daemon.py
14
daemon.py
|
@ -32,6 +32,8 @@ from pgp import getPGPpubKey
|
||||||
from pgp import setPGPpubKey
|
from pgp import setPGPpubKey
|
||||||
from xmpp import getXmppAddress
|
from xmpp import getXmppAddress
|
||||||
from xmpp import setXmppAddress
|
from xmpp import setXmppAddress
|
||||||
|
from ssb import getSSBAddress
|
||||||
|
from ssb import setSSBAddress
|
||||||
from matrix import getMatrixAddress
|
from matrix import getMatrixAddress
|
||||||
from matrix import setMatrixAddress
|
from matrix import setMatrixAddress
|
||||||
from donate import getDonationUrl
|
from donate import getDonationUrl
|
||||||
|
@ -1078,12 +1080,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
PGPpubKey=None
|
PGPpubKey=None
|
||||||
xmppAddress=None
|
xmppAddress=None
|
||||||
matrixAddress=None
|
matrixAddress=None
|
||||||
|
ssbAddress=None
|
||||||
emailAddress=None
|
emailAddress=None
|
||||||
actorJson=getPersonFromCache(self.server.baseDir,optionsActor,self.server.personCache)
|
actorJson=getPersonFromCache(self.server.baseDir,optionsActor,self.server.personCache)
|
||||||
if actorJson:
|
if actorJson:
|
||||||
donateUrl=getDonationUrl(actorJson)
|
donateUrl=getDonationUrl(actorJson)
|
||||||
xmppAddress=getXmppAddress(actorJson)
|
xmppAddress=getXmppAddress(actorJson)
|
||||||
matrixAddress=getMatrixAddress(actorJson)
|
matrixAddress=getMatrixAddress(actorJson)
|
||||||
|
ssbAddress=getSSBAddress(actorJson)
|
||||||
emailAddress=getEmailAddress(actorJson)
|
emailAddress=getEmailAddress(actorJson)
|
||||||
PGPpubKey=getPGPpubKey(actorJson)
|
PGPpubKey=getPGPpubKey(actorJson)
|
||||||
msg=htmlPersonOptions(self.server.translate, \
|
msg=htmlPersonOptions(self.server.translate, \
|
||||||
|
@ -1095,6 +1099,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
optionsLink, \
|
optionsLink, \
|
||||||
pageNumber,donateUrl, \
|
pageNumber,donateUrl, \
|
||||||
xmppAddress,matrixAddress, \
|
xmppAddress,matrixAddress, \
|
||||||
|
ssbAddress, \
|
||||||
PGPpubKey,emailAddress).encode()
|
PGPpubKey,emailAddress).encode()
|
||||||
self._set_headers('text/html',len(msg),cookie)
|
self._set_headers('text/html',len(msg),cookie)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
@ -4423,6 +4428,15 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if currentMatrixAddress:
|
if currentMatrixAddress:
|
||||||
setMatrixAddress(actorJson,'')
|
setMatrixAddress(actorJson,'')
|
||||||
actorChanged=True
|
actorChanged=True
|
||||||
|
currentSSBAddress=getSSBAddress(actorJson)
|
||||||
|
if fields.get('ssbAddress'):
|
||||||
|
if fields['ssbAddress']!=currentSSBAddress:
|
||||||
|
setSSBAddress(actorJson,fields['ssbAddress'])
|
||||||
|
actorChanged=True
|
||||||
|
else:
|
||||||
|
if currentSSBAddress:
|
||||||
|
setSSBAddress(actorJson,'')
|
||||||
|
actorChanged=True
|
||||||
currentPGPpubKey=getPGPpubKey(actorJson)
|
currentPGPpubKey=getPGPpubKey(actorJson)
|
||||||
if fields.get('pgp'):
|
if fields.get('pgp'):
|
||||||
if fields['pgp']!=currentPGPpubKey:
|
if fields['pgp']!=currentPGPpubKey:
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
__filename__ = "ssb.py"
|
||||||
|
__author__ = "Bob Mottram"
|
||||||
|
__license__ = "AGPL3+"
|
||||||
|
__version__ = "1.1.0"
|
||||||
|
__maintainer__ = "Bob Mottram"
|
||||||
|
__email__ = "bob@freedombone.net"
|
||||||
|
__status__ = "Production"
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
def getSSBAddress(actorJson: {}) -> str:
|
||||||
|
"""Returns ssb 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('ssb'):
|
||||||
|
continue
|
||||||
|
if not propertyValue.get('type'):
|
||||||
|
continue
|
||||||
|
if not propertyValue.get('value'):
|
||||||
|
continue
|
||||||
|
if propertyValue['type']!='PropertyValue':
|
||||||
|
continue
|
||||||
|
if '@' not in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
if not propertyValue['value'].startswith('@'):
|
||||||
|
continue
|
||||||
|
if ':' not in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
if '"' in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
return propertyValue['value']
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def setSSBAddress(actorJson: {},ssbAddress: str) -> None:
|
||||||
|
"""Sets an ssb address for the given actor
|
||||||
|
"""
|
||||||
|
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('ssb'):
|
||||||
|
continue
|
||||||
|
propertyFound=propertyValue
|
||||||
|
break
|
||||||
|
if propertyFound:
|
||||||
|
actorJson['attachment'].remove(propertyFound)
|
||||||
|
|
||||||
|
if '@' not in ssbAddress:
|
||||||
|
return
|
||||||
|
if not ssbAddress.startswith('@'):
|
||||||
|
return
|
||||||
|
if '.' not in ssbAddress:
|
||||||
|
return
|
||||||
|
if '"' in ssbAddress:
|
||||||
|
return
|
||||||
|
if ':' not in ssbAddress:
|
||||||
|
return
|
||||||
|
|
||||||
|
for propertyValue in actorJson['attachment']:
|
||||||
|
if not propertyValue.get('name'):
|
||||||
|
continue
|
||||||
|
if not propertyValue.get('type'):
|
||||||
|
continue
|
||||||
|
if not propertyValue['name'].lower().startswith('ssb'):
|
||||||
|
continue
|
||||||
|
if propertyValue['type']!='PropertyValue':
|
||||||
|
continue
|
||||||
|
propertyValue['value']=ssbAddress
|
||||||
|
return
|
||||||
|
|
||||||
|
newSSBAddress={
|
||||||
|
"name": "SSB",
|
||||||
|
"type": "PropertyValue",
|
||||||
|
"value": ssbAddress
|
||||||
|
}
|
||||||
|
actorJson['attachment'].append(newSSBAddress)
|
|
@ -21,6 +21,7 @@ from person import isPersonSnoozed
|
||||||
from pgp import getEmailAddress
|
from pgp import getEmailAddress
|
||||||
from pgp import getPGPpubKey
|
from pgp import getPGPpubKey
|
||||||
from xmpp import getXmppAddress
|
from xmpp import getXmppAddress
|
||||||
|
from ssb import getSSBAddress
|
||||||
from matrix import getMatrixAddress
|
from matrix import getMatrixAddress
|
||||||
from donate import getDonationUrl
|
from donate import getDonationUrl
|
||||||
from utils import isBlogPost
|
from utils import isBlogPost
|
||||||
|
@ -677,12 +678,14 @@ def htmlEditProfile(translate: {},baseDir: str,path: str, \
|
||||||
PGPpubKey=''
|
PGPpubKey=''
|
||||||
xmppAddress=''
|
xmppAddress=''
|
||||||
matrixAddress=''
|
matrixAddress=''
|
||||||
|
ssbAddress=''
|
||||||
manuallyApprovesFollowers=''
|
manuallyApprovesFollowers=''
|
||||||
actorJson=loadJson(actorFilename)
|
actorJson=loadJson(actorFilename)
|
||||||
if actorJson:
|
if actorJson:
|
||||||
donateUrl=getDonationUrl(actorJson)
|
donateUrl=getDonationUrl(actorJson)
|
||||||
xmppAddress=getXmppAddress(actorJson)
|
xmppAddress=getXmppAddress(actorJson)
|
||||||
matrixAddress=getMatrixAddress(actorJson)
|
matrixAddress=getMatrixAddress(actorJson)
|
||||||
|
ssbAddress=getSSBAddress(actorJson)
|
||||||
emailAddress=getEmailAddress(actorJson)
|
emailAddress=getEmailAddress(actorJson)
|
||||||
PGPpubKey=getPGPpubKey(actorJson)
|
PGPpubKey=getPGPpubKey(actorJson)
|
||||||
if actorJson.get('name'):
|
if actorJson.get('name'):
|
||||||
|
@ -857,6 +860,8 @@ def htmlEditProfile(translate: {},baseDir: str,path: str, \
|
||||||
editProfileForm+=' <input type="text" name="xmppAddress" value="'+xmppAddress+'">'
|
editProfileForm+=' <input type="text" name="xmppAddress" value="'+xmppAddress+'">'
|
||||||
editProfileForm+='<label class="labels">'+translate['Matrix']+'</label><br>'
|
editProfileForm+='<label class="labels">'+translate['Matrix']+'</label><br>'
|
||||||
editProfileForm+=' <input type="text" name="matrixAddress" value="'+matrixAddress+'">'
|
editProfileForm+=' <input type="text" name="matrixAddress" value="'+matrixAddress+'">'
|
||||||
|
editProfileForm+='<label class="labels">SSB</label><br>'
|
||||||
|
editProfileForm+=' <input type="text" name="ssbAddress" value="'+ssbAddress+'">'
|
||||||
editProfileForm+='<label class="labels">'+translate['Email']+'</label><br>'
|
editProfileForm+='<label class="labels">'+translate['Email']+'</label><br>'
|
||||||
editProfileForm+=' <input type="text" name="email" value="'+emailAddress+'">'
|
editProfileForm+=' <input type="text" name="email" value="'+emailAddress+'">'
|
||||||
editProfileForm+='<label class="labels">'+translate['PGP']+'</label><br>'
|
editProfileForm+='<label class="labels">'+translate['PGP']+'</label><br>'
|
||||||
|
@ -1847,8 +1852,9 @@ def htmlProfile(defaultTimeline: str, \
|
||||||
emailAddress=getEmailAddress(profileJson)
|
emailAddress=getEmailAddress(profileJson)
|
||||||
xmppAddress=getXmppAddress(profileJson)
|
xmppAddress=getXmppAddress(profileJson)
|
||||||
matrixAddress=getMatrixAddress(profileJson)
|
matrixAddress=getMatrixAddress(profileJson)
|
||||||
|
ssbAddress=getSSBAddress(profileJson)
|
||||||
if donateUrl or xmppAddress or matrixAddress or \
|
if donateUrl or xmppAddress or matrixAddress or \
|
||||||
PGPpubKey or emailAddress:
|
ssbAddress or PGPpubKey or emailAddress:
|
||||||
donateSection='<div class="container">\n'
|
donateSection='<div class="container">\n'
|
||||||
donateSection+=' <center>\n'
|
donateSection+=' <center>\n'
|
||||||
if donateUrl:
|
if donateUrl:
|
||||||
|
@ -1867,6 +1873,9 @@ def htmlProfile(defaultTimeline: str, \
|
||||||
if matrixAddress:
|
if matrixAddress:
|
||||||
donateSection+= \
|
donateSection+= \
|
||||||
'<p>'+translate['Matrix']+': '+matrixAddress+'</p>\n'
|
'<p>'+translate['Matrix']+': '+matrixAddress+'</p>\n'
|
||||||
|
if ssbAddress:
|
||||||
|
donateSection+= \
|
||||||
|
'<p>'+translate['SSB']+': '+ssbAddress+'</p>\n'
|
||||||
if PGPpubKey:
|
if PGPpubKey:
|
||||||
donateSection+= \
|
donateSection+= \
|
||||||
'<p class="pgp">'+PGPpubKey.replace('\n','<br>')+'</p>\n'
|
'<p class="pgp">'+PGPpubKey.replace('\n','<br>')+'</p>\n'
|
||||||
|
@ -4279,6 +4288,7 @@ def htmlPersonOptions(translate: {},baseDir: str, \
|
||||||
donateUrl: str, \
|
donateUrl: str, \
|
||||||
xmppAddress: str, \
|
xmppAddress: str, \
|
||||||
matrixAddress: str, \
|
matrixAddress: str, \
|
||||||
|
ssbAddress: str, \
|
||||||
PGPpubKey: str, \
|
PGPpubKey: str, \
|
||||||
emailAddress) -> str:
|
emailAddress) -> str:
|
||||||
"""Show options for a person: view/follow/block/report
|
"""Show options for a person: view/follow/block/report
|
||||||
|
@ -4352,6 +4362,9 @@ def htmlPersonOptions(translate: {},baseDir: str, \
|
||||||
if matrixAddress:
|
if matrixAddress:
|
||||||
optionsStr+= \
|
optionsStr+= \
|
||||||
'<p class="imText">'+translate['Matrix']+': '+matrixAddress+'</p>'
|
'<p class="imText">'+translate['Matrix']+': '+matrixAddress+'</p>'
|
||||||
|
if ssbAddress:
|
||||||
|
optionsStr+= \
|
||||||
|
'<p class="imText">SSB: '+ssbAddress+'</p>'
|
||||||
if PGPpubKey:
|
if PGPpubKey:
|
||||||
optionsStr+='<p class="pgp">'+PGPpubKey.replace('\n','<br>')+'</p>'
|
optionsStr+='<p class="pgp">'+PGPpubKey.replace('\n','<br>')+'</p>'
|
||||||
optionsStr+=' <form method="POST" action="'+originPathStr+'/personoptions">'
|
optionsStr+=' <form method="POST" action="'+originPathStr+'/personoptions">'
|
||||||
|
|
Loading…
Reference in New Issue