back to home

dutchcoders / transfer.sh

Easy and fast file sharing from the command-line.

15,808 stars
1,590 forks
60 issues
GoNixShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing dutchcoders/transfer.sh in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/dutchcoders/transfer.sh)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

transfer.sh Easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance. Transfer.sh currently supports the s3 (Amazon S3), gdrive (Google Drive), storj (Storj) providers, and local file system (local). --- Disclaimer @stefanbenten happens to be a maintainer of this repository _and_ the person who host a well known public installation of the software in the repo. The two are anyway unrelated, and the repo is not the place to direct requests and issues for any of the pubblic installation. No third-party public installation of the software in the repo will be advertised or mentioned in the repo itself, for security reasons. The official position of me, @aspacca, as maintainer of the repo, is that if you want to use the software you should host your own installation. --- Usage This section outlines how to use transfer.sh Upload Encrypt & Upload Download & Decrypt Upload to Virustotal Deleting --- Request Headers This section explains how to handle request headers with curl: Max-Downloads Max-Days X-Encrypt-Password Beware, use this feature only on your self-hosted server: trusting a third-party service for server side encryption is at your own risk X-Decrypt-Password Beware, use this feature only on your self-hosted server: trusting a third-party service for server side encryption is at your own risk --- Response Headers This section explains how to handle response headers: X-Url-Delete The URL used to request the deletion of a file and returned as a response header: --- Examples See good usage examples on examples.md Link aliases Create direct download link: https://transfer.sh/1lDau/test.txt --> https://transfer.sh/get/1lDau/test.txt Inline file: https://transfer.sh/1lDau/test.txt --> https://transfer.sh/inline/1lDau/test.txt --- Usage Parameter | Description | Value | Env --- |-----------------------------------------------------------------------------------------------|-------------------------------|-------------------------------| listener | port to use for http (:80) | | LISTENER | profile-listener | port to use for profiler (:6060) | | PROFILE_LISTENER | force-https | redirect to https | false | FORCE_HTTPS | tls-listener | port to use for https (:443) | | TLS_LISTENER | tls-listener-only | flag to enable tls listener only | | TLS_LISTENER_ONLY | tls-cert-file | path to tls certificate | | TLS_CERT_FILE | tls-private-key | path to tls private key | | TLS_PRIVATE_KEY | http-auth-user | user for basic http auth on upload | | HTTP_AUTH_USER | http-auth-pass | pass for basic http auth on upload | | HTTP_AUTH_PASS | http-auth-htpasswd | htpasswd file path for basic http auth on upload | | HTTP_AUTH_HTPASSWD | http-auth-ip-whitelist | comma separated list of allowed ips to upload without auth challenge | | HTTP_AUTH_IP_WHITELIST | virustotal-key | VirusTotal API key | | VIRUSTOTAL_KEY | ip-whitelist | comma separated list of ips allowed to connect to the service | | IP_WHITELIST | ip-blacklist | comma separated list of ips not allowed to connect to the service | | IP_BLACKLIST | temp-path | path to temp folder | system temp | TEMP_PATH | web-path | path to static web files (for development or custom front end) | | WEB_PATH | proxy-path | path prefix when service is run behind a proxy (a prefix will be trimmed) | | PROXY_PATH | proxy-port | port of the proxy when the service is run behind a proxy | | PROXY_PORT | email-contact | email contact for the front end | | EMAIL_CONTACT | ga-key | google analytics key for the front end | | GA_KEY | provider | which storage provider to use | (s3, storj, gdrive or local) | | uservoice-key | user voice key for the front end | | USERVOICE_KEY | aws-access-key | aws access key | | AWS_ACCESS_KEY | aws-secret-key | aws access key | | AWS_SECRET_KEY | bucket | aws bucket | | BUCKET | s3-endpoint | Custom S3 endpoint. | | S3_ENDPOINT | s3-region | region of the s3 bucket | eu-west-1 | S3_REGION | s3-no-multipart | disables s3 multipart upload | false | S3_NO_MULTIPART | s3-path-style | Forces path style URLs, required for Minio. | false | S3_PATH_STYLE | storj-access | Access for the project | | STORJ_ACCESS | storj-bucket | Bucket to use within the project | | STORJ_BUCKET | basedir | path storage for local/gdrive provider | | BASEDIR | gdrive-client-json-filepath | path to oauth client json config for gdrive provider | | GDRIVE_CLIENT_JSON_FILEPATH | gdrive-local-config-path | path to store local transfer.sh config cache for gdrive provider | | GDRIVE_LOCAL_CONFIG_PATH | gdrive-chunk-size | chunk size for gdrive upload in megabytes, must be lower than available memory (8 MB) | | GDRIVE_CHUNK_SIZE | lets-encrypt-hosts | hosts to use for lets encrypt certificates (comma separated) | | HOSTS | log | path to log file | | LOG | cors-domains | comma separated list of domains for CORS, setting it enable CORS | | CORS_DOMAINS | clamav-host | host for clamav feature | | CLAMAV_HOST | perform-clamav-prescan | prescan every upload using clamav (clamav-host must be local clamd unix socket) | | PERFORM_CLAMAV_PRESCAN | rate-limit | request per minute | | RATE_LIMIT | max-upload-size | max upload size in kilobytes | | MAX_UPLOAD_SIZE | purge-days | number of days after the uploads are purged automatically | | PURGE_DAYS | purge-interval | interval (hours) to run automatic purge for (excluding S3 and Storj) | | PURGE_INTERVAL | random-token-length | length of random token for upload path (double the size for delete path) | 6 | RANDOM_TOKEN_LENGTH | If you want to use TLS using lets encrypt certificates, set lets-encrypt-hosts to your domain, set tls-listener to :443 and enable force-https. If you want to use TLS using your own certificates, set tls-listener to :443, force-https, tls-cert-file and tls-private-key. --- Development Switched to GO111MODULE --- Build --- Docker For easy deployment, we've created an official Docker container. There are…