Include spoofed city within person metadata

merge-requests/30/head
Bob Mottram 2021-05-16 10:20:24 +01:00
parent 7b1a1e8585
commit 648666d741
3 changed files with 39 additions and 11 deletions

View File

@ -7399,6 +7399,7 @@ class PubServer(BaseHTTPRequestHandler):
if isinstance(actorJson['affiliation']['roleName'], if isinstance(actorJson['affiliation']['roleName'],
list): list):
rolesList = actorJson['affiliation']['roleName'] rolesList = actorJson['affiliation']['roleName']
city = self._getSpoofedCity(baseDir, nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -7422,7 +7423,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allowLocalNetworkAccess, self.server.allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, rolesList, accessKeys, city, rolesList,
None, None) None, None)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -7501,6 +7502,8 @@ class PubServer(BaseHTTPRequestHandler):
actorSkillsList = \ actorSkillsList = \
actorJson['hasOccupation']['skills'] actorJson['hasOccupation']['skills']
skills = getSkillsFromList(actorSkillsList) skills = getSkillsFromList(actorSkillsList)
city = self._getSpoofedCity(baseDir,
nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -7524,7 +7527,7 @@ class PubServer(BaseHTTPRequestHandler):
allowLocalNetworkAccess, allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, skills, accessKeys, city, skills,
None, None) None, None)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -9398,6 +9401,7 @@ class PubServer(BaseHTTPRequestHandler):
accessKeys = \ accessKeys = \
self.server.keyShortcuts[nickname] self.server.keyShortcuts[nickname]
city = self._getSpoofedCity(baseDir, nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -9422,7 +9426,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allowLocalNetworkAccess, self.server.allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, accessKeys, city,
shares, shares,
pageNumber, sharesPerPage) pageNumber, sharesPerPage)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
@ -9500,6 +9504,7 @@ class PubServer(BaseHTTPRequestHandler):
return True return True
accessKeys = self.server.accessKeys accessKeys = self.server.accessKeys
city = None
if '/users/' in path: if '/users/' in path:
nickname = path.split('/users/')[1] nickname = path.split('/users/')[1]
if '/' in nickname: if '/' in nickname:
@ -9508,6 +9513,7 @@ class PubServer(BaseHTTPRequestHandler):
accessKeys = \ accessKeys = \
self.server.keyShortcuts[nickname] self.server.keyShortcuts[nickname]
city = self._getSpoofedCity(baseDir, nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -9532,7 +9538,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allowLocalNetworkAccess, self.server.allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, accessKeys, city,
following, following,
pageNumber, pageNumber,
followsPerPage).encode('utf-8') followsPerPage).encode('utf-8')
@ -9609,6 +9615,7 @@ class PubServer(BaseHTTPRequestHandler):
return True return True
accessKeys = self.server.accessKeys accessKeys = self.server.accessKeys
city = None
if '/users/' in path: if '/users/' in path:
nickname = path.split('/users/')[1] nickname = path.split('/users/')[1]
if '/' in nickname: if '/' in nickname:
@ -9617,6 +9624,7 @@ class PubServer(BaseHTTPRequestHandler):
accessKeys = \ accessKeys = \
self.server.keyShortcuts[nickname] self.server.keyShortcuts[nickname]
city = self._getSpoofedCity(baseDir, nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -9642,7 +9650,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allowLocalNetworkAccess, self.server.allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, accessKeys, city,
followers, followers,
pageNumber, pageNumber,
followsPerPage).encode('utf-8') followsPerPage).encode('utf-8')
@ -9742,6 +9750,7 @@ class PubServer(BaseHTTPRequestHandler):
return True return True
accessKeys = self.server.accessKeys accessKeys = self.server.accessKeys
city = None
if '/users/' in path: if '/users/' in path:
nickname = path.split('/users/')[1] nickname = path.split('/users/')[1]
if '/' in nickname: if '/' in nickname:
@ -9750,6 +9759,7 @@ class PubServer(BaseHTTPRequestHandler):
accessKeys = \ accessKeys = \
self.server.keyShortcuts[nickname] self.server.keyShortcuts[nickname]
city = self._getSpoofedCity(baseDir, nickname, domain)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -9775,7 +9785,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allowLocalNetworkAccess, self.server.allowLocalNetworkAccess,
self.server.textModeBanner, self.server.textModeBanner,
self.server.debug, self.server.debug,
accessKeys, accessKeys, city,
None, None).encode('utf-8') None, None).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,

View File

@ -520,7 +520,7 @@ def htmlProfile(rssIconAtTop: bool,
peertubeInstances: [], peertubeInstances: [],
allowLocalNetworkAccess: bool, allowLocalNetworkAccess: bool,
textModeBanner: str, textModeBanner: str,
debug: bool, accessKeys: {}, debug: bool, accessKeys: {}, city: str,
extraJson=None, pageNumber=None, extraJson=None, pageNumber=None,
maxItemsPerPage=None) -> str: maxItemsPerPage=None) -> str:
"""Show the profile page as html """Show the profile page as html
@ -901,7 +901,8 @@ def htmlProfile(rssIconAtTop: bool,
instanceTitle = \ instanceTitle = \
getConfigParam(baseDir, 'instanceTitle') getConfigParam(baseDir, 'instanceTitle')
profileStr = \ profileStr = \
htmlHeaderWithPersonMarkup(cssFilename, instanceTitle, profileJson) + \ htmlHeaderWithPersonMarkup(cssFilename, instanceTitle,
profileJson, city) + \
profileStr + htmlFooter() profileStr + htmlFooter()
return profileStr return profileStr

View File

@ -711,7 +711,8 @@ def htmlHeaderWithExternalStyle(cssFilename: str, instanceTitle: str,
def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str, def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str,
actorJson: {}, lang='en') -> str: actorJson: {}, city: str,
lang='en') -> str:
"""html header which includes person markup """html header which includes person markup
https://schema.org/Person https://schema.org/Person
""" """
@ -731,7 +732,23 @@ def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str,
occupationStr + \ occupationStr + \
' "skills": ' + str(skillsList) + '\n' + \ ' "skills": ' + str(skillsList) + '\n' + \
' "},\n' ' "},\n'
cityMarkup = ''
if city:
city = city.lower().title()
addComma = ''
countryMarkup = ''
if ',' in city:
country = city.split(',', 1)[1].strip().title()
city = city.split(',', 1)[0]
countryMarkup = \
' "addressCountry": "' + country + '"'
addComma = ','
cityMarkup = \
' "address": {\n' + \
' "@type": "PostalAddress",\n' + \
' "addressLocality": "' + city + '"' + addComma + '\n' + \
countryMarkup + \
' },'
personMarkup = \ personMarkup = \
' <script type="application/ld+json">\n' + \ ' <script type="application/ld+json">\n' + \
' {\n' + \ ' {\n' + \
@ -740,7 +757,7 @@ def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str,
' "name": "' + actorJson['name'] + '",\n' + \ ' "name": "' + actorJson['name'] + '",\n' + \
' "image": "' + actorJson['icon']['url'] + '",\n' + \ ' "image": "' + actorJson['icon']['url'] + '",\n' + \
' "description": "' + actorJson['summary'] + '",\n' + \ ' "description": "' + actorJson['summary'] + '",\n' + \
skillsMarkup + \ cityMarkup + skillsMarkup + \
' "url": "' + actorJson['id'] + '"\n' + \ ' "url": "' + actorJson['id'] + '"\n' + \
' }\n' + \ ' }\n' + \
' </script>\n' ' </script>\n'