Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bradfier/gestetner

A netcat & HTTP pastebin
https://github.com/bradfier/gestetner

pastebin rust

Last synced: about 1 month ago
JSON representation

A netcat & HTTP pastebin

Awesome Lists containing this project

README

        

# gestetner

A netcat and HTTP command line pastebin for sharing straight from your terminal.

## Why another one?
I was able to find pastebin servers which supported publishing pastes over plain sockets (with `nc`) or
over HTTP(S) with `curl`, but not one that supported both!

There are some scenarios where all you have available is a shell, and being able to [paste to a plain socket](https://github.com/solusipse/fiche#pure-bash-alternative-to-netcat)
is surprisingly useful.

## Client Usage
```
SYNOPSIS
| nc etc.fstab.me 9999
| curl --data-binary @- https://etc.fstab.me

EXAMPLES
~$ ls -l | curl --data-binary @- https://etc.fstab.me
https://etc.fstab.me/abcd

~$ ls -l | nc etc.fstab.me 9999
https://etc.fstab.me/efgh
```

## Server Usage
```
USAGE:
gestetner -l '[::]:9999' -w '[::]:8080' -p /tmp/gst -u http://localhost:8080

FLAGS:
-h, --help Prints help information

OPTIONS:
-u URL Set the base URL to be returned in paste responses
-l HOST:PORT Set the listening socket address for incoming pastes
-p PATH Set the filesystem path in which to store pastes
-w HOST:PORT Set the listening socket for the HTTP server

-n LENGTH Set the length of the random paste slug (default: 4)
-m MAX_SIZE Set the maximum size of a paste in bytes (default: 512KiB)
-r RATE Maximum number of pastes per minute from a single IP (default: 5)
--capacity SIZE Set the maximum size of the paste directory (default: 100MiB)
```

Gestetner has built-in rate limiting, a paste size limiter, and will remove the oldest pastes in order to keep its disk
usage below the value you supply for `capacity`.

## Installation

```
$ git clone [email protected]:bradfier/gestetner.git

$ cargo build --release
$ sudo cp target/release/gestetner /usr/local/bin/

$ gestetner -l 127.0.0.1:9999 -w 127.0.0.1:8080 -p /tmp -u http://localhost:8080
```

Alternatively, install from Crates.io with `cargo install gestetner` or use the provided `Dockerfile` to build an image instead.

## License
`gestetner` is licensed under the GNU Affero General Public License, Version 3.
See [LICENSE](LICENSE) for more information.