Files
SkinbaseNova/config/uploads.php

136 lines
4.0 KiB
PHP

<?php
declare(strict_types=1);
return [
'storage_root' => env('SKINBASE_STORAGE_ROOT', storage_path('app/artworks')),
'local_originals_root' => env('ARTWORKS_LOCAL_ORIGINALS_ROOT', storage_path('app/originals/artworks')),
'object_storage' => [
'disk' => env('ARTWORKS_OBJECT_DISK', 's3'),
'prefix' => env('ARTWORKS_OBJECT_PREFIX', 'artworks'),
],
'paths' => [
'tmp' => 'tmp',
'quarantine' => 'quarantine',
'original' => 'original',
'xs' => 'xs',
'sm' => 'sm',
'md' => 'md',
'lg' => 'lg',
'xl' => 'xl',
'sq' => 'sq',
],
'max_size_mb' => 50,
'max_archive_size_mb' => 200,
'max_pixels' => 12000,
'allowed_mimes' => [
'image/jpeg',
'image/png',
'image/webp',
],
'allow_gif' => env('UPLOAD_ALLOW_GIF', false),
'allowed_archive_mimes' => [
'application/zip',
'application/x-zip-compressed',
'application/x-rar-compressed',
'application/vnd.rar',
'application/x-7z-compressed',
'application/x-tar',
'application/gzip',
'application/x-gzip',
'application/octet-stream',
],
'derivatives' => [
'xs' => ['max' => 320],
'sm' => ['max' => 680],
'md' => ['max' => 1024],
'lg' => ['max' => 1920],
'xl' => ['max' => 2560],
'sq' => ['size' => 512],
],
'square_thumbnails' => [
'width' => env('UPLOAD_SQ_WIDTH', 512),
'height' => env('UPLOAD_SQ_HEIGHT', 512),
'quality' => env('UPLOAD_SQ_QUALITY', 82),
'smart_crop' => env('UPLOAD_SQ_SMART_CROP', true),
'padding_ratio' => env('UPLOAD_SQ_PADDING_RATIO', 0.18),
'allow_upscale' => env('UPLOAD_SQ_ALLOW_UPSCALE', false),
'fallback_strategy' => env('UPLOAD_SQ_FALLBACK_STRATEGY', 'center'),
'log' => env('UPLOAD_SQ_LOG', false),
'preview_size' => env('UPLOAD_PREVIEW_SQ_SIZE', 320),
'subject_detector' => [
'preferred_labels' => [
'person',
'portrait',
'face',
'human',
'animal',
'lion',
'dog',
'cat',
'bird',
],
],
'saliency' => [
'sample_max_dimension' => env('UPLOAD_SQ_SALIENCY_SAMPLE_MAX', 96),
'min_total_energy' => env('UPLOAD_SQ_SALIENCY_MIN_TOTAL', 2400),
'window_ratios' => [0.55, 0.7, 0.82, 1.0],
],
],
'quality' => 85,
'queue_derivatives' => env('UPLOAD_QUEUE_DERIVATIVES', false),
'rate_limits' => [
'decay_minutes' => env('UPLOAD_RATE_DECAY_MINUTES', 1),
'init' => [
'per_user' => env('UPLOAD_RATE_INIT_USER', 10),
'per_ip' => env('UPLOAD_RATE_INIT_IP', 30),
],
'finish' => [
'per_user' => env('UPLOAD_RATE_FINISH_USER', 6),
'per_ip' => env('UPLOAD_RATE_FINISH_IP', 12),
],
'status' => [
'per_user' => env('UPLOAD_RATE_STATUS_USER', 60),
'per_ip' => env('UPLOAD_RATE_STATUS_IP', 120),
],
],
'quotas' => [
'max_active_sessions' => env('UPLOAD_MAX_ACTIVE_SESSIONS', 100),
'max_daily_sessions' => env('UPLOAD_MAX_DAILY_SESSIONS', 250),
],
'draft_quota' => [
'max_drafts_per_user' => env('SKINBASE_MAX_DRAFTS', 10),
'max_draft_storage_mb_per_user' => env('SKINBASE_MAX_DRAFT_STORAGE_MB', 1024),
'duplicate_hash_policy' => env('SKINBASE_DUPLICATE_HASH_POLICY', 'block'), // block|warn
],
'tokens' => [
'ttl_minutes' => env('UPLOAD_TOKEN_TTL_MINUTES', 60),
],
'chunk' => [
'max_bytes' => env('UPLOAD_CHUNK_MAX_BYTES', 5242880),
'lock_seconds' => env('UPLOAD_CHUNK_LOCK_SECONDS', 10),
'lock_wait_seconds' => env('UPLOAD_CHUNK_LOCK_WAIT_SECONDS', 5),
],
'scan' => [
'enabled' => env('UPLOAD_SCAN_ENABLED', false),
'command' => env('UPLOAD_SCAN_COMMAND', []),
],
];