mirror of https://gitlab.com/bashrc2/epicyon
XMerge branch 'main' of gitlab.com:bashrc2/epicyon
commit
8fd4ae2610
63
briar.py
63
briar.py
|
@ -8,38 +8,49 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_briar_address(actor_json: {}) -> str:
|
||||
"""Returns briar address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('briar'):
|
||||
if not name_value.lower().startswith('briar'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, prop_value = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = property_value['value'].strip()
|
||||
if len(property_value['value']) < 50:
|
||||
property_value[prop_value_name] = prop_value.strip()
|
||||
if len(property_value[prop_value_name]) < 50:
|
||||
continue
|
||||
if not property_value['value'].startswith('briar://'):
|
||||
if not property_value[prop_value_name].startswith('briar://'):
|
||||
continue
|
||||
if property_value['value'].lower() != property_value['value']:
|
||||
if property_value[prop_value_name].lower() != \
|
||||
property_value[prop_value_name]:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ' ' in property_value['value']:
|
||||
if ' ' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ',' in property_value['value']:
|
||||
if ',' in property_value[prop_value_name]:
|
||||
continue
|
||||
if '.' in property_value['value']:
|
||||
if '.' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -71,11 +82,16 @@ def set_briar_address(actor_json: {}, briar_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('briar'):
|
||||
if not name_value.lower().startswith('briar'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -85,15 +101,24 @@ def set_briar_address(actor_json: {}, briar_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('briar'):
|
||||
if not name_value.lower().startswith('briar'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = briar_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = briar_address
|
||||
return
|
||||
|
||||
new_briar_address = {
|
||||
|
|
57
cwtch.py
57
cwtch.py
|
@ -8,6 +8,7 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
import re
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_cwtch_address(actor_json: {}) -> str:
|
||||
|
@ -16,28 +17,36 @@ def get_cwtch_address(actor_json: {}) -> str:
|
|||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('cwtch'):
|
||||
if not name_value.lower().startswith('cwtch'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, prop_value = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = property_value['value'].strip()
|
||||
if len(property_value['value']) < 2:
|
||||
property_value[prop_value_name] = \
|
||||
property_value[prop_value_name].strip()
|
||||
if len(property_value[prop_value_name]) < 2:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ' ' in property_value['value']:
|
||||
if ' ' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ',' in property_value['value']:
|
||||
if ',' in property_value[prop_value_name]:
|
||||
continue
|
||||
if '.' in property_value['value']:
|
||||
if '.' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -59,11 +68,16 @@ def set_cwtch_address(actor_json: {}, cwtch_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('cwtch'):
|
||||
if not name_value.lower().startswith('cwtch'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -73,15 +87,24 @@ def set_cwtch_address(actor_json: {}, cwtch_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('cwtch'):
|
||||
if not name_value.lower().startswith('cwtch'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = cwtch_address
|
||||
prop_value_name, prop_value = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = cwtch_address
|
||||
return
|
||||
|
||||
new_cwtch_address = {
|
||||
|
|
65
donate.py
65
donate.py
|
@ -8,6 +8,9 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def _get_donation_types() -> []:
|
||||
return ('patreon', 'paypal', 'gofundme', 'liberapay',
|
||||
'kickstarter', 'indiegogo', 'crowdsupply',
|
||||
|
@ -25,19 +28,26 @@ def get_donation_url(actor_json: {}) -> str:
|
|||
return ''
|
||||
donation_type = _get_donation_types()
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if property_value['name'].lower() not in donation_type:
|
||||
if name_value.lower() not in donation_type:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, prop_value = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if '<a href="' not in property_value['value']:
|
||||
if '<a href="' not in property_value[prop_value_name]:
|
||||
continue
|
||||
donate_url = property_value['value'].split('<a href="')[1]
|
||||
donate_url = property_value[prop_value_name].split('<a href="')[1]
|
||||
if '"' in donate_url:
|
||||
return donate_url.split('"')[0]
|
||||
return ''
|
||||
|
@ -51,17 +61,24 @@ def get_website(actor_json: {}, translate: {}) -> str:
|
|||
match_strings = _get_website_strings()
|
||||
match_strings.append(translate['Website'].lower())
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if property_value['name'].lower() not in match_strings:
|
||||
if name_value.lower() not in match_strings:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -92,11 +109,16 @@ def set_donation_url(actor_json: {}, donate_url: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower() != donate_name:
|
||||
if not name_value.lower() != donate_name:
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -111,15 +133,24 @@ def set_donation_url(actor_json: {}, donate_url: str) -> None:
|
|||
donate_url + '</a>'
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if property_value['name'].lower() != donate_name:
|
||||
if name_value.lower() != donate_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = donate_value
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = donate_value
|
||||
return
|
||||
|
||||
new_donate = {
|
||||
|
|
46
enigma.py
46
enigma.py
|
@ -8,23 +8,33 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_enigma_pub_key(actor_json: {}) -> str:
|
||||
"""Returns Enigma public key for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('enigma'):
|
||||
if not name_value.lower().startswith('enigma'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -41,11 +51,16 @@ def set_enigma_pub_key(actor_json: {}, enigma_pub_key: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('enigma'):
|
||||
if not name_value.lower().startswith('enigma'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -55,15 +70,24 @@ def set_enigma_pub_key(actor_json: {}, enigma_pub_key: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('enigma'):
|
||||
if not name_value.lower().startswith('enigma'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = enigma_pub_key
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = enigma_pub_key
|
||||
return
|
||||
|
||||
new_enigma_pub_key = {
|
||||
|
|
|
@ -73,11 +73,16 @@ def set_actor_languages(base_dir: str, actor_json: {},
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('languages'):
|
||||
if not name_value.lower().startswith('languages'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
|
54
matrix.py
54
matrix.py
|
@ -8,31 +8,41 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_matrix_address(actor_json: {}) -> str:
|
||||
"""Returns matrix address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('matrix'):
|
||||
if not name_value.lower().startswith('matrix'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if '@' not in property_value['value']:
|
||||
if '@' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if not property_value['value'].startswith('@'):
|
||||
if not property_value[prop_value_name].startswith('@'):
|
||||
continue
|
||||
if ':' not in property_value['value']:
|
||||
if ':' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -45,11 +55,16 @@ def set_matrix_address(actor_json: {}, matrix_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('matrix'):
|
||||
if not name_value.lower().startswith('matrix'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -70,15 +85,24 @@ def set_matrix_address(actor_json: {}, matrix_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('matrix'):
|
||||
if not name_value.lower().startswith('matrix'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = matrix_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = matrix_address
|
||||
return
|
||||
|
||||
new_matrix_address = {
|
||||
|
|
42
outbox.py
42
outbox.py
|
@ -15,6 +15,7 @@ from posts import outbox_message_create_wrap
|
|||
from posts import save_post_to_box
|
||||
from posts import send_to_followers_thread
|
||||
from posts import send_to_named_addresses_thread
|
||||
from utils import get_attachment_property_value
|
||||
from utils import get_account_timezone
|
||||
from utils import has_object_string_type
|
||||
from utils import get_base_content_from_post
|
||||
|
@ -130,38 +131,51 @@ def _person_receive_update_outbox(recent_posts_cache: {},
|
|||
# update fields within actor
|
||||
if 'attachment' in updated_actor_json:
|
||||
for new_property_value in updated_actor_json['attachment']:
|
||||
if not new_property_value.get('name'):
|
||||
name_value = None
|
||||
if new_property_value.get('name'):
|
||||
name_value = new_property_value['name']
|
||||
elif new_property_value.get('schema:name'):
|
||||
name_value = new_property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if new_property_value['name'] not in updatable_attachments:
|
||||
if name_value not in updatable_attachments:
|
||||
continue
|
||||
if not new_property_value.get('type'):
|
||||
continue
|
||||
if not new_property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(new_property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if new_property_value['type'] != 'PropertyValue':
|
||||
if not new_property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if 'attachment' not in actor_json:
|
||||
continue
|
||||
found = False
|
||||
for attach_idx, _ in enumerate(actor_json['attachment']):
|
||||
if actor_json['attachment'][attach_idx]['type'] != \
|
||||
'PropertyValue':
|
||||
attach_type = actor_json['attachment'][attach_idx]['type']
|
||||
if not attach_type.endswith('PropertyValue'):
|
||||
continue
|
||||
if actor_json['attachment'][attach_idx]['name'] != \
|
||||
new_property_value['name']:
|
||||
attach_name = ''
|
||||
if actor_json['attachment'][attach_idx].get('name'):
|
||||
attach_name = \
|
||||
actor_json['attachment'][attach_idx]['name']
|
||||
elif actor_json['attachment'][attach_idx].get('schema:name'):
|
||||
attach_name = \
|
||||
actor_json['attachment'][attach_idx]['schema:name']
|
||||
if attach_name != name_value:
|
||||
continue
|
||||
if actor_json['attachment'][attach_idx]['value'] != \
|
||||
new_property_value['value']:
|
||||
actor_json['attachment'][attach_idx]['value'] = \
|
||||
new_property_value['value']
|
||||
if actor_json['attachment'][attach_idx][prop_value_name] != \
|
||||
new_property_value[prop_value_name]:
|
||||
actor_json['attachment'][attach_idx][prop_value_name] = \
|
||||
new_property_value[prop_value_name]
|
||||
actor_changed = True
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
actor_json['attachment'].append({
|
||||
"name": new_property_value['name'],
|
||||
"name": name_value,
|
||||
"type": "PropertyValue",
|
||||
"value": new_property_value['value']
|
||||
"value": new_property_value[prop_value_name]
|
||||
})
|
||||
actor_changed = True
|
||||
# save actor to file
|
||||
|
|
26
person.py
26
person.py
|
@ -38,6 +38,7 @@ from roles import set_role
|
|||
from roles import set_rolesFromList
|
||||
from roles import get_actor_roles_list
|
||||
from media import process_meta_data
|
||||
from utils import get_attachment_property_value
|
||||
from utils import get_nickname_from_actor
|
||||
from utils import remove_html
|
||||
from utils import contains_invalid_chars
|
||||
|
@ -232,7 +233,7 @@ def get_actor_update_json(actor_json: {}) -> {}:
|
|||
"@id": "as:movedTo",
|
||||
"@type": "@id"
|
||||
},
|
||||
"schema": "http://schema.org#",
|
||||
"schema": "http://schema.org/",
|
||||
"PropertyValue": "schema:PropertyValue",
|
||||
"value": "schema:value",
|
||||
"IdentityProof": "toot:IdentityProof",
|
||||
|
@ -338,7 +339,7 @@ def get_default_person_context() -> str:
|
|||
'messageType': 'toot:messageType',
|
||||
'movedTo': {'@id': 'as:movedTo', '@type': '@id'},
|
||||
'publicKeyBase64': 'toot:publicKeyBase64',
|
||||
'schema': 'http://schema.org#',
|
||||
'schema': 'http://schema.org/',
|
||||
'suspended': 'toot:suspended',
|
||||
'toot': 'http://joinmastodon.org/ns#',
|
||||
'value': 'schema:value',
|
||||
|
@ -1789,10 +1790,14 @@ def valid_sending_actor(session, base_dir: str,
|
|||
continue
|
||||
if isinstance(tag['name'], str):
|
||||
bio_str += ' ' + tag['name']
|
||||
if tag.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(tag)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if isinstance(tag['value'], str):
|
||||
bio_str += ' ' + tag['value']
|
||||
if tag.get(prop_value_name):
|
||||
continue
|
||||
if isinstance(tag[prop_value_name], str):
|
||||
bio_str += ' ' + tag[prop_value_name]
|
||||
|
||||
if actor_json.get('name'):
|
||||
bio_str += ' ' + remove_html(actor_json['name'])
|
||||
|
@ -1814,19 +1819,20 @@ def valid_sending_actor(session, base_dir: str,
|
|||
for tag in actor_json['attachment']:
|
||||
if not isinstance(tag, dict):
|
||||
continue
|
||||
if not tag.get('name'):
|
||||
if not tag.get('name') and not tag.get('schema:name'):
|
||||
continue
|
||||
no_of_tags += 1
|
||||
if not tag.get('value'):
|
||||
prop_value_name, _ = get_attachment_property_value(tag)
|
||||
if not prop_value_name:
|
||||
tags_without_value += 1
|
||||
continue
|
||||
if not isinstance(tag['value'], str):
|
||||
if not isinstance(tag[prop_value_name], str):
|
||||
tags_without_value += 1
|
||||
continue
|
||||
if not tag['value'].strip():
|
||||
if not tag[prop_value_name].strip():
|
||||
tags_without_value += 1
|
||||
continue
|
||||
if len(tag['value']) < 2:
|
||||
if len(tag[prop_value_name]) < 2:
|
||||
tags_without_value += 1
|
||||
continue
|
||||
if no_of_tags > 0:
|
||||
|
|
149
pgp.py
149
pgp.py
|
@ -30,27 +30,37 @@ from cwtch import get_cwtch_address
|
|||
from blog import get_blog_address
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_email_address(actor_json: {}) -> str:
|
||||
"""Returns the email address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('email'):
|
||||
if not name_value.lower().startswith('email'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if '@' not in property_value['value']:
|
||||
if '@' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if '.' not in property_value['value']:
|
||||
if '.' not in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -60,19 +70,26 @@ def get_pgp_pub_key(actor_json: {}) -> str:
|
|||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('pgp'):
|
||||
if not name_value.lower().startswith('pgp'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if not contains_pgp_public_key(property_value['value']):
|
||||
if not contains_pgp_public_key(property_value[prop_value_name]):
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -82,19 +99,26 @@ def get_pgp_fingerprint(actor_json: {}) -> str:
|
|||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('openpgp'):
|
||||
if not name_value.lower().startswith('openpgp'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if len(property_value['value']) < 10:
|
||||
if len(property_value[prop_value_name]) < 10:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -117,11 +141,16 @@ def set_email_address(actor_json: {}, email_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('email'):
|
||||
if not name_value.lower().startswith('email'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -131,15 +160,24 @@ def set_email_address(actor_json: {}, email_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('email'):
|
||||
if not name_value.lower().startswith('email'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = email_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = email_address
|
||||
return
|
||||
|
||||
new_email_address = {
|
||||
|
@ -168,11 +206,16 @@ def set_pgp_pub_key(actor_json: {}, pgp_pub_key: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('pgp'):
|
||||
if not name_value.lower().startswith('pgp'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -182,15 +225,24 @@ def set_pgp_pub_key(actor_json: {}, pgp_pub_key: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('pgp'):
|
||||
if not name_value.lower().startswith('pgp'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = pgp_pub_key
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = pgp_pub_key
|
||||
return
|
||||
|
||||
newpgp_pub_key = {
|
||||
|
@ -217,11 +269,16 @@ def set_pgp_fingerprint(actor_json: {}, fingerprint: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('openpgp'):
|
||||
if not name_value.lower().startswith('openpgp'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -231,15 +288,24 @@ def set_pgp_fingerprint(actor_json: {}, fingerprint: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('openpgp'):
|
||||
if not name_value.lower().startswith('openpgp'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = fingerprint.strip()
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = fingerprint.strip()
|
||||
return
|
||||
|
||||
newpgp_fingerprint = {
|
||||
|
@ -451,12 +517,13 @@ def _get_pgp_public_key_from_actor(signing_priv_key_pem: str,
|
|||
for tag in actor_json['attachment']:
|
||||
if not isinstance(tag, dict):
|
||||
continue
|
||||
if not tag.get('value'):
|
||||
prop_value_name, _ = get_attachment_property_value(tag)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if not isinstance(tag['value'], str):
|
||||
if not isinstance(tag[prop_value_name], str):
|
||||
continue
|
||||
if contains_pgp_public_key(tag['value']):
|
||||
return tag['value']
|
||||
if contains_pgp_public_key(tag[prop_value_name]):
|
||||
return tag[prop_value_name]
|
||||
return None
|
||||
|
||||
|
||||
|
|
59
ssb.py
59
ssb.py
|
@ -8,34 +8,45 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_ssb_address(actor_json: {}) -> str:
|
||||
"""Returns ssb address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('ssb'):
|
||||
if not name_value.lower().startswith('ssb'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = property_value['value'].strip()
|
||||
if not property_value['value'].startswith('@'):
|
||||
property_value[prop_value_name] = \
|
||||
property_value[prop_value_name].strip()
|
||||
if not property_value[prop_value_name].startswith('@'):
|
||||
continue
|
||||
if '=.' not in property_value['value']:
|
||||
if '=.' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ' ' in property_value['value']:
|
||||
if ' ' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ',' in property_value['value']:
|
||||
if ',' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -62,11 +73,16 @@ def set_ssb_address(actor_json: {}, ssb_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('ssb'):
|
||||
if not name_value.lower().startswith('ssb'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -76,15 +92,24 @@ def set_ssb_address(actor_json: {}, ssb_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('ssb'):
|
||||
if not name_value.lower().startswith('ssb'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = ssb_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = ssb_address
|
||||
return
|
||||
|
||||
new_ssb_address = {
|
||||
|
|
62
tox.py
62
tox.py
|
@ -8,36 +8,48 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_tox_address(actor_json: {}) -> str:
|
||||
"""Returns tox address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('tox'):
|
||||
if not name_value.lower().startswith('tox'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = property_value['value'].strip()
|
||||
if len(property_value['value']) != 76:
|
||||
property_value[prop_value_name] = \
|
||||
property_value[prop_value_name].strip()
|
||||
if len(property_value[prop_value_name]) != 76:
|
||||
continue
|
||||
if property_value['value'].upper() != property_value['value']:
|
||||
if property_value[prop_value_name].upper() != \
|
||||
property_value[prop_value_name]:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ' ' in property_value['value']:
|
||||
if ' ' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ',' in property_value['value']:
|
||||
if ',' in property_value[prop_value_name]:
|
||||
continue
|
||||
if '.' in property_value['value']:
|
||||
if '.' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -67,11 +79,16 @@ def set_tox_address(actor_json: {}, tox_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('tox'):
|
||||
if not name_value.lower().startswith('tox'):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -81,15 +98,24 @@ def set_tox_address(actor_json: {}, tox_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('tox'):
|
||||
if not name_value.lower().startswith('tox'):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = tox_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = tox_address
|
||||
return
|
||||
|
||||
new_tox_address = {
|
||||
|
|
93
utils.py
93
utils.py
|
@ -52,22 +52,29 @@ def get_actor_languages_list(actor_json: {}) -> []:
|
|||
if not actor_json.get('attachment'):
|
||||
return []
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith('languages'):
|
||||
if not name_value.lower().startswith('languages'):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if isinstance(property_value['value'], list):
|
||||
lang_list = property_value['value']
|
||||
if isinstance(property_value[prop_value_name], list):
|
||||
lang_list = property_value[prop_value_name]
|
||||
lang_list.sort()
|
||||
return lang_list
|
||||
if isinstance(property_value['value'], str):
|
||||
lang_str = property_value['value']
|
||||
if isinstance(property_value[prop_value_name], str):
|
||||
lang_str = property_value[prop_value_name]
|
||||
lang_list_temp = []
|
||||
if ',' in lang_str:
|
||||
lang_list_temp = lang_str.split(',')
|
||||
|
@ -1099,14 +1106,22 @@ def get_gender_from_bio(base_dir: str, actor: str, person_cache: {},
|
|||
for tag in tags_list:
|
||||
if not isinstance(tag, dict):
|
||||
continue
|
||||
if not tag.get('name') or not tag.get('value'):
|
||||
name_value = None
|
||||
if tag.get('name'):
|
||||
name_value = tag['name']
|
||||
if tag.get('schema:name'):
|
||||
name_value = tag['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if tag['name'].lower() == \
|
||||
prop_value_name, _ = get_attachment_property_value(tag)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if name_value.lower() == \
|
||||
translate['gender'].lower():
|
||||
bio_found = tag['value']
|
||||
bio_found = tag[prop_value_name]
|
||||
break
|
||||
if tag['name'].lower().startswith(pronoun_str):
|
||||
bio_found = tag['value']
|
||||
if name_value.lower().startswith(pronoun_str):
|
||||
bio_found = tag[prop_value_name]
|
||||
break
|
||||
# the field name could be anything,
|
||||
# just look at the value
|
||||
|
@ -1114,9 +1129,13 @@ def get_gender_from_bio(base_dir: str, actor: str, person_cache: {},
|
|||
for tag in tags_list:
|
||||
if not isinstance(tag, dict):
|
||||
continue
|
||||
if not tag.get('name') or not tag.get('value'):
|
||||
if not tag.get('name') and not tag.get('schema:name'):
|
||||
continue
|
||||
gender = _gender_from_string(translate, tag['value'])
|
||||
prop_value_name, _ = get_attachment_property_value(tag)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
gender = \
|
||||
_gender_from_string(translate, tag[prop_value_name])
|
||||
if gender:
|
||||
return gender
|
||||
# if not then use the bio
|
||||
|
@ -3113,32 +3132,39 @@ def get_actor_property_url(actor_json: {}, property_name: str) -> str:
|
|||
return ''
|
||||
property_name = property_name.lower()
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value['name'].lower().startswith(property_name):
|
||||
if not name_value.lower().startswith(property_name):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = property_value['value'].strip()
|
||||
property_value['value'] = property_value[prop_value_name].strip()
|
||||
prefixes = get_protocol_prefixes()
|
||||
prefix_found = False
|
||||
for prefix in prefixes:
|
||||
if property_value['value'].startswith(prefix):
|
||||
if property_value[prop_value_name].startswith(prefix):
|
||||
prefix_found = True
|
||||
break
|
||||
if not prefix_found:
|
||||
continue
|
||||
if '.' not in property_value['value']:
|
||||
if '.' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if ' ' in property_value['value']:
|
||||
if ' ' in property_value[prop_value_name]:
|
||||
continue
|
||||
if ',' in property_value['value']:
|
||||
if ',' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -3652,3 +3678,20 @@ def disallow_reply(content: str) -> bool:
|
|||
if diss in content:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def get_attachment_property_value(property_value: {}) -> (str, str):
|
||||
"""Returns the fieldname and value for an attachment property
|
||||
"""
|
||||
prop_value = None
|
||||
prop_value_name = None
|
||||
if property_value.get('value'):
|
||||
prop_value = property_value['value']
|
||||
prop_value_name = 'value'
|
||||
elif property_value.get('http://schema.org#value'):
|
||||
prop_value_name = 'http://schema.org#value'
|
||||
prop_value = property_value[prop_value_name]
|
||||
elif property_value.get('https://schema.org#value'):
|
||||
prop_value_name = 'https://schema.org#value'
|
||||
prop_value = property_value[prop_value_name]
|
||||
return prop_value_name, prop_value
|
||||
|
|
|
@ -11,6 +11,7 @@ import os
|
|||
from shutil import copyfile
|
||||
from collections import OrderedDict
|
||||
from session import get_json
|
||||
from utils import get_attachment_property_value
|
||||
from utils import is_account_dir
|
||||
from utils import remove_html
|
||||
from utils import get_protocol_prefixes
|
||||
|
@ -183,11 +184,16 @@ def _set_actor_property_url(actor_json: {},
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith(property_name_lower):
|
||||
if not name_value.lower().startswith(property_name_lower):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -210,15 +216,24 @@ def _set_actor_property_url(actor_json: {},
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value['name'].lower().startswith(property_name_lower):
|
||||
if not name_value.lower().startswith(property_name_lower):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = url
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = url
|
||||
return
|
||||
|
||||
new_address = {
|
||||
|
@ -787,11 +802,16 @@ def html_header_with_person_markup(css_filename: str, instance_title: str,
|
|||
)
|
||||
for attach_json in actor_json['attachment']:
|
||||
if not attach_json.get('name'):
|
||||
if not attach_json.get('schema:name'):
|
||||
continue
|
||||
prop_value_name, _ = get_attachment_property_value(attach_json)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if not attach_json.get('value'):
|
||||
continue
|
||||
name = attach_json['name'].lower()
|
||||
value = attach_json['value']
|
||||
if attach_json.get('name'):
|
||||
name = attach_json['name'].lower()
|
||||
else:
|
||||
name = attach_json['schema:name'].lower()
|
||||
value = attach_json[prop_value_name]
|
||||
for og_tag in og_tags:
|
||||
if name != og_tag:
|
||||
continue
|
||||
|
|
18
webfinger.py
18
webfinger.py
|
@ -12,6 +12,7 @@ import urllib.parse
|
|||
from session import get_json
|
||||
from cache import store_webfinger_in_cache
|
||||
from cache import get_webfinger_from_cache
|
||||
from utils import get_attachment_property_value
|
||||
from utils import get_full_domain
|
||||
from utils import load_json
|
||||
from utils import load_json_onionify
|
||||
|
@ -414,9 +415,14 @@ def _webfinger_updateFromProfile(wf_json: {}, actor_json: {}) -> bool:
|
|||
aliases_not_found.append(alias)
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
property_name = property_value['name'].lower()
|
||||
property_name = name_value.lower()
|
||||
found = False
|
||||
for name, alias in webfinger_property_name.items():
|
||||
if name == property_name:
|
||||
|
@ -428,12 +434,14 @@ def _webfinger_updateFromProfile(wf_json: {}, actor_json: {}) -> bool:
|
|||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
|
||||
new_value = property_value['value'].strip()
|
||||
new_value = property_value[prop_value_name].strip()
|
||||
if '://' in new_value:
|
||||
new_value = new_value.split('://')[1]
|
||||
|
||||
|
|
59
xmpp.py
59
xmpp.py
|
@ -8,29 +8,38 @@ __status__ = "Production"
|
|||
__module_group__ = "Profile Metadata"
|
||||
|
||||
|
||||
from utils import get_attachment_property_value
|
||||
|
||||
|
||||
def get_xmpp_address(actor_json: {}) -> str:
|
||||
"""Returns xmpp address for the given actor
|
||||
"""
|
||||
if not actor_json.get('attachment'):
|
||||
return ''
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name'].lower()
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name'].lower()
|
||||
if not name_value:
|
||||
continue
|
||||
name_lower = property_value['name'].lower()
|
||||
if not (name_lower.startswith('xmpp') or
|
||||
name_lower.startswith('jabber')):
|
||||
if not (name_value.startswith('xmpp') or
|
||||
name_value.startswith('jabber')):
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not property_value.get('value'):
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
if '@' not in property_value['value']:
|
||||
if '@' not in property_value[prop_value_name]:
|
||||
continue
|
||||
if '"' in property_value['value']:
|
||||
if '"' in property_value[prop_value_name]:
|
||||
continue
|
||||
return property_value['value']
|
||||
return property_value[prop_value_name]
|
||||
return ''
|
||||
|
||||
|
||||
|
@ -53,12 +62,17 @@ def set_xmpp_address(actor_json: {}, xmpp_address: str) -> None:
|
|||
# remove any existing value
|
||||
property_found = None
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
if not (property_value['name'].lower().startswith('xmpp') or
|
||||
property_value['name'].lower().startswith('jabber')):
|
||||
if not (name_value.lower().startswith('xmpp') or
|
||||
name_value.lower().startswith('jabber')):
|
||||
continue
|
||||
property_found = property_value
|
||||
break
|
||||
|
@ -68,17 +82,26 @@ def set_xmpp_address(actor_json: {}, xmpp_address: str) -> None:
|
|||
return
|
||||
|
||||
for property_value in actor_json['attachment']:
|
||||
if not property_value.get('name'):
|
||||
name_value = None
|
||||
if property_value.get('name'):
|
||||
name_value = property_value['name']
|
||||
elif property_value.get('schema:name'):
|
||||
name_value = property_value['schema:name']
|
||||
if not name_value:
|
||||
continue
|
||||
if not property_value.get('type'):
|
||||
continue
|
||||
name_lower = property_value['name'].lower()
|
||||
if not (name_lower.startswith('xmpp') or
|
||||
name_lower.startswith('jabber')):
|
||||
name_value = name_value.lower()
|
||||
if not (name_value.startswith('xmpp') or
|
||||
name_value.startswith('jabber')):
|
||||
continue
|
||||
if property_value['type'] != 'PropertyValue':
|
||||
if not property_value['type'].endswith('PropertyValue'):
|
||||
continue
|
||||
property_value['value'] = xmpp_address
|
||||
prop_value_name, _ = \
|
||||
get_attachment_property_value(property_value)
|
||||
if not prop_value_name:
|
||||
continue
|
||||
property_value[prop_value_name] = xmpp_address
|
||||
return
|
||||
|
||||
new_xmpp_address = {
|
||||
|
|
Loading…
Reference in New Issue