Anti-VPN and anti-proxy protection with country filtering, Discord alerts, a silent mode and a dry-run mode.
2.4.0
Added
The Discord embed layout is now yours to write (discord.embed). The message used to be fixed at a title and six inline boxes. Every visible part is a template string instead:
discord:
embed:
title: "`{player}`"
description: |
```ansi
IP: `{ip}`
Country: {country}
Action: {action}
```
thumbnail: "https://your-server.example/alert.gif"
footer: "ProxyShield {version} on {platform}"
fields: {}
Placeholders: {player} {uuid} {ip} {reason} {country} {isp} {asn} {score} {sources} {platform} {version}, plus {action} (Connection denied / Logged only (dry run)) and {action_id} (kicked / allowed).
Fields are named entries rather than a list, the same way api.providers works, and appear in the order written. Clear them with fields: {} for a description-only message.
Values go in exactly as written, so the backticks are yours to place. Discord parses embed text as Markdown and an underscore is a legal Minecraft name character, so the shipped layout wraps everything that can contain one.
Nothing changes for an existing server. A config without an embed section renders the previous layout, and the section now shipped in config.yml is that same layout spelled out, which a test pins.
The thumbnail must be https://, the same rule the webhook URL is held to.
Also added: {action_id} in actions.on-flag, so one name means one thing in both the commands and the embed.