# datatrash A file and text uploading service with configurable time limit ![Application screenshot](./screenshot.png) ## running For running on docker, use the provided `docker-compose.yml.sample` and adapt it to your needs. To run the software directly, use the compiling instructions below. ## config - The `static` files directory needs to be next to the binary. - The `static` directory – sadly – needs to be writable - On startup the `index.html` will be generated based on the config - The maximum filename length is 255 ### General configuration | environment variable | default value | description | | ---------------------------- | -------------- | ---------------------------------------------- | | STATIC_DIR | ./static | directory to generate "static" files into | | FILES_DIR | ./files | directory to save uploaded files into | | UPLOAD_MAX_BYTES | 8388608 (8MiB) | maximum size for uploaded files | | BIND_ADDRESS | 0.0.0.0:8000 | address to bind the server to | | RATE_LIMIT | true | whether download rate should be limited | | RATE_LIMIT_PROXIED | false | whether rate limit should read x-forwarded-for | | RATE_LIMIT_REPLENISH_SECONDS | 60 | seconds to wait between requests | | RATE_LIMIT_BURST | 480 | allowed request burst | ### Database configuration | environment variable | default value | | -------------------- | ------------- | | DATABASE_URL | | | DATABASE_USER | | | DATABASE_PASS | | | DATABASE_HOST | localhost | | DATABASE_NAME | datatrash | ### No auth limits configuration Require authentication for certain uploads - The password is provided as plain text - Uploads with longer validity than NO_AUTH_MAX_TIME require authentication - Uploads larger than NO_AUTH_LARGE_FILE_SIZE require auth when they are valid for longer than NO_AUTH_LARGE_FILE_MAX_TIME - All times are in seconds, the size is in bytes | environment variable | default value | | --------------------------- | ------------- | | AUTH_PASSWORD | | | NO_AUTH_MAX_TIME | | | NO_AUTH_LARGE_FILE_MAX_TIME | | | NO_AUTH_LARGE_FILE_SIZE | | ## compiling ```sh cargo build --release ``` or ```sh docker build -t datatrash . docker cp datatrash:/home/rust/.cargo/bin/datatrash datatrash ```