HTTP-Postback
Am besten für Websites, Launcher und Nicht-Minecraft-Spiele. Für Minecraft optional zusätzlich zu Votifier.
- Funktioniert für jedes Spiel
- Punkte, Cooldowns und Logs bestimmst du
- Braucht einen öffentlichen HTTPS-Endpunkt
Vote-Belohnungen
So belohnst du Spieler, nachdem sie erfolgreich für deinen Eintrag auf JoinGameServers gestimmt haben.
Einrichtung: Dashboard → Server bearbeiten → Vote-Belohnungen (und Minecraft-Details für Votifier).
Spieler öffnet deinen Vote-Link, ideal mit ?p=USERNAME.
Die Stimme wird abgeschickt. 24-Stunden-Cooldown pro IP (und Konto). Bei konfigurierten Belohnungen ist der Benutzername Pflicht.
Wir benachrichtigen dein System: HTTP-GET auf die Postback-URL und/oder ein Votifier-Paket — mit demselben Parameter und der Wähler-IP.
Du vergibst die Belohnung. Fehlschläge bei dir werden hier geloggt, die Stimme bleibt.
Am besten für Websites, Launcher und Nicht-Minecraft-Spiele. Für Minecraft optional zusätzlich zu Votifier.
Bevorzugt für Minecraft. Für Kisten, Keys und Listener-Plugins. Wir verbinden uns per TCP mit deinem Votifier-Port.
Für Minecraft zuerst Votifier. Postback ist optional oder zusätzlich. Beide Kanäle laufen unabhängig.
Nach einer gültigen Stimme rufen wir deine URL mit Parameter und IP auf.
Die öffentliche Ausgangs-IP dieser Liste in Firewall und Postback-Script freigeben. Andere Quellen ablehnen. HTTPS bevorzugen.
Dashboard → Server bearbeiten → Vote-Belohnungen → Postback-URL.
https://YOURDOMAIN/postback.php
Parameter anhängen, damit der Spieler auf der Vote-Seite erkannt wird.
/GAME/server/SLUG/vote?p=PARAMETER
| Teil | Regeln |
|---|---|
PARAMETER / p_resp |
Nur Buchstaben, Zahlen, _, - · max. 32 Zeichen |
ip |
IPv4 oder IPv6 des Wählers, wie diese Liste sie sieht |
| Vorausfüllen | ?p= oder ?username= |
Nur bei Erfolg. Ohne gültige Stimme keine Anfrage.
https://YOURDOMAIN/postback.php?p_resp=PARAMETER&ip=USERIP
| Incentive-Link | Unser Callback |
|---|---|
/minecraft-server/server/your-server-slug/vote?p=1234 |
…/postback.php?p_resp=1234&ip=123.123.123.123 |
/minecraft-server/server/your-server-slug/vote?p=Razor |
…/postback.php?p_resp=Razor&ip=123.123.123.123 |
Wenn wir p_resp=Razor senden, hat Spieler Razor abgestimmt. ip ist die Adresse, die diese Liste gesehen hat.
Auf deiner Reward-Seite hosten. VOTE_LIST_IP vor dem Livegang setzen.
<?php
/**
* Example vote postback receiver for YOUR game website / CMS.
*
* Configure this URL on your listing under Dashboard → Edit server → Vote Rewards.
* This list will call it ONLY after a successful vote:
*
* https://yoursite.com/postback.php?p_resp=PARAMETER&ip=USERIP
*
* PARAMETER is the username / account id the player entered on the vote form
* (or the value from ?p= on your incentive voting link).
*
* Docs: /voting-check
*/
define('DEBUG', 0); // set to 1 to write _postback.log
define('LOG_FILE', __DIR__ . '/_postback.log');
/**
* Only accept callbacks from the vote list's public IP.
* Leave empty to skip the allowlist (not recommended in production).
*
* Example: define('VOTE_LIST_IP', '203.0.113.10');
*/
define('VOTE_LIST_IP', '');
$ipRequest = $_SERVER['HTTP_CF_CONNECTING_IP']
?? (isset($_SERVER['HTTP_X_FORWARDED_FOR'])
? trim(explode(',', (string) $_SERVER['HTTP_X_FORWARDED_FOR'])[0])
: null)
?? $_SERVER['REMOTE_ADDR']
?? '';
$ipRequest = trim((string) $ipRequest);
if (VOTE_LIST_IP !== '' && $ipRequest !== VOTE_LIST_IP) {
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[Invalid] Request from {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
http_response_code(403);
exit('Forbidden');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[OK] Valid callback: {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
// Clean parameters from the vote list (letters, numbers, underscore, hyphen).
$p = preg_replace('/[^A-Za-z0-9_\-]+/', '', (string) ($_GET['p_resp'] ?? '')) ?? '';
$userIp = preg_replace('/[^0-9a-fA-F:\.]+/', '', (string) ($_GET['ip'] ?? '')) ?? '';
if ($p === '') {
http_response_code(400);
exit('Missing p_resp');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[GET] Parameters [p_resp]={$p} [ip]={$userIp}" . PHP_EOL, 3, LOG_FILE);
}
// ---------------------------------------------------------------------------
// Connect to your database, verify account $p exists, enforce your own
// cooldown if needed, then grant vote points / items to $p (voted from $userIp).
// We send p_resp + ip ONLY when that player successfully voted on the list.
// ---------------------------------------------------------------------------
http_response_code(200);
echo 'OK';
Wir können die Stimme direkt in deinen Minecraft-Server schieben.
Firewall: eingehendes TCP von der Listen-IP auf den Votifier-Port (Standard 8192) erlauben.
Spieler gibt den Minecraft-Namen auf der Vote-Seite ein (oder kommt via ?p=Steve).
Stimme ist auf dieser Liste gültig.
Wir verbinden uns mit Host/Port und senden das Paket.
Dein Listener vergibt Kisten, Keys, Geld usw.
Votifier unter Minecraft-Details aktivieren, v2 oder Classic wählen, Host, Port und Token oder Public Key eintragen.
NuVotifier (classic RSA und v2) oder classic Votifier installieren, plus einen Listener (GAListener, SuperbVote oder eigenen).
Classic / v1: gesamte public.key einfügen. Host und Port stehen in der config.yml. debug: true nur beim Einrichten.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Pakete identifizieren diese Liste als: JoinGameServers
v2 ersetzt RSA durch ein Shared Token und eine Challenge. Token auf den Service-Namen mappen oder den Default-Token nutzen.
tokens:
default: REPLACE_WITH_DEFAULT_TOKEN
"JoinGameServers": REPLACE_WITH_LIST_TOKEN
Format: TCP → Greeting VOTIFIER 2 <challenge> → JSON-Payload → Base64(HMAC-SHA256) → Magic 0x733A + Länge + JSON. Erwartet {"status":"ok"}.
| Fehlersymptom | Wahrscheinliche Ursache |
|---|---|
| Kein NuVotifier-v2-Server | Greeting ohne Challenge — Classic nutzen oder NuVotifier mit v2 aktualisieren. |
| Ungültige Signatur / unbekannter Dienst | Falsches Token oder Service-Name nicht gemappt. |
| Verbindung fehlgeschlagen / Zeitüberschreitung | Falscher Host/Port, Votifier offline oder Firewall. |
| Keine Antwort | Proxy/Plugin; NuVotifier-Debug aktivieren. |
Zustellversuche stehen in vote_reward_logs (ok / fail / skipped). Ein Fehlschlag rollt die Stimme nicht zurück.
Nein. Gäste können abstimmen. Eingeloggte Konten teilen dieselben 24-Stunden-Regeln.
Bei Postback oder Votifier müssen wir wissen, wen wir belohnen. Ohne Belohnungen bleibt das Feld optional.
Ja. Beide laufen nach einer gültigen Stimme. Fehler sind unabhängig.
Es muss eine öffentliche http(s)-URL sein. Localhost, .local, private IPs und URLs mit Zugangsdaten sind gesperrt.
Prüfe den Erfolg auf dieser Liste, deine Postback-Logs oder NuVotifier-Debug, Firewall und den Ingame-Namen. Listen-Cooldown ist 24 Stunden.
Nur A–Z, a–z, 0–9, _ und -. Alles andere wird entfernt. Maximal 32 Zeichen.