cwhitelist
Чтобы решить проблему с вайтлистом, когда сервер не в онлайн-режиме
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 1,7 тыс.
- Подписчиков на Modrinth
- 3
- версий
- 10
- Обновлён
- 2 октября 20262 окт.
- Опубликован
- в 2025
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
CWhitelist — продвинутое управление вайтлистом для Minecraft
🔒 Умная система вайтлиста с интеграцией API для современных серверов Minecraft
✨ Возможности
🔐 Многоуровневая аутентификация
- Имя игрока: классический вайтлист по нику
- UUID: надёжная идентификация игрока
- IP-адрес: аутентификация по IP с поддержкой шаблонов (например,
192.168.*.*) - Настраиваемые типы проверок: включайте и отключайте каждый способ аутентификации отдельно
🌐 Интеграция с API
- Два режима работы: приоритет API с локальным резервом
- Централизованное управление: единый источник данных для нескольких серверов
- Синхронизация в реальном времени: автоматическое обновление вайтлиста
- Аутентификация по токену: безопасная связь с API с уровнями прав
- Мониторинг состояния: встроенные проверки работоспособности API
📊 Умная система логирования
- Полный журнал событий: попытки входа игроков с отметками времени
- Ротация логов: автоматическое управление файлами с ограничением размера
- Политики хранения: настраиваемые сроки хранения логов
- Удалённое логирование: опциональная запись событий через API
🛠️ Продвинутое управление
- Асинхронные операции: неблокирующие вызовы API и работа с файлами
- Умное кеширование: настраиваемая длительность кеша для снижения нагрузки на API
- Устойчивость к ошибкам: корректная деградация при недоступности API
- Горячая перезагрузка: изменение конфигурации без перезапуска сервера
🎮 Удобство использования
- Команды с правами доступа: гибкий контроль доступа к командам
- Обратная связь в реальном времени: мгновенное подтверждение операций
- Подробный статус: детальная информация об API и токене
- Резервная защита: бесшовная локальная работа при сбоях API
🚀 Быстрый старт
Установка
- Скачайте последний
cwhitelist-x.x-NeoForge-1.21.x.jarиз Releases - Поместите его в папку
modsвашего сервера - Запустите сервер, чтобы сгенерировать конфигурацию по умолчанию
- Перезапустите сервер после настройки
Базовая конфигурация
Для локального режима:
# config/cwhitelist-common.toml
[basic]
enableLogging = true
logRetentionDays = 7
logCutSizeMB = 10
[checks]
enableNameCheck = true
enableUuidCheck = true
enableIpCheck = true
[api]
enableApi = false # Отключить интеграцию с APIДля режима с API:
[api]
enableApi = true
baseUrl = "http://your-api-server.com/api"
token = "your-secure-api-token-here"
useHeaderAuth = true
timeoutSeconds = 10
syncOnStartup = true
logLoginEvents = trueАдрес репозитория бэкенда: cwhitelist-backend
⚙️ Руководство по конфигурации
Базовые настройки ([basic])
| Параметр | По умолчанию | Описание | Диапазон |
|---|---|---|---|
enableLogging | true | Включить локальное логирование в файл | boolean |
logRetentionDays | 7 | Сколько дней хранить файлы логов | 1-365 |
logCutSizeMB | 10 | Максимальный размер файла лога (МБ) | 1-100 |
Настройки проверок ([checks])
| Параметр | По умолчанию | Описание |
|---|---|---|
enableNameCheck | true | Проверка по имени игрока |
enableUuidCheck | true | Проверка по UUID игрока |
enableIpCheck | true | Проверка по IP-адресу |
Настройки API ([api])
| Параметр | По умолчанию | Описание |
|---|---|---|
enableApi | false | Включить интеграцию с API |
baseUrl | http://127.0.0.1:5000/api | Базовый URL API-сервера |
token | "" | Токен аутентификации API |
useHeaderAuth | true | Использовать заголовок Authorization (true) или параметр запроса (false) |
timeoutSeconds | 10 | Таймаут запроса к API |
cacheDurationSeconds | 30 | Длительность локального кэша (0 — отключить) |
syncOnStartup | true | Синхронизация с API при запуске сервера |
logLoginEvents | true | Отправлять события входа в API |
serverId | "" | Необязательный идентификатор сервера |
sendServerId | false | Включать ID сервера в запросы к API |
includeExpired | false | Включать истёкшие записи при синхронизации |
📋 Справочник команд
🎮 Команды игроков
| Команда | Описание | Права |
|---|---|---|
| Прямых команд для игроков нет | Всё управление вайтлистом требует прав администратора | - |
👑 Команды администратора
Базовое управление вайтлистом:
# Добавить записи
/cwhitelist add name <username>
/cwhitelist add uuid <uuid>
/cwhitelist add ip <ip-address>
# Удалить записи
/cwhitelist remove name <username>
/cwhitelist remove uuid <uuid>
/cwhitelist remove ip <ip-address>
# Просмотр записей
/cwhitelist list
# Перезагрузить конфигурацию
/cwhitelist reloadКоманды управления API:
# Проверить статус API
/cwhitelist api status
# Проверить токен API
/cwhitelist api verify
# Выполнить проверку работоспособности
/cwhitelist api health
# Ручная синхронизация с API
/cwhitelist api sync
# Очистить кэш API
/cwhitelist api clearcache🔌 Интеграция с API
Требования к API
CWhitelist поддерживает интеграцию с совместимыми API-серверами, реализующими следующие эндпоинты:
GET /health— проверка работоспособности (аутентификация не требуется)GET /whitelist/sync— получить записи вайтлиста (требуется право на чтение)POST /whitelist/entries— добавить новые записи (требуется право на запись)DELETE /whitelist/entries/{type}/{value}— удалить записи (требуется право на удаление)POST /login/log— логировать события входа (требуется право на запись)GET /tokens/verify— проверить действительность токена (требуется аутентификация)
Права токена
Токены API должны быть созданы с соответствующими правами:
- Read: нужен для синхронизации вайтлиста
- Write: нужен для добавления записей и логирования событий
- Delete: нужен для удаления записей
- Manage: администрирование системы (обычно не требуется)
Способы аутентификации
Аутентификация через заголовок (рекомендуется):
Authorization: Bearer your-token-hereАутентификация через параметр запроса:
GET /api/whitelist/sync?token=your-token-here🗂️ Структура файлов
config/
├── cwhitelist-common.toml # Основная конфигурация
└── cwhitelist_entries.json # Локальная резервная копия вайтлиста
logs/
└── cwhitelist/
├── 2024-01-01.log # Ежедневные файлы логов
└── 2024-01-01.log.1704067200000 # Ротированные логиФормат файлов данных
cwhitelist_entries.json:
[
{"type": "name", "value": "PlayerOne"},
{"type": "uuid", "value": "123e4567-e89b-12d3-a456-426614174000"},
{"type": "ip", "value": "192.168.1.*"}
]🔄 Режимы работы
Режим 1: Только локально (по умолчанию)
- Все данные хранятся локально
- Никаких внешних зависимостей
- Простое развёртывание
- Подходит для одиночных серверов
Режим 2: API-основной с резервным вариантом
- Основной: Синхронизация с центральным API
- Резервный: Использование локального кэша, если API недоступен
- Автоматическая повторная синхронизация при восстановлении API
- Идеально для конфигураций с несколькими серверами
Режим 3: Только API
- Все операции через API
- Нет локального хранения вайтлиста
- Централизованное управление
- Требуется надёжное подключение к API
🛡️ Функции безопасности
Безопасность аутентификации
- Аутентификация на основе токенов: Безопасная связь с API
- Проверка разрешений: Гранулярный контроль доступа
- Срок действия токена: Автоматическая проверка действительности токена
- Без захардкоженных секретов: Управление токенами через файл конфигурации
Защита данных
- Локальное шифрование: Конфиденциальные данные в конфигурации
- Контроль доступа: Разрешения команд только для администраторов (уровень 4)
- Журналирование аудита: Полное журналирование доступа
- Валидация ввода: Санитизация параметров запросов API
Сетевая безопасность
- Поддержка HTTPS: Безопасная связь с API (при настройке)
- Защита от таймаутов: Настраиваемые таймауты запросов
- Логика повторных попыток: Корректная обработка ошибок
- Ограничение частоты: Встроенная очередь запросов
📈 Оптимизация производительности
Стратегия кэширования
// Configurable cache duration
cacheDurationSeconds = 30 // Balance between freshness and API load
// Smart cache invalidation
- Add/Remove operations clear cache
- Manual sync refreshes cache
- Automatic periodic validationАсинхронные операции
- Неблокирующие вызовы API: HTTP-запросы в отдельных потоках
- Параллельная обработка: Одновременная обработка запросов
- Управление очередью: Упорядоченная обработка запросов
- Оптимизация ресурсов: Эффективное использование памяти
🐛 Устранение неполадок
Частые проблемы
Не удалось подключиться к API:
[Server] WARN API health check failed, falling back to local fileРешение: Убедитесь, что сервер API запущен и доступен. Проверьте сетевое подключение и настройки брандмауэра.
Ошибка аутентификации:
[Server] ERROR Token verification failed: Authentication requiredРешение: Убедитесь, что токен API верен и имеет необходимые разрешения. Используйте /cwhitelist api verify для проверки.
Доступ запрещён:
[Server] ERROR Token does not have write permissionРешение: Сгенерируйте новый токен с соответствующими разрешениями или используйте существующий токен с правильными разрешениями.
Проблемы с кэшем:
[Server] DEBUG API cache clearedРешение: Кэш автоматически очищается при изменении. Используйте /cwhitelist api clearcache для принудительного обновления.
Файлы логов
Проверьте файлы логов для получения подробной информации об ошибках:
- Расположение:
logs/cwhitelist/YYYY-MM-DD.log - Содержит: вызовы API, попытки аутентификации, ошибки
- Формат:
[HH:mm:ss] [RESULT] PlayerName UUID IP
Команды отладки
# Check current mode
/cwhitelist list
# Verify API connectivity
/cwhitelist api health
# Test token permissions
/cwhitelist api verify
# View detailed status
/cwhitelist api status🧩 Совместимость с API
Поддерживаемые версии API
- Минимальная: v1.0.0
- Рекомендуемая: v1.1.0+
- Протестировано с: CWhitelist API v1.2.0
Ожидаемый формат ответа
{
"success": true,
"message": "Operation successful",
"data": { /* operation-specific data */ }
}Обработка ошибок
Мод обрабатывает следующие HTTP-коды состояния:
200-299: Успех — обработать ответ401: Неавторизован — токен недействителен/просрочен403: Запрещено — недостаточно разрешений429: Превышен лимит запросов — автоматическая повторная попытка с задержкой500+: Ошибка сервера — переход в локальный режим
🔧 Разработка
Сборка из исходного кода
# Clone repository
git clone https://github.com/SkyDreamLG/CWhitelist.git
cd CWhitelist
# Build with Gradle
./gradlew build
# Output: build/libs/cwhitelist-x.x.x.jar
### Требования
- **Java**: 17 или выше
- **Minecraft**: 1.21.x
- **NeoForge**: последняя рекомендуемая сборка
- **Инструменты сборки**: Gradle 8.0+
### Структура проектаsrc/main/java/org/skydream/cwhitelist/ ├── Cwhitelist.java # Главный класс мода ├── Config.java # Управление конфигурацией ├── ApiClient.java # Взаимодействие с API ├── WhitelistManager.java # Основная логика вайтлиста ├── WhitelistCommand.java # Реализация команд ├── LogHandler.java # Система логирования └── WhitelistEntry.java # Модель данных
### Расширение мода
**Добавление новых методов аутентификации:**
1. Обновите `Config.java`, добавив новую настройку проверки
2. Измените метод `WhitelistManager.isAllowed()`
3. Добавьте соответствующие обработчики команд
4. Обновите API-клиент для поддержки нового эндпоинта
**Интеграция собственного API:**
```java
// Реализуйте собственный интерфейс ApiClient
public interface CustomApiClient {
CompletableFuture<List<WhitelistEntry>> fetchEntries();
CompletableFuture<Boolean> validateEntry(WhitelistEntry entry);
}🤝 Участие в разработке
Мы рады вашему вкладу! Подробности смотрите в руководстве по участию.
Процесс разработки
- Форкните репозиторий
- Создайте ветку для фичи (
git checkout -b feature/amazing-feature) - Закоммитьте изменения (
git commit -m 'Add amazing feature') - Запушьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Стандарты кода
- Следуйте существующему стилю и паттернам кода
- Добавляйте подробные комментарии JavaDoc
- Включайте юнит-тесты для новых функций
- Обновляйте документацию при изменениях API
- Обеспечивайте обратную совместимость
Сторонние лицензии
- Gson: Apache License 2.0
- NeoForge: LGPL 2.1
- SLF4J: MIT License
🌟 Благодарности
- Команде NeoForge за отличный фреймворк для моддинга
- Mojang Studios за Minecraft
- Участникам, помогающим улучшать этот проект
- Сообществу за отзывы и поддержку
📞 Поддержка
- Документация: GitHub Wiki
- Проблемы: GitHub Issues
- Обсуждения: GitHub Discussions
- Email: 1607002411@qq.com
Если проект оказался полезен, поставьте ему ⭐ на GitHub!
🎯 Краткая справка
Чек-лист развёртывания
- [ ] Проверьте установку Java 17+
- [ ] Настройте API-токен (если используете режим API)
- [ ] Задайте подходящие уровни прав
- [ ] Проверьте подключение к API
- [ ] Настройте параметры логирования
- [ ] Настройте расписание ротации логов
- [ ] Проверьте работу локального резервного режима
Советы по производительности
- Длительность кэша: задайте
cacheDurationSecondsв зависимости от частоты обновлений - Ротация логов: настройте
logCutSizeMB, чтобы избежать проблем с местом на диске - Настройки таймаута: подберите
timeoutSecondsпод задержку сети - Запросы к API: минимизируйте запросы к API в часы пик
Лучшие практики безопасности
- Безопасность токенов: храните токены в конфигурации, а не в коде
- Минимум прав: выдавайте только необходимые права
- Регулярные проверки: просматривайте логи на подозрительную активность
- Безопасность API: используйте HTTPS для взаимодействия с API
- Стратегия резервного копирования: регулярно делайте бэкапы локальных файлов вайтлиста
Готовы защитить свой Minecraft-сервер? Установите CWhitelist сегодня и оцените управление вайтлистом профессионального уровня!
Частые вопросы
Как установить cwhitelist?
Установите NeoForge под свою версию Minecraft, скачайте cwhitelist под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть cwhitelist?
У cwhitelist есть сборки для Minecraft 1.21–26.3.
Нужен ли cwhitelist на сервере?
Ставится только на сервер; игрокам ставить не нужно