diff --git a/src/auth.py b/src/auth.py index 9e5cd7e58..2f92422af 100644 --- a/src/auth.py +++ b/src/auth.py @@ -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: diff --git a/src/collections.py b/src/collections.py index d9e836978..29a7ee385 100644 --- a/src/collections.py +++ b/src/collections.py @@ -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 diff --git a/src/content.py b/src/content.py index 9aa15d998..bdf072789 100644 --- a/src/content.py +++ b/src/content.py @@ -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: diff --git a/src/crawlers.py b/src/crawlers.py index 9146d4595..a73faa629 100644 --- a/src/crawlers.py +++ b/src/crawlers.py @@ -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 diff --git a/src/daemon.py b/src/daemon.py index 6671996eb..1976ecfa1 100644 --- a/src/daemon.py +++ b/src/daemon.py @@ -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) diff --git a/src/daemon_get.py b/src/daemon_get.py index 1ce0948d7..8e8aca043 100644 --- a/src/daemon_get.py +++ b/src/daemon_get.py @@ -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): diff --git a/src/daemon_get_blog.py b/src/daemon_get_blog.py index 0acce39c5..3759637c7 100644 --- a/src/daemon_get_blog.py +++ b/src/daemon_get_blog.py @@ -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: diff --git a/src/daemon_get_collections.py b/src/daemon_get_collections.py index 0ea55f47c..9eccbc045 100644 --- a/src/daemon_get_collections.py +++ b/src/daemon_get_collections.py @@ -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() diff --git a/src/daemon_get_feeds.py b/src/daemon_get_feeds.py index 17b6a3c7f..46323299f 100644 --- a/src/daemon_get_feeds.py +++ b/src/daemon_get_feeds.py @@ -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 diff --git a/src/daemon_get_hashtag.py b/src/daemon_get_hashtag.py index 64eec5165..583d5fd61 100644 --- a/src/daemon_get_hashtag.py +++ b/src/daemon_get_hashtag.py @@ -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 diff --git a/src/daemon_get_links.py b/src/daemon_get_links.py index 2913d04dc..bb7065740 100644 --- a/src/daemon_get_links.py +++ b/src/daemon_get_links.py @@ -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] diff --git a/src/daemon_get_newswire.py b/src/daemon_get_newswire.py index 7767acbaf..0a2bdde19 100644 --- a/src/daemon_get_newswire.py +++ b/src/daemon_get_newswire.py @@ -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] diff --git a/src/daemon_get_post.py b/src/daemon_get_post.py index dd3a8998f..631f49daf 100644 --- a/src/daemon_get_post.py +++ b/src/daemon_get_post.py @@ -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) diff --git a/src/daemon_get_profile.py b/src/daemon_get_profile.py index a2fd158bf..44ef99661 100644 --- a/src/daemon_get_profile.py +++ b/src/daemon_get_profile.py @@ -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] diff --git a/src/daemon_get_rss.py b/src/daemon_get_rss.py index 7bbd27f5e..5afc213ff 100644 --- a/src/daemon_get_rss.py +++ b/src/daemon_get_rss.py @@ -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): diff --git a/src/daemon_get_vcard.py b/src/daemon_get_vcard.py index 0fdf92774..d859d49a6 100644 --- a/src/daemon_get_vcard.py +++ b/src/daemon_get_vcard.py @@ -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: diff --git a/src/daemon_post.py b/src/daemon_post.py index ca2e4008c..adcd54bcd 100644 --- a/src/daemon_post.py +++ b/src/daemon_post.py @@ -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): diff --git a/src/daemon_post_confirm.py b/src/daemon_post_confirm.py index 6760537c6..ff6515f30 100644 --- a/src/daemon_post_confirm.py +++ b/src/daemon_post_confirm.py @@ -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, diff --git a/src/daemon_post_image.py b/src/daemon_post_image.py index 4c81ee8c8..2b62d32a4 100644 --- a/src/daemon_post_image.py +++ b/src/daemon_post_image.py @@ -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) diff --git a/src/daemon_post_moderator.py b/src/daemon_post_moderator.py index 48fc651a1..9415261c2 100644 --- a/src/daemon_post_moderator.py +++ b/src/daemon_post_moderator.py @@ -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': diff --git a/src/daemon_post_person_options.py b/src/daemon_post_person_options.py index 6d48cdcdc..f0bd5f387 100644 --- a/src/daemon_post_person_options.py +++ b/src/daemon_post_person_options.py @@ -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] diff --git a/src/daemon_post_receive.py b/src/daemon_post_receive.py index 7f36b926d..26ccc4f49 100644 --- a/src/daemon_post_receive.py +++ b/src/daemon_post_receive.py @@ -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: diff --git a/src/daemon_utils.py b/src/daemon_utils.py index bf72e289c..8600e326f 100644 --- a/src/daemon_utils.py +++ b/src/daemon_utils.py @@ -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] diff --git a/src/follow.py b/src/follow.py index 43c3237d1..f6258b4a7 100644 --- a/src/follow.py +++ b/src/follow.py @@ -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 diff --git a/src/maps.py b/src/maps.py index 40d8a29a3..b7c6a9ab7 100644 --- a/src/maps.py +++ b/src/maps.py @@ -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, diff --git a/src/person.py b/src/person.py index 46f15572a..04564f83f 100644 --- a/src/person.py +++ b/src/person.py @@ -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 diff --git a/src/speaker.py b/src/speaker.py index 432703b0b..ee7faaf05 100644 --- a/src/speaker.py +++ b/src/speaker.py @@ -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): diff --git a/src/utils.py b/src/utils.py index a7b994331..62b6ad04b 100644 --- a/src/utils.py +++ b/src/utils.py @@ -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 diff --git a/src/webapp_person_options.py b/src/webapp_person_options.py index 581834c7f..1dbb43162 100644 --- a/src/webapp_person_options.py +++ b/src/webapp_person_options.py @@ -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) diff --git a/src/webfinger.py b/src/webfinger.py index 4f5b71633..1e9d62b18 100644 --- a/src/webfinger.py +++ b/src/webfinger.py @@ -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 + \