Deploy Ladill Transfer / deploy (push) Successful in 47s
Recipients always get the download link immediately when an email is set. Large files upload in the background with per-file and overall progress bars. Co-authored-by: Cursor <cursoragent@cursor.com>
39 lines
1.6 KiB
PHP
39 lines
1.6 KiB
PHP
<?php
|
|
|
|
return [
|
|
/*
|
|
| Service-to-service API keys (Bearer) for internal callers such as webmail.
|
|
*/
|
|
'service_api_keys' => array_filter([
|
|
'webmail' => env('TRANSFER_API_KEY_WEBMAIL'),
|
|
]),
|
|
|
|
// GHS per GB per month of retention (see qr-suite-decomposition.md §7.3).
|
|
'price_per_gb_month' => (float) env('TRANSFER_PRICE_PER_GB_MONTH', 0.30),
|
|
|
|
// Max single-file upload size (bytes). 0 = no limit (chunked uploads handle large files).
|
|
'max_file_bytes' => (int) env('TRANSFER_MAX_FILE_BYTES', 0),
|
|
|
|
// Bit-sized upload sessions (init → chunk → finalize), same pattern as hosting file manager.
|
|
'chunk_upload' => [
|
|
'path' => env('TRANSFER_CHUNK_UPLOAD_PATH', storage_path('app/chunked_uploads')),
|
|
'chunk_size_bytes' => (int) env('TRANSFER_CHUNK_SIZE_BYTES', 5 * 1024 * 1024),
|
|
],
|
|
|
|
// Max files per transfer.
|
|
'max_files_per_transfer' => (int) env('TRANSFER_MAX_FILES', 20),
|
|
|
|
// Monthly billing cycle length (days) — storage is renewed each period while the wallet can pay.
|
|
'billing_period_days' => (int) env('TRANSFER_BILLING_PERIOD_DAYS', 30),
|
|
|
|
// Days to keep files after a failed renewal before automatic deletion.
|
|
'grace_period_days' => (int) env('TRANSFER_GRACE_PERIOD_DAYS', 15),
|
|
|
|
// Owner emails when a transfer enters grace and before files are deleted.
|
|
'owner_grace_email_milestones' => ['grace_entered', '7', '3', '1'],
|
|
|
|
// Legacy env keys (billing is monthly until cancelled by non-payment + grace).
|
|
'default_retention_days' => (int) env('TRANSFER_DEFAULT_RETENTION_DAYS', 30),
|
|
'mail_retention_days' => (int) env('TRANSFER_MAIL_RETENTION_DAYS', 30),
|
|
];
|