Remove colons from nicknames

main
bashrc 2026-08-07 13:51:39 +01:00
parent b4e84dda6e
commit 629e8dd606
30 changed files with 154 additions and 4 deletions

View File

@ -116,6 +116,8 @@ def authorize_basic(base_dir: str, path: str, auth_header: str,
nickname_from_path = path_users_section
if '/' in nickname_from_path:
nickname_from_path = nickname_from_path.split('/')[0]
if ':' in nickname_from_path:
nickname_from_path = nickname_from_path.split(':')[0]
if '?' in nickname_from_path:
nickname_from_path = nickname_from_path.split('?')[0]
else:

View File

@ -123,6 +123,8 @@ def get_featured_collections_feed(base_dir: str,
path.replace('/@', '', 1).replace(FEATURED_COLLECTIONS_ENDING, '')
if not nickname:
return None
if ':' in nickname:
nickname = nickname.split(':')[0]
if not valid_nickname(domain, nickname):
return None

View File

@ -1035,6 +1035,8 @@ def _add_mention(base_dir: str, word_str: str, http_prefix: str,
continue
follow_str = remove_eol(follow)
replace_nickname = follow_str.split('@')[0]
if ':' in replace_nickname:
replace_nickname = replace_nickname.split(':')[0]
replace_domain = follow_str.split('@')[1]
recipient_actor = \
_mention_to_url(base_dir, http_prefix,
@ -1061,6 +1063,8 @@ def _add_mention(base_dir: str, word_str: str, http_prefix: str,
possible_nickname = possible_handle.split('@')[0]
if not possible_nickname:
return False
if ':' in possible_nickname:
possible_nickname = possible_nickname.split(':')[0]
possible_domain = \
possible_handle.split('@')[1].strip('\n').strip('\r')
if not possible_domain:

View File

@ -265,6 +265,8 @@ def blocked_user_agent(calling_domain: str, agent_str: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
# does this account block?
if not block_dict.get(nickname):
continue

View File

@ -166,6 +166,8 @@ class PubServer(BaseHTTPRequestHandler):
nickname = self.path.split('/calendars/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not nickname:
print(endpoint_type.upper() + ' no nickname ' + self.path)
http_400(self)

View File

@ -857,6 +857,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
shared_item_display_name = self.path.split('/shareditems/')[1]
if not nickname or not shared_item_display_name:
http_404(self, 112)
@ -965,6 +967,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
page_number: int = 1
if '?page=' in self.path:
page_number_str = self.path.split('?page=')[1]
@ -1045,6 +1049,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
page_number: int = 1
if '?page=' in self.path:
page_number_str = self.path.split('?page=')[1]
@ -1108,6 +1114,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
page_number: int = 1
if '?page=' in self.path:
page_number_str = self.path.split('?page=')[1]
@ -1170,6 +1178,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
page_number: int = 1
if '?page=' in self.path:
page_number_str = self.path.split('?page=')[1]
@ -1211,6 +1221,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if self.server.debug:
print('Wanted collection for account: ' + nickname)
base_dir = self.server.base_dir
@ -1308,6 +1320,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if self.server.debug:
print('Catalog for account: ' + nickname)
base_dir = self.server.base_dir
@ -1418,6 +1432,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if self.server.debug:
print('Wanted catalog for account: ' + nickname)
base_dir = self.server.base_dir
@ -1763,6 +1779,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
episode_timestamp = self.path.split('?podepisode=')[1].strip()
replacements = {
'__': ' ',
@ -1799,6 +1817,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if '?' in nickname:
nickname = nickname.split('?')[0]
if nickname == self.authorized_nickname and \
@ -1815,6 +1835,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
pinned_post_json = \
get_pinned_post_as_json(self.server.base_dir,
self.server.http_prefix,
@ -1859,6 +1881,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
# return the featured posts collection
get_featured_collection(self, calling_domain, referer_domain,
self.server.base_dir,
@ -1876,6 +1900,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
# return the featured posts collection item
get_featured_collection_item(self, calling_domain, referer_domain,
self.server.base_dir,
@ -1891,6 +1917,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
# return the feature authorization stamp
# See verification section of
# https://codeberg.org/fediverse/fep/src/branch/main
@ -2536,6 +2564,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
access_keys = self.server.access_keys
if self.server.key_shortcuts.get(nickname):
@ -2564,6 +2594,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_artist(self.server.base_dir, nickname):
http_403(self)
@ -2595,6 +2627,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_welcome_screen_complete(self.server.base_dir,
nickname,
self.server.domain):
@ -2619,6 +2653,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_welcome_screen_complete(self.server.base_dir,
nickname,
self.server.domain):
@ -2646,6 +2682,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_welcome_screen_complete(self.server.base_dir,
nickname,
self.server.domain):
@ -3402,6 +3440,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if self.server.hide_announces.get(nickname):
del self.server.hide_announces[nickname]
else:
@ -3420,6 +3460,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
not_min = not is_minimal(self.server.base_dir,
self.server.domain, nickname)
set_minimal(self.server.base_dir,
@ -3439,6 +3481,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
access_keys = self.server.access_keys
if self.server.key_shortcuts.get(nickname):
@ -3492,6 +3536,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
access_keys = self.server.access_keys
if self.server.key_shortcuts.get(nickname):
@ -3539,6 +3585,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
access_keys = self.server.access_keys
if self.server.key_shortcuts.get(nickname):
@ -5682,6 +5730,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_moderator(self.server.base_dir, nickname):
http_400(self)
self.server.getreq_busy = False
@ -5727,6 +5777,8 @@ def daemon_http_get(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not is_moderator(self.server.base_dir, nickname):
http_400(self)
self.server.getreq_busy = False
@ -6575,6 +6627,8 @@ def _get_speaker(self, calling_domain: str, referer_domain: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
speaker_filename = \
acct_dir(base_dir, nickname, domain) + '/speaker.json'
if not is_a_file(speaker_filename):

View File

@ -35,6 +35,8 @@ def show_blog_page(self, authorized: bool,
nickname = path.split('/blog/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if '?' in nickname:
nickname = nickname.split('?')[0]
if '?page=' in path:

View File

@ -195,6 +195,8 @@ def get_featured_tags_collection(self, calling_domain: str,
nickname: str = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
account_dir: str = acct_dir(base_dir, nickname, domain)
post_context = get_individual_post_context()

View File

@ -119,6 +119,8 @@ def show_shares_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -318,6 +320,8 @@ def show_following_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -400,6 +404,8 @@ def show_following_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if nickname and not authorized and \
hide_follows.get(nickname):
following = {}
@ -522,6 +528,8 @@ def show_moved_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -721,6 +729,8 @@ def show_inactive_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -919,6 +929,8 @@ def show_followers_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -998,6 +1010,8 @@ def show_followers_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if nickname and not authorized and \
hide_follows.get(nickname):
followers = {}
@ -1046,6 +1060,8 @@ def show_featured_collections_feed(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not nickname:
return False

View File

@ -212,6 +212,8 @@ def hashtag_search2(self, calling_domain: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if '?' in nickname:
nickname = nickname.split('?')[0]
timezone = None

View File

@ -24,6 +24,8 @@ def edit_links2(self, calling_domain: str, path: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]

View File

@ -81,6 +81,8 @@ def newswire_vote(self, calling_domain: str, path: str,
urllib.parse.unquote_plus(origin_path_str.split('/users/')[1])
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
print('Newswire item date: ' + date_str)
if newswire.get(date_str):
if is_moderator(base_dir, nickname):
@ -142,6 +144,8 @@ def newswire_unvote(self, calling_domain: str, path: str,
urllib.parse.unquote_plus(origin_path_str.split('/users/')[1])
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if newswire.get(date_str):
if is_moderator(base_dir, nickname):
votes_index: int = 2
@ -195,6 +199,8 @@ def edit_newswire2(self, calling_domain: str, path: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]

View File

@ -1301,7 +1301,7 @@ def show_notify_post(self, authorized: bool,
post_id = post_id.replace('-', '/')
path = path.split('?notifypost=')[0]
nickname = path.split('/users/')[1]
if '/' in nickname:
if '/' in nickname or ':' in nickname:
return False
replies: bool = False
@ -1441,6 +1441,8 @@ def show_conversation_thread(self, authorized: bool,
nickname = nickname.split(conv_separator)[0]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
timezone = None
if account_timezone.get(nickname):
timezone = account_timezone.get(nickname)

View File

@ -107,6 +107,8 @@ def show_person_profile(self, authorized: bool,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]

View File

@ -37,6 +37,8 @@ def get_rss2feed(self, calling_domain: str, path: str,
nickname = path.split('/blog/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not nickname.startswith('rss.'):
account_dir = acct_dir(base_dir, nickname, domain)
if is_a_dir(account_dir):
@ -153,6 +155,8 @@ def get_rss3feed(self, calling_domain: str, path: str,
nickname = path.split('/blog/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not nickname.startswith('rss.'):
account_dir = acct_dir(base_dir, nickname, domain)
if is_a_dir(account_dir):

View File

@ -51,6 +51,8 @@ def show_vcard(self, base_dir: str, path: str, calling_domain: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if '?' in nickname:
nickname = nickname.split('?')[0]
if self.server.vcard_is_active:

View File

@ -886,6 +886,10 @@ def daemon_http_post(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not self.server.key_shortcuts.get(nickname):
access_keys = self.server.access_keys
@ -914,6 +918,10 @@ def daemon_http_post(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if not self.server.key_shortcuts.get(nickname):
access_keys = self.server.access_keys
@ -1061,6 +1069,8 @@ def daemon_http_post(self) -> None:
nickname = nickname.split('?')[0]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if calling_domain.endswith('.onion') and \
self.server.onion_domain:
@ -1110,6 +1120,9 @@ def daemon_http_post(self) -> None:
self.outbox_authenticated = True
path_users_section = self.path.split('/users/')[1]
self.post_to_nickname = path_users_section.split('/')[0]
if ':' in self.post_to_nickname:
self.post_to_nickname = \
self.post_to_nickname.split(':')[0]
if not self.outbox_authenticated:
self.send_response(405)
self.end_headers()
@ -1281,6 +1294,8 @@ def daemon_http_post(self) -> None:
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if nickname in self.server.block_military:
if self.server.block_military[nickname] is True and \
contains_military_domain(decoded_message_bytes):

View File

@ -121,7 +121,13 @@ def unfollow_confirm(self, calling_domain: str, cookie: str,
}
}
path_users_section = path.split('/users/')[1]
self.post_to_nickname = path_users_section.split('/')[0]
if '/' in path_users_section:
self.post_to_nickname = path_users_section.split('/')[0]
else:
self.post_to_nickname = path_users_section
if ':' in self.post_to_nickname:
self.post_to_nickname = \
self.post_to_nickname.split(':')[0]
group_account = has_group_type(base_dir, following_actor,
person_cache)
unfollow_account(base_dir, self.post_to_nickname,

View File

@ -38,6 +38,9 @@ def receive_image_attachment(self, length: int, path: str, base_dir: str,
self.server.postreq_busy = False
return
self.post_from_nickname = path_users_section.split('/')[0]
if ':' in self.post_from_nickname:
self.post_from_nickname = \
self.post_from_nickname.split(':')[0]
accounts_dir = acct_dir(base_dir, self.post_from_nickname, domain)
if not is_a_dir(accounts_dir):
http_404(self, 13)

View File

@ -213,6 +213,8 @@ def moderator_actions(self, path: str, calling_domain: str, cookie: str,
nickname = get_nickname_from_actor(nickname)
if '@' in nickname:
nickname = nickname.split('@')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if moderation_button == 'suspend':
suspend_account(base_dir, nickname, domain)
if moderation_button == 'unsuspend':

View File

@ -930,6 +930,8 @@ def _person_options_dm(self, options_confirm_params: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]
@ -1186,6 +1188,8 @@ def _person_options_report(self, options_confirm_params: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if key_shortcuts.get(nickname):
access_keys = key_shortcuts[nickname]

View File

@ -1861,6 +1861,8 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {},
nickname = nickname_str.split('/')[0]
else:
nickname = nickname_str
if ':' in nickname:
nickname = nickname.split(':')[0]
if debug:
print('DEBUG: POST nickname ' + str(nickname))
if not nickname:

View File

@ -785,6 +785,8 @@ def show_person_options(self, calling_domain: str, path: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if self.server.key_shortcuts.get(nickname):
access_keys = self.server.key_shortcuts[nickname]

View File

@ -484,6 +484,8 @@ def get_following_feed(base_dir: str, domain: str, port: int, path: str,
nickname = path.replace('/@', '', 1).replace('/' + follow_file, '')
if not nickname:
return None
if ':' in nickname:
nickname = nickname.split(':')[0]
if not valid_nickname(domain, nickname):
return None

View File

@ -1267,6 +1267,8 @@ def map_format_from_tagmaps_path(base_dir: str, path: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
return _hashtag_map_within_hours(base_dir, tag_name,
hours, map_format,
nickname, domain,

View File

@ -1915,7 +1915,7 @@ def get_actor_json(host_domain: str, handle: str, http: bool, gnunet: bool,
if '://' + domain + '/' not in original_handle:
return None, None
nickname = original_handle.split('://' + domain + '/')[1]
if '/' in nickname or '.' in nickname:
if '/' in nickname or '.' in nickname or ':' in nickname:
return None, None
else:
# format: @nick@domain

View File

@ -389,6 +389,8 @@ def get_ssml_box(base_dir: str, path: str,
nickname = path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
speaker_filename = \
acct_dir(base_dir, nickname, domain) + '/speaker.json'
if not is_a_file(speaker_filename):

View File

@ -605,7 +605,7 @@ def has_users_path(path_str: str) -> bool:
if '://' + domain + '/' not in path_str:
return False
nickname: str = path_str.split('://' + domain + '/')[1]
if '/' in nickname or '.' in nickname:
if '/' in nickname or '.' in nickname or ':' in nickname:
return False
return True
return False

View File

@ -208,6 +208,8 @@ def html_person_options(default_timeline: str,
nickname = origin_path_str.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if ':' in nickname:
nickname = nickname.split(':')[0]
if '?' in nickname:
nickname = nickname.split('?')[0]
# follower_domain, follower_port = get_domain_from_actor(options_actor)

View File

@ -305,6 +305,8 @@ def wellknown_protocol_handler(path: str, http_prefix: str,
if '/' in nickname:
command = nickname.split('/')[0]
nickname = nickname.split('/')[1]
if ':' in nickname:
nickname = nickname.split(':')[0]
domain_length = len(domain_full)
path_str = domain_and_path[domain_length:]
return http_prefix + '://' + domain_full + \