Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dyne/binnit
minimal no-fuss pastebin service clone in golang
https://github.com/dyne/binnit
go golang minimalism pastebin pastebin-service web-app
Last synced: about 2 months ago
JSON representation
minimal no-fuss pastebin service clone in golang
- Host: GitHub
- URL: https://github.com/dyne/binnit
- Owner: dyne
- License: agpl-3.0
- Created: 2017-07-03T12:43:18.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-30T12:00:04.000Z (almost 6 years ago)
- Last Synced: 2024-06-20T17:47:26.547Z (7 months ago)
- Topics: go, golang, minimalism, pastebin, pastebin-service, web-app
- Language: Go
- Homepage:
- Size: 37.1 KB
- Stars: 30
- Watchers: 3
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
## binnit -- minimal pastebin clone in golang
That's just it. A minimalist, no-fuss pastebin clone server in
golang. It supports only two operations:* store a new paste, through a POST request
* retrieve a paste using its unique ID, through a GET requestwhat else do you need?
## WTF?
`binnit` is a single executable with **no dependencies**. You **don't
need** a web server. You **don't need** a SQL server. You **don't
need** any external library.`binnit` serves pastes in the format:
http:///abcdef1234567890
and stores them in a folder on the server, one file per paste, whose
filename is identical to the paste ID. The unique ID of a paste is
obtained from the SHA256 of the concatenation of title, time, and
content. Rendering is minimal, on purpose, but based on a customisable
template.`binnit` is currently configured through a simple key=value
configuration file, whose name can be specified on the command line
through the option `-c `. If no config file is specified,
`binnit` looks for `./binnit.cfg`. The configurable options are:* server\_name (the FQDN where the service is reachable from outside)
* bind\_addr (the address to listen on)
* bind\_port (the port to bind)
* paste\_dir (the folder where pastes are kept)
* templ\_dir (the folder where HTML files and templates are kept)
* max\_size (the maximum allowed length of a paste, in bytes. Larger
pastes will be trimmed to that length.)
* log_file (path to the logfile)As with other pastebin-like services, you can send a paste to `binnit`
using `curl`. For instance, if your `binnit` server is running on
`http://servername.net`, you can paste a file there using:curl -F 'paste= It seems that perfection is attained not when there is nothing more
> to add, but when there is nothing more to remove (Antoine de Saint
> Exupéry)`binnit` is intended to be truly minimal. It consists of about 500
lines of golang source code in total, including:* ~110 lines for License statements (comments)
* ~110 lines of core logic
* ~90 blank lines
* ~75 lines for template management
* ~75 lines for config management
* ~30 lines of pure commentsIf you want to strip `binnit` down even further, you could consider
removing:* blank lines
* the external configuration file
* the template system
* sanity checks and error management
* logging
* code commentsYou **CANNOT** remove the licence statements on each source file.
## LICENSE
`binnit` is Copyright (2017) by Vincenzo "KatolaZ" Nicosia.
`binnit` is free software. You can use, modify, and redistribute it
under the terms of the GNU Affero General Public Licence, version 3 of
the Licence or, at your option, any later version. Please see
LICENSE.md for details.