Gomf usage ========== Requirements ------------ - Go1.6 or newer: https://golang.org/dl/ - libmagic (on Debian/Ubuntu, `aptitude install libmagic-dev`) Installation ------------ - `go install git.clsr.net/gomf/gomf@latest` - Go to a directory where you want to have the website files and `git clone https://git.clsr.net/gomf/gomf-web` Running ------- - Go to the directory with gomf-web - Run `gomf` Optional options for `gomf`: --http HOST:PORT serves HTTP on HOST:PORT example: --http example.com:80 --https HOST:PORT serves HTTPS on HOST:PORT needs --cert and --key example: --https example.com:443 --cert ssl/cert.pem --key ssl/cert.key --cert PATH uses PATH as the TLS certificate for HTTPS --key PATH uses PATH as the TLS certificate key for HTTPS --redirect-https redirect HTTP request to HTTPS example: --redirect-https --hsts enables the HSTS header example: --hsts --name NAME sets website name to NAME example: --name Example --id-charset CHARSET sets the charset for file IDs in URLs to CHARSET; should only include URL-safe characters and no slashes example: --id-charset 0123456789 --id-length LENGTH sets the length of file IDs in the URLs to LENGTH example: --id-length 5 --max-size BYTES sets BYTES as the upload file size limit in bytes example (10 MiB): --max-size 10485760 equivalent bash example: --max-size $((1024 * 1024 * 10)) --filter-ext EXTS filter file extensions contained in the comma-separated list EXTS forbids extensions by default, unless --whitelist is in effect example: --filter-ext exe,dll,scr --filter-mime TYPES filter MIME types contained in the comma-separated list TYPES forbids types by default, unless --whitelist is in effect example: --filters-mime application/x-dosexec --whitelist treat file extension and MIME type filters as whitelists instead of blacklists forbids any upload whose type or extension is not on at least one of the filters example: --whitelist --filter-ext png,jpg,gif --filter-mime= --contact EMAIL sets the contact email address to EMAIL example: --contact contact@example.com --abuse EMAIL sets the abuse email address to EMAIL example: --abuse abuse@example.com --upload-host HOSTS all request to hosts in the comma-separated list HOSTS will serve files directly ($host/$file, while other hosts serve them on $host/u/$file) example: --upload-host u.example.com --upload-url URL uses URL as the prefix for address of uploaded files if missing, uses --upload-host, --https or --http to construct the URL example: --upload-url http://u.example.com/ --csp CSP sets the Content-Security-Header to CSP; blank to disable the header example: --csp= --allow-html serve text/html and application/xhtml+xml files with their original filetype instead of text/plain example: --allow-html --cors sets the Access-Control-Allow-Origin header to * to allow CORS from any origin example: --cors --grill enables grills example: --grill --log enables logging of uploads example: --log --log-hash-salt 'somerandomsaltstringhere' --log-ip-hash --log-ua --log-referer --proxy-count 1 --log-hash-salt SALT salt to use for hashed log entries if missing, no salt is used when hashing --log-ip enables logging of uploaders' IP addresses --log-ip-hash enables logging of hashes of uploaders' IP addresses used for privacy in order to avoid logging raw IP addresses while permitting comparison with other hashed entries --log-ua enables logging of uploaders' User-Agent headers --log-ua-hash enables logging of hashes of uploaders' User-Agent headers used for privacy in order to avoid logging raw user-agents while permitting comparison with other hashed entries --log-referer enables logging of uploaders' Referer headers --log-referer-hash enables logging of hashes of uploaders' Referer headers used for privacy in order to avoid logging raw referers while permitting comparison with other hashed entries --proxy-count COUNT the count of trusted reverse proxies (e.g. nginx) for logging IP addresses when set to a positive number N, takes the N-th most recent entry in X-Forwarded-For as the uploader's IP address for logging