An opensource HTTP request bin built over SSH
Sdump is a HTTP request bin built over SSH. I usually have to google for some 3rd party server or download a binary to inspect certain requests.
Inspect, test and debug any request or webhook from your terminal
There is always a new flavor of an online HTTP request bin i have to use every other month. Or sometimes, people have to download Ngrok to get a request bin functionality i.e people have to download or use external services to get a request bin.
I spend an awful amount of time in the terminal and it makes sense i should be able to spin up and use a request bin on my terminal. Hence this project sdump
ssh -t -p 2222 ssh.sdump.app
Note
URLs are persisted by default as long as you connect with the same ssh key
Important
We might routinely change the ssh key of the server which might prevent
ssh from auto connecting when we move the app from server a to b as part of our processes.
And you will be presented with an error saying the
key was changed. That is fine, just delete the ssh.sdump.app
line in your
~/.ssh/known_hosts
sdump http
: starts the HTTP server.sdump ssh
: starts the SSH serversdump delete-http
: deletes/prunes old ingested requests. This can be a form of a cron job that runs every few days or so
Here is a full config file for all possible values:
## log level
log: debug
cron:
## how often should the `delete-http` command run
ttl: "48h"
## Do soft deletes or actually wipe them off the database
soft_deletes: false
tui:
## the color_scheme to use for the request body
# see https://github.com/alecthomas/chroma/tree/master/styles
color_scheme: monokai
ssh:
## port to run ssh server on
port: 2222
## allow_list is a list of public keys that can connect to the ssh server
# this is useful if you were running a private instance for a few coworkers
# or friends
allow_list:
- ./.ssh/id_rsa.pub
- /Users/lanreadelowo/.ssh/id_rsa.pub
## keys for the ssh server
identities:
- "id_ed25519"
http:
## port to run http server on
port: 4200
## what domain name you want to use?
domain: http://localhost:4200
## rate limiting clients
rate_limit:
## limit the number of ingested requests from a specific client
requests_per_minute: 60
## database configuration. postgres essentially
database:
## database dsn
dsn: postgres://sdump:sdump@localhost:3432/sdump?sslmode=disable
## should we log sql queries? In prod, no but in local mode,
## you probably want to
log_queries: true
# limit the size of jSON request body that can be sent to endpoints
max_request_body_size: 500
## Opentelemetry and tracing config
otel:
## does OTEL endpoint have tls enabled?
use_tls: true
## custom name you want to use to identify the service
service_name: SDUMP
## OTEL Endpoint
endpoint: http://localhost:4200
## Should we trace all http and DB requests
is_enabled: false
## Prometheus configuration
prometheus:
## protect your /metrics endpoint with basic auth
## if provided, password must also be provided too
username: sdump
## basic auth password for your /metrics
password: sdump
## enable /metrics endpoint and metrics collection?
is_enabled: true
Use ssh-keygen -f .ssh/id_rsa
to generate a test ssh key
I have added a guide here on how I have deployed the public version