http paste webserver in go
Go to file
2024-09-19 15:38:43 -03:00
.github/workflows ci: create docker image on tag creation 2024-09-19 13:17:29 -03:00
static feat: add static website example 2024-09-18 10:26:32 -03:00
templates feat: add customizable file tree 2024-09-19 10:28:23 -03:00
.gitignore chore: update gitignore 2024-09-18 10:24:21 -03:00
abyss.go feat: add customizable file tree 2024-09-19 10:28:23 -03:00
docker-compose.yml ops: add templates dir to docker compose 2024-09-19 10:33:43 -03:00
Dockerfile feat: optimize docker image 2024-09-06 10:33:57 -03:00
generate_config.sh fix: more intuitive port handling 2024-09-18 10:16:03 -03:00
go.mod build: add on-commit github action 2024-09-03 22:26:00 -03:00
go.sum feat: easier setup and more transparent customization 2024-09-03 21:53:26 -03:00
handlers.go fix: change to html/template for more security 2024-09-19 15:38:43 -03:00
LICENSE Initial commit 2024-08-19 11:55:06 -03:00
README.md docs: mention theming templates 2024-09-19 10:30:28 -03:00

abyss

abyss is a basic single user http server made for uploading files (logs, images) and then sharing them to the internet

note: this is a project made for learning purposes, you should use other more mature projects if running in production. probably.

table of contents

running:

  • run ./generate_config.sh to setup the necessary environment variables

docker

  • to run with docker, you can use the docker-compose.yml file available in this repo. to do so, run:
docker compose up -d # might be docker-compose depending on distro
  • you can optionally use the docker image directly and set it up how you want

manual

  • to run it manually, build it with go build -o abyss and run:
./abyss

uploading

  • then, simply upload your files with curl:
curl -F "file=@/path/to/file" -H "X-Auth: "$(cat /path/to/.key) http://localhost:3235/

theming

  • there is an example homepage in static/ you can edit directly, which the server will serve automatically
  • if running with docker, it's also possible to override /static inside the container with your own page.
  • same thing with templates in templates/
    • it is preferred to use dev/ for that reason, since it is git-ignored and that way makes it easier if wanting to update regularly without making changes to the tree

docs

  • ABYSS_URL: this is used for the correct formatting of the response of curl.
  • AUTH_USERNAME | AUTH_PASSWORD: this is used to access /tree/, which shows all uploaded files
  • UPLOAD_KEY: this is key checked when uploading files. if the key doesn't match with server's one, then it refuses uploading.
  • ABYSS_FILEDIR: this points to the directory where abyss will save the uploads to. defaults to ./files
  • ABYSS_PORT: this is the port the server will run on. safe to leave empty. defaults to 3235

todo:

  • add upload of logs funcionality (like 0x0.st)
  • add docker easy setup
  • add db for tracking of file names (dont need that)
  • add file browser (like file://)
  • add file extension in its name
  • login prompt when accessing /tree
  • home page
  • add rate limits