Documentation

Installation and usage guide for rawuploader (tcpraw).

Requirements

No special requirements to run the client or server — use the pre-built binaries from GitHub. Go 1.21+ is only needed if you want to build the project from source yourself.

Install — Linux

curl -sSL https://raw.githubusercontent.com/hdmain/rawuploader/main/install.sh | bash

Install — Windows

In PowerShell (run as Administrator):

irm https://raw.githubusercontent.com/hdmain/rawuploader/main/install-win.ps1 | iex

Send (upload)

tcpraw send <file>

Uploads the file, encrypts it with a new 6-digit code, and prints the code. Server is chosen from the address list (first digit of code = server id).

Secure send (upload with your own key)

tcpraw secure send <file>

Encrypts the file with a 256-bit key (generated by the client). The server assigns the 6-digit code and stores data encrypted; it never sees the key. After upload you get the code and the key (64 hex chars) — without the key the file cannot be decrypted. For files >500 MB data is streamed (no more than ~500 MB in RAM).

Get (download)

tcpraw get <6-digit-code> [-o file]

Downloads the file for the given code. For regular “send” uploads decryption uses the code. For “secure send” the program will prompt for the key (64 hex chars). Use -o file to set the output filename.

Server

tcpraw server -port=9999 -dir=./data

Runs the TCP server. Options:

With web download page (browser, no client):

tcpraw server -port=9999 -dir=./data -web=8080

Then open http://SERVER:8080 in your browser and enter the 6-digit code to download. Web download works only for regular “send” uploads; “secure send” files require the client and the key.

Other

Running tcpraw with no arguments or an unknown command shows total free space across all servers from the list.

Configuration (main.go)

Edit the variables at the top of main.go to change defaults. Server list is in client.go (first digit of code = server id).

VariableDefaultDescription
(server list)in client.goServer addresses; first digit of code = id
StorageDuration30 * time.MinuteHow long blobs are kept
CleanupInterval5 * time.MinuteHow often expired blobs are removed
MaxBlobSize15 GBMax size per upload (bytes)
RateLimitAttempts50Max code checks per IP per window
RateLimitWindow10 * time.MinuteRate limit window
BanDuration15 * time.MinuteBan duration when limit exceeded