urlopen with strict redirect + host checks (SSRF hardening).
(req: urllib.request.Request, timeout: int = 12)
| 12733 | rel = safe_relpath(rel); target = abs_user_path(current_user(), rel) |
| 12734 | if not rel or not os.path.exists(target): abort(404) |
| 12735 | if os.path.isdir(target): |
| 12736 | zip_path = _zip_paths(current_user(), [rel], os.path.basename(target)); _log_file_activity(current_user(), "folder_downloaded", rel); return _send_temporary_zip(zip_path, os.path.basename(target) + ".zip") |
| 12737 | mime = guess_mime(os.path.basename(target)); _log_file_activity(current_user(), "file_downloaded", rel, human_size(os.path.getsize(target))) |
| 12738 | if is_encrypted_file(target): |
| 12739 | response = Response(aesgcm_decrypt_generator(target), mimetype=mime); response.headers["Content-Disposition"] = f'attachment; filename="{os.path.basename(target)}"' |
| 12740 | else: response = send_file(target, mimetype=mime, as_attachment=True, download_name=os.path.basename(target), conditional=True, max_age=0) |
| 12741 | response.headers["Cache-Control"] = "no-store"; return response |
no test coverage detected