3333)
3434from aleph .services .cost import get_total_and_detailed_costs
3535from aleph .storage import StorageService
36- from aleph .toolkit .constants import (
37- MAX_FILE_SIZE ,
38- MAX_UNAUTHENTICATED_UPLOAD_FILE_SIZE ,
39- MiB ,
40- )
36+ from aleph .toolkit .constants import MiB
4137from aleph .types .db_session import DbSession , DbSessionFactory
4238from aleph .types .files import FileTag , FileType
4339from aleph .types .message_status import InvalidSignature
@@ -155,10 +151,12 @@ async def _verify_message_signature(
155151
156152
157153def _verify_user_balance (
158- session : DbSession , content : CostEstimationStoreContent
154+ session : DbSession ,
155+ content : CostEstimationStoreContent ,
156+ max_unauthenticated_upload_file_size : int ,
159157) -> None :
160158 if content .estimated_size_mib and content .estimated_size_mib > (
161- MAX_UNAUTHENTICATED_UPLOAD_FILE_SIZE / MiB
159+ max_unauthenticated_upload_file_size / MiB
162160 ):
163161 current_balance = get_total_balance (session = session , address = content .address )
164162 current_cost = get_total_cost_for_address (
@@ -271,6 +269,7 @@ async def _check_and_add_file(
271269 message : Optional [PendingStoreMessage ],
272270 uploaded_file : UploadedFile ,
273271 grace_period : int ,
272+ max_unauthenticated_upload_file_size : int ,
274273) -> str :
275274 file_hash = uploaded_file .get_hash ()
276275 # Perform authentication and balance checks
@@ -297,7 +296,11 @@ async def _check_and_add_file(
297296 )
298297
299298 with session_factory () as session :
300- _verify_user_balance (session = session , content = message_content )
299+ _verify_user_balance (
300+ session = session ,
301+ content = message_content ,
302+ max_unauthenticated_upload_file_size = max_unauthenticated_upload_file_size ,
303+ )
301304 else :
302305 message_content = None
303306
@@ -394,6 +397,10 @@ async def storage_add_file(request: web.Request):
394397 signature_verifier = get_signature_verifier_from_request (request )
395398 config = get_config_from_request (request )
396399 grace_period = config .storage .grace_period .value
400+ max_file_size = config .storage .max_file_size .value
401+ max_unauthenticated_upload_file_size = (
402+ config .storage .max_unauthenticated_upload_file_size .value
403+ )
397404 metadata = None
398405 uploaded_file : Optional [UploadedFile ] = None
399406
@@ -409,13 +416,13 @@ async def storage_add_file(request: web.Request):
409416 raise web .HTTPBadRequest (text = "Invalid multipart structure" )
410417
411418 if part .name == "file" :
412- uploaded_file = MultipartUploadedFile (part , MAX_FILE_SIZE )
419+ uploaded_file = MultipartUploadedFile (part , max_file_size )
413420 await uploaded_file .read_and_validate ()
414421 elif part .name == "metadata" :
415422 metadata = await part .read (decode = True )
416423 else :
417424 uploaded_file = RawUploadedFile (
418- request = request , max_size = MAX_UNAUTHENTICATED_UPLOAD_FILE_SIZE
425+ request = request , max_size = max_unauthenticated_upload_file_size
419426 )
420427 await uploaded_file .read_and_validate ()
421428
@@ -425,7 +432,7 @@ async def storage_add_file(request: web.Request):
425432 )
426433
427434 max_upload_size = (
428- MAX_UNAUTHENTICATED_UPLOAD_FILE_SIZE if not metadata else MAX_FILE_SIZE
435+ max_unauthenticated_upload_file_size if not metadata else max_file_size
429436 )
430437 if uploaded_file .size > max_upload_size :
431438 raise web .HTTPRequestEntityTooLarge (
@@ -460,6 +467,7 @@ async def storage_add_file(request: web.Request):
460467 message = message ,
461468 uploaded_file = uploaded_file ,
462469 grace_period = grace_period ,
470+ max_unauthenticated_upload_file_size = max_unauthenticated_upload_file_size ,
463471 )
464472 if message :
465473 broadcast_status = await broadcast_and_process_message (
@@ -475,7 +483,9 @@ async def storage_add_file(request: web.Request):
475483 await uploaded_file .cleanup ()
476484
477485
478- def assert_file_is_downloadable (session : DbSession , file_hash : str ) -> None :
486+ def assert_file_is_downloadable (
487+ session : DbSession , file_hash : str , max_file_size : int
488+ ) -> None :
479489 """
480490 Check if the file is on the aleph.im network and can be downloaded from the API.
481491 This filters out requests for files outside the network / nonexistent files.
@@ -484,9 +494,9 @@ def assert_file_is_downloadable(session: DbSession, file_hash: str) -> None:
484494 if not file_metadata :
485495 raise web .HTTPNotFound (text = "Not found" )
486496
487- if file_metadata .size > MAX_FILE_SIZE :
497+ if file_metadata .size > max_file_size :
488498 raise web .HTTPRequestEntityTooLarge (
489- max_size = MAX_FILE_SIZE , actual_size = file_metadata .size
499+ max_size = max_file_size , actual_size = file_metadata .size
490500 )
491501
492502
@@ -529,9 +539,14 @@ async def get_hash(request):
529539 logger .warning (e .args [0 ])
530540 raise web .HTTPBadRequest (text = "Invalid hash provided" )
531541
542+ config = get_config_from_request (request )
543+ max_file_size = config .storage .max_file_size .value
544+
532545 session_factory = get_session_factory_from_request (request )
533546 with session_factory () as session :
534- assert_file_is_downloadable (session = session , file_hash = file_hash )
547+ assert_file_is_downloadable (
548+ session = session , file_hash = file_hash , max_file_size = max_file_size
549+ )
535550
536551 storage_service = get_storage_service_from_request (request )
537552
0 commit comments