32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
# 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`: default `80`. 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 4096
|
|
- `title`: optional. message title. max length 256
|
|
- `color`: 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
|
|
|
|
```html
|
|
<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>
|
|
```
|