1.Как подключить
Поставьте плагин. NuVotifier — на Spigot, Paper, Purpur и их форки. Классический Votifier тоже подойдёт: мы понимаем обе версии и определяем нужную сами, по ответу вашего сервера.
Откройте порт. По умолчанию плагин слушает 8192. Порт должен быть доступен снаружи — это отдельный порт, не порт игры: чаще всего настройка ломается именно здесь.
Подтвердите сервер за собой. В карточке сервера — «Я владелец». Мы дадим короткий код, вы поставите его в MOTD, наш пингер увидит его сам. Пароля и переписки не нужно.
Впишите ключ или токен. Для NuVotifier — token из его конфига. Для классического Votifier — содержимое файла plugins/Votifier/rsa/public.key. Ключ можно вставлять как есть, с переносами строк и заголовками BEGIN/END.
Нажмите «Проверить». Мы отправим на ваш сервер настоящий голос от ника mcmon_test. Награда, которую вы увидите в игре, и есть доказательство, что всё работает.
2.Защита от накрутки
Голос, который можно нажать сто раз, не стоит ничего — ни вам как награда, ни нам как строчка рейтинга.
Один ник — один голос в сутки за сервер. Регистр не считается: Steve и steve — один игрок.
Один адрес — один голос в сутки за сервер. У IPv6 адрес сворачивается до подсети провайдера: иначе у одного человека их миллиарды.
Не больше 12 голосов с адреса в сутки по всему каталогу сразу — это обрывает скрипт, который обходит карточки подряд.
Сутки считаются по Москве: счётчик обнуляется в полночь МСК, а не через 24 часа после голоса.
Ограничения действуют для всех одинаково, и снять их за деньги нельзя — иначе они не значили бы ничего.
3.Если награда не пришла
«На этом порту не Votifier» — в поле порта стоит порт игры. Votifier слушает свой, по умолчанию 8192.
«Сервер закрыл соединение без ответа» — почти всегда токен NuVotifier не совпадает с тем, что в конфиге плагина.
«Сервер не отвечает» — порт закрыт файрволом или проброшен только на локальный адрес.
Голос прошёл, награды нет — классический Votifier не отвечает нам вовсе, «отправлено» там значит только это. Проверьте, что ключ на сервере не менялся после установки.
Голос, который не дошёл, не теряется: мы повторяем отправку с растущим шагом примерно сутки. Починив настройку днём, вы догоните утренние голоса.
4.Что мы отправляем и по какому протоколу
Ровно четыре поля и ничего больше: ник, который ввёл игрок, имя сервиса, адрес сервиса и момент голоса. Адрес игрока мы не передаём и у себя не храним: для защиты от накрутки нужен факт совпадения, а не сам адрес, поэтому в базе лежит только его хеш.
Классический Votifier принимает сообщение, зашифрованное вашим публичным ключом RSA, и ничего не отвечает. NuVotifier здоровается первым, присылает challenge и проверяет подпись HMAC на вашем токене — и только он может подтвердить, что голос принят.
Поэтому на NuVotifier мы показываем «доставлено» уверенно, а на классическом — только «отправлено». Разница честная: со сменённым ключом сервер выглядит так же, как исправный.