Another bad path

main
bashrc 2026-07-20 10:47:35 +01:00
parent ae48077a1b
commit 87fc41852d
2 changed files with 47 additions and 3 deletions

View File

@ -16,6 +16,7 @@ from src.status import get_status_number
from src.utils import get_attributed_to from src.utils import get_attributed_to
from src.utils import get_user_paths from src.utils import get_user_paths
from src.utils import text_in_file from src.utils import text_in_file
from src.utils import has_object_string
from src.utils import has_object_string_object from src.utils import has_object_string_object
from src.utils import has_users_path from src.utils import has_users_path
from src.utils import get_full_domain from src.utils import get_full_domain
@ -268,6 +269,38 @@ def _reject_quote_request(message_json: {}, domain_full: str,
return False return False
def _accept_feature_authorization(base_dir: str, message_json: {},
debug: bool,
curr_domain: str,
onion_domain: str, i2p_domain: str,
yggdrasil_domain: str) -> None:
""" Receiving an ActivityPub FeatureAuthorization Accept/Reject activity
https://codeberg.org/fediverse/fep/src/branch/main/fep/7aa9/fep-7aa9.md
Your request to feature an actor or hashtag was accepted
"""
if not has_object_string(message_json, debug):
return
if not message_json.get('result'):
return
if not message_json.get('actor'):
return
if not message_json.get('to'):
return
if not message_json.get('object'):
return
if not isinstance(message_json['result'], str):
return
if not isinstance(message_json['object'], str):
return
if not isinstance(message_json['actor'], str):
return
actor = message_json['actor']
if message_json['type'] == 'Reject':
account_dir = acct_dir(base_dir, nickname, curr_domain)
stamp_filename = account_dir + '/stamps/' + stamp_number
def _accept_follow(base_dir: str, message_json: {}, def _accept_follow(base_dir: str, message_json: {},
federation_list: [], debug: bool, federation_list: [], debug: bool,
curr_domain: str, curr_domain: str,
@ -432,6 +465,16 @@ def receive_accept_reject(base_dir: str, domain: str, message_json: {},
print('DEBUG: ' + message_json['type'] + print('DEBUG: ' + message_json['type'] +
' does not contain a nickname. ' + ' does not contain a nickname. ' +
'Assuming single user instance.') 'Assuming single user instance.')
# is this a FeatureAccept?
if message_json.get('result'):
_accept_feature_authorization(base_dir, message_json, debug,
curr_domain, onion_domain,
i2p_domain, yggdrasil_domain)
if debug:
print('DEBUG: FeatureRequest ' + message_json['type'] +
' received')
return True
# receive follow accept # receive follow accept
_accept_follow(base_dir, message_json, federation_list, debug, _accept_follow(base_dir, message_json, federation_list, debug,
curr_domain, onion_domain, i2p_domain, yggdrasil_domain) curr_domain, onion_domain, i2p_domain, yggdrasil_domain)

View File

@ -4085,9 +4085,10 @@ def check_bad_path(path: str, allow_local_network_access: bool):
path_lower: str = path.lower() path_lower: str = path.lower()
bad_strings: list[str] = [ bad_strings: list[str] = [
'..', '/.', '%2e%2e', '%252e%252e', '/sftp.', '/sftp-', '/statistics', '..', '/.', '/_', '%2e%2e', '%252e%252e', '/sftp.', '/sftp-',
'/config/', 'settings.', 'credentials', '/packs/', '/backend/', '/statistics', '/config/', 'settings.', 'credentials',
'/apis/', '/laravel/', '/js/', '/root/', '/webmail/', '/mail/' '/packs/', '/backend/', '/apis/', '/laravel/', '/js/',
'/root/', '/webmail/', '/mail/'
] ]
# allow /.well-known/... # allow /.well-known/...