example.html | ||
index.mjs | ||
README.md |
discord webhook proxy server
a shitty web server that lets you post messages into it and have them forwarded to a discord webhook. designed to hook up easily to a simple <form>
on your website that randos can use to cyberbully you.
environment variables
WEBHOOK_URL
: required. the discord webhook url you want your messages to be sent to. this can also be passed to the program as a command-line argument instead of an environment variable, if you want.PORT
: default80
. the port to listen on.TRUST_X_FORWARDED_HOST
,TRUST_X_FORWARDED_PROTO
,TRUST_X_FORWARDED_FOR
,TRUST_X_REAL_IP
: these correspond to headers commonly set by reverse proxies to convey information about the original request as they proxy it to the app. if you deploy this app behind a reverse proxy, set the variables that correspond to the headers your reverse proxy sets. (any non-empty value will be considered "true.") trusting a header that can be controlled directly by a requester will allow identity spoofing, so don't use these variables to trust headers that aren't explicitly set by your proxy (unless you're into that sort of thing).
api
POST /send
accepts Content-Type: application/x-www-form-urlencoded
(the default for HTML forms) or application/json
. fields:
content
: message content. max length 4096title
: optional. message title. max length 256color
: optional. sets the color of the embed displayed. a 6-digit case-insensitive hex color prefixed with a leading#
; no other color formats are accepted.
by default the server returns HTML responses so it's at lease somewhat friendly for use in a bare HTML <form>
. if you want to be fancy you can submit the form with JS and set your request's Accept
header to application/json
to get slightly more structured responses (204 with no content on success, 400 with an {"error": "the message"}
object on failure
example form
<form action="https://your.thing/send" method="post">
<input type="text" name="title" id="title" />
<textarea name="content"></textarea>
<button type="submit">Send</button>
</form>