La implementación preserva el token por correo de un solo uso existente para iniciar la descarga, mientras permite que las copias de seguridad locales creen una autorización de reanudación separada y acotada, limitada a:
el mismo administrador autenticado;
la misma copia de seguridad;
el mismo valor de token original; y
una solicitud posterior que incluya una cabecera Range.
Una segunda solicitud GET completa ordinaria que utilice el token ya consumido sigue siendo rechazada, al igual que una solicitud Range para otra copia de seguridad. Las copias de seguridad remotas/S3 conservan su comportamiento existente.
He convertido el período de reanudación en un enum en lugar de una duración ilimitada:
Disabled (Desactivado)
1 hour (1 hora)
6 hours (recommended) (6 horas (recomendado))
12 hours (12 horas)
Until the original email token expires (Hasta que expire el token de correo original)
El período de reanudación efectivo también se limita a la vida útil restante del token de correo original cuando comienza la descarga inicial.
El comportamiento actual de Discourse sigue siendo el predeterminado (Disabled) por compatibilidad con versiones anteriores, mientras que 6 hours se presenta como la opción recomendada cuando las descargas reanudables están habilitadas.
El PR consulta si a los mantenedores les gustaría conservar ese valor predeterminado que preserva la compatibilidad, o hacer que el valor reanudable recomendado sea el predeterminado como parte de la corrección de este problema.
También he añadido cobertura de regresión para el camino de reanudación exitoso y las principales fronteras de autorización, incluyendo:
que la reutilización ordinaria del token siga siendo rechazada;
que la reanudación entre copias de seguridad siga siendo rechazada;
que desactivar la configuración impida inmediatamente cualquier reanudación posterior;
que S3 no reciba una concesión de reanudación local; y
que la descarga inicial y su reanudación generen solo una entrada de auditoría de descarga de copia de seguridad.
La suite completa de CI está pasando y el PR está listo para revisión.
Se agradecerían comentarios sobre el modelo de seguridad, y en particular sobre la recomendación de 6 horas y la configuración predeterminada.