Go to file
Gunwant Jain db08f5c8a9 pretty.html: refactor
Make actual use of the Tera templating, when youre intending to use it.

Signed-off-by: Gunwant Jain <mail@wantguns.dev>
2021-01-06 05:14:12 +05:30
src pretty.html: fetch stylesheet only if the var is declared 2021-01-06 00:58:10 +05:30
templates pretty.html: refactor 2021-01-06 05:14:12 +05:30
.gitignore add /p/<id> routes 2020-12-29 17:37:29 +05:30
Cargo.lock add /p/<id> routes 2020-12-29 17:37:29 +05:30
Cargo.toml index: improve the usage guide 2020-12-30 03:41:54 +05:30
docker-compose.yml pretty.html: corrections for optimum lighthouse results 2021-01-06 04:10:59 +05:30
Dockerfile Dockerised the app 2020-12-30 04:20:39 +05:30
readme.md readme: use markdown, add deployment examples 2021-01-06 00:14:16 +05:30

Usage

    POST    / 

        accepts raw data in the body of the request and responds with a URL
        of a page containing the body's content

    GET     /<id>

        retrieves the content for the paste with id `<id>`

    GET     /p/<id>

        retrieves the HTML page with syntax-highlighted content for the paste with id `<id>`

Examples

    Paste a file named 'file.txt' using cURL:

        curl --data-binary @file.txt https://bin.wantguns.dev

    Paste from stdin using cURL:

        echo "Hello, world." | curl --data-binary @- https://bin.wantguns.dev

    Add this to your .zshrc to implement a quicker usage.

        function paste() {
          local file=${1:-/dev/stdin}
          curl --data-binary @${file} https://bin.wantguns.dev
        }

    If the uploaded data binary is parsed as "text/*", then the paste will be syntax
    highlighted

Deployment

Traefik

## (... Traefik service configuration ...) ##

   pastebin:
     image: wantguns/bin
     restart: always
     container_name: pastebin
     ports:
       - 127.0.0.1:6162:6162
     environment:
       - ROCKET_PORT=6162
       - THEME=
       - HOST=${BIN_DOMAIN}
     volumes:
       - /path/to/local/upload:/app/upload
     labels:
       - "traefik.enable=true"
       - "traefik.http.routers.pastebin.rule=Host(`${BIN_DOMAIN}`)"
       - "traefik.http.routers.pastebin.entrypoints=secure"
       - "traefik.http.routers.pastebin.tls.certresolver=le"
       - "traefik.http.services.pastebin.loadbalancer.server.port=6162"
     networks:
       - bin_network

networks:
  - bin_network