- Virtual-hosted bucket detection from Host header (extractS3BucketFromHost) - S3 CORS headers + OPTIONS preflight + x-amz-id-2/HostId everywhere - Presigned GET/PUT/HEAD/DELETE via centralized auth (no GET-only restriction) - ListMultipartUploads with DB/xml helpers - UploadPart partNumber range validation (1-10000) - CompleteMultipartUpload ETag matching and ascending order validation - DeleteObjects quiet mode support - CopyObject URL-decode and conditional if-match/if-none-match - encoding-type=url support in ListObjects V1/V2 XML - Safe range-based prefix matching (replaces SQL LIKE) - STREAMING-AWS4-HMAC-SHA256-PAYLOAD → 501 NotImplemented - Traefik wildcard HostRegex for virtual-hosted style - S3_VHOST_DOMAINS config env var
17 lines
663 B
Bash
17 lines
663 B
Bash
BOT_TOKEN=isi_token_bot_telegram
|
|
ADDITIONAL_BOT_TOKENS=token_cadangan_1,token_cadangan_2,token_cadangan_3
|
|
STORAGE_CHANNEL_ID=-1001234567890
|
|
BASE_URL=https://tele.asepharyana.my.id
|
|
DATABASE_URL=postgresql://user:password@localhost:5432/telegram_uploader
|
|
PORT=3000
|
|
NODE_ENV=production
|
|
LOG_LEVEL=info
|
|
RATE_LIMIT_WINDOW_MS=60000
|
|
RATE_LIMIT_MAX_REQUESTS=30
|
|
# TRUST_PROXY=true # Uncomment when behind reverse proxy (Traefik, Nginx) for correct client IP detection
|
|
|
|
# S3-compatible API credentials
|
|
# S3_ACCESS_KEY=teleuploader-admin
|
|
# S3_SECRET_KEY=your-secret-key-here
|
|
# S3_DEFAULT_REGION=us-east-1
|
|
# S3_VHOST_DOMAINS=upload.asepharyana.my.id,upload.asepharyana.web.id |