A secure private file host program. Bandwidth & request rate limiting, file sanitizing, good on resources, ShareX compatibility, and more.
Go to file
vysion 07e7eea2cf Changed mebibyte constant to correctly represent 1 mib 2021-09-10 16:40:01 -07:00
api Reworked project structure 2021-09-08 16:37:19 -07:00
conf Reworked project structure 2021-09-08 16:37:19 -07:00
example gofmt, use embed for favicon, remove public mode 2021-07-07 18:15:37 -07:00
global Reworked project structure 2021-09-08 16:37:19 -07:00
middleware Reworked project structure 2021-09-08 16:37:19 -07:00
response Reworked project structure 2021-09-08 16:37:19 -07:00
routes Reworked project structure 2021-09-08 16:37:19 -07:00
security Reworked project structure 2021-09-08 16:37:19 -07:00
utils Reworked project structure 2021-09-08 16:37:19 -07:00
.gitignore Reworked project structure 2021-09-08 16:37:19 -07:00
Dockerfile Reworked project structure 2021-09-08 16:37:19 -07:00
LICENSE forwarded ip changed to CF-Connecting-IP 2021-06-15 15:18:57 -07:00
README.md Reworked project structure 2021-09-08 16:37:19 -07:00
go.mod Reworked project structure 2021-09-08 16:37:19 -07:00
go.sum Reworked project structure 2021-09-08 16:37:19 -07:00
init.go Changed mebibyte constant to correctly represent 1 mib 2021-09-10 16:40:01 -07:00
main.go Fixed bug with nil global.RedisClient 2021-09-08 16:59:06 -07:00

README.md

Tytanium

A simple file host server, intended for personal or small group use.

Features

  • Configure and tune the server to how you want with extensive customization
  • Built with fasthttp for performance and built-in anti-DoS features
  • Whitelist/blacklist file types, and check them based on the file header, not the extension
  • Sanitize files to prevent against phishing attacks (Change their Content-Type to text/plain)
  • Public/private mode (private by default) (private only)
  • Zero-width file IDs in URLs - paste invisible but functional links!
  • File ID collision checking
  • Not written in Javascript!

Setup

  • Download the binary or build this program
  • Rename example.yml to config.yml and set the values you want
  • Optional: Replace routes/favicon.ico with your own favicon
  • Start the binary
  • Done
  • Optional: You can use the Size Checker program to make the /stats path produce values other than 0 for file count and total size used. Just tell it to check your files directory. You can run it as a cron job or run it manually whenever you want to update it. (If you choose not to use it, /stats will always return 0 for every field.)

How to Upload

Create a POST request to /upload with a file in the field "file". Put the key in the Authorization header.

Set ?omitdomain=1, if you don't want the host's original domain appended before the file name in the response. For example: a.png instead of https://a.com/a.png

Add ?zerowidth=1 and set it to 1 to make your image URLs appear "zero-width". If you don't get what that means, try it, and see what happens.