跳到正文

cwhitelist

作者:SkyDreamLG

To soulve the whitelist problem when server in not in online mod

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

CWhitelist – Advanced Whitelist Management for Minecraft


🔒 Intelligent Whitelist System with API Integration for Modern Minecraft Servers

release
issues
license
NeoForge


✨ Features

🔐 Multi-Dimensional Authentication

  • Player Name: Traditional username-based whitelisting
  • UUID: Secure player identification
  • IP Address: IP-based authentication with wildcard support (e.g., 192.168.*.*)
  • Configurable Check Types: Enable/disable each authentication method independently

🌐 API Integration

  • Dual-Mode Operation: API-first with local fallback
  • Centralized Management: Single source of truth across multiple servers
  • Real-time Synchronization: Automatic whitelist updates
  • Token-based Authentication: Secure API communication with permission levels
  • Health Monitoring: Built-in API health checks

📊 Intelligent Logging System

  • Comprehensive Audit Trail: Player login attempts with timestamps
  • Log Rotation: Automatic file management with size limits
  • Retention Policies: Configurable log retention periods
  • Remote Logging: Optional API-based event logging

🛠️ Advanced Management

  • Async Operations: Non-blocking API calls and file operations
  • Smart Caching: Configurable cache durations to reduce API load
  • Error Resilience: Graceful degradation when API is unavailable
  • Hot Reloading: Configuration changes without server restart

🎮 User Experience

  • Permission-Based Commands: Granular command access control
  • Real-time Feedback: Immediate operation confirmation
  • Comprehensive Status: Detailed API and token information
  • Fallback Protection: Seamless local operation during API outages

🚀 Quick Start

Installation

  1. Download the latest cwhitelist-x.x-NeoForge-1.21.x.jar from Releases
  2. Place it in your server’s mods folder
  3. Start the server to generate default configuration
  4. Restart the server after configuration

Basic Configuration

For Local-Only Mode:

# config/cwhitelist-common.toml
[basic]
enableLogging = true
logRetentionDays = 7
logCutSizeMB = 10

[checks]
enableNameCheck = true
enableUuidCheck = true
enableIpCheck = true

[api]
enableApi = false  # Disable API integration

For API-Enabled Mode:

[api]
enableApi = true
baseUrl = "http://your-api-server.com/api"
token = "your-secure-api-token-here"
useHeaderAuth = true
timeoutSeconds = 10
syncOnStartup = true
logLoginEvents = true

Backend program repository address:cwhitelist-backend

⚙️ Configuration Guide

Basic Settings ([basic])

| Parameter | Default | Description | Range |
|———–|———|————-|——-|
| enableLogging | true | Enable local file logging | boolean |
| logRetentionDays | 7 | Days to keep log files | 1-365 |
| logCutSizeMB | 10 | Maximum log file size (MB) | 1-100 |

Check Settings ([checks])

| Parameter | Default | Description |
|———–|———|————-|
| enableNameCheck | true | Validate by player name |
| enableUuidCheck | true | Validate by player UUID |
| enableIpCheck | true | Validate by IP address |

API Settings ([api])

| Parameter | Default | Description |
|———–|———|————-|
| enableApi | false | Enable API integration |
| baseUrl | http://127.0.0.1:5000/api | API server base URL |
| token | "" | API authentication token |
| useHeaderAuth | true | Use Authorization header (true) or query param (false) |
| timeoutSeconds | 10 | API request timeout |
| cacheDurationSeconds | 30 | Local cache duration (0 to disable) |
| syncOnStartup | true | Sync with API on server start |
| logLoginEvents | true | Send login events to API |
| serverId | "" | Optional server identifier |
| sendServerId | false | Include server ID in API requests |
| includeExpired | false | Include expired entries when syncing |

📋 Command Reference

🎮 Player Commands

| Command | Description | Permission |
|———|————-|————|
| No direct player commands | All whitelist management requires admin permissions | – |

👑 Admin Commands

Basic Whitelist Management:

# Add entries
/cwhitelist add name <username>
/cwhitelist add uuid <uuid>
/cwhitelist add ip <ip-address>

# Remove entries
/cwhitelist remove name <username>
/cwhitelist remove uuid <uuid>
/cwhitelist remove ip <ip-address>

# View entries
/cwhitelist list

# Reload configuration
/cwhitelist reload

API Management Commands:

# Check API status
/cwhitelist api status

# Verify API token
/cwhitelist api verify

# Perform health check
/cwhitelist api health

# Manual sync from API
/cwhitelist api sync

# Clear API cache
/cwhitelist api clearcache

🔌 API Integration

API Requirements

CWhitelist supports integration with compatible API servers that implement the following endpoints:

  • GET /health – Health check (no authentication required)
  • GET /whitelist/sync – Retrieve whitelist entries (requires read permission)
  • POST /whitelist/entries – Add new entries (requires write permission)
  • DELETE /whitelist/entries/{type}/{value} – Remove entries (requires delete permission)
  • POST /login/log – Log login events (requires write permission)
  • GET /tokens/verify – Verify token validity (requires authentication)

Token Permissions

API tokens must be created with appropriate permissions:

  • Read: Required for syncing whitelist
  • Write: Required for adding entries and logging events
  • Delete: Required for removing entries
  • Manage: System administration (not typically needed)

Authentication Methods

Header Authentication (Recommended):

Authorization: Bearer your-token-here

Query Parameter Authentication:

GET /api/whitelist/sync?token=your-token-here

🗂️ File Structure

config/
├── cwhitelist-common.toml          # Main configuration
└── cwhitelist_entries.json         # Local whitelist backup

logs/
└── cwhitelist/
    ├── 2024-01-01.log              # Daily log files
    └── 2024-01-01.log.1704067200000 # Rotated logs

Data Files Format

cwhitelist_entries.json:

[
  {"type": "name", "value": "PlayerOne"},
  {"type": "uuid", "value": "123e4567-e89b-12d3-a456-426614174000"},
  {"type": "ip", "value": "192.168.1.*"}
]

🔄 Operation Modes

Mode 1: Local-Only (Default)

  • All data stored locally
  • No external dependencies
  • Simple deployment
  • Suitable for single servers

Mode 2: API-Primary with Fallback

  • Primary: Sync with central API
  • Fallback: Use local cache if API unavailable
  • Automatic re-sync when API restored
  • Ideal for multi-server setups

Mode 3: API-Only

  • All operations through API
  • No local whitelist storage
  • Centralized management
  • Requires reliable API connection

🛡️ Security Features

Authentication Security

  • Token-based Authentication: Secure API communication
  • Permission Validation: Granular access control
  • Token Expiry: Automatic token validity checks
  • No Hardcoded Secrets: Config file-based token management

Data Protection

  • Local Encryption: Sensitive data in configuration
  • Access Control: Admin-only command permissions (level 4)
  • Audit Logging: Comprehensive access logging
  • Input Validation: Sanitized API request parameters

Network Security

  • HTTPS Support: Secure API communication (when configured)
  • Timeout Protection: Configurable request timeouts
  • Retry Logic: Graceful error handling
  • Rate Limiting: Built-in request queuing

📈 Performance Optimization

Caching Strategy

// 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

Async Operations

  • Non-blocking API Calls: HTTP requests on separate threads
  • Parallel Processing: Concurrent request handling
  • Queue Management: Ordered request processing
  • Resource Optimization: Efficient memory usage

🐛 Troubleshooting

Common Issues

API Connection Failed:

[Server] WARN API health check failed, falling back to local file

Solution: Verify API server is running and accessible. Check network connectivity and firewall settings.

Authentication Failed:

[Server] ERROR Token verification failed: Authentication required

Solution: Verify API token is correct and has required permissions. Use /cwhitelist api verify to test.

Permission Denied:

[Server] ERROR Token does not have write permission

Solution: Generate new token with appropriate permissions or use existing token with correct permissions.

Cache Issues:

[Server] DEBUG API cache cleared

Solution: Cache automatically clears on modification. Use /cwhitelist api clearcache to force refresh.

Log Files

Check log files for detailed error information:

  • Location: logs/cwhitelist/YYYY-MM-DD.log
  • Contains: API calls, authentication attempts, errors
  • Format: [HH:mm:ss] [RESULT] PlayerName UUID IP

Debug Commands

# Check current mode
/cwhitelist list

# Verify API connectivity
/cwhitelist api health

# Test token permissions
/cwhitelist api verify

# View detailed status
/cwhitelist api status

🧩 API Compatibility

Supported API Versions

  • Minimum: v1.0.0
  • Recommended: v1.1.0+
  • Tested With: CWhitelist API v1.2.0

Response Format Expectations

{
  "success": true,
  "message": "Operation successful",
  "data": { /* operation-specific data */ }
}

Error Handling

The mod handles the following HTTP status codes:

  • 200-299: Success – Process response
  • 401: Unauthorized – Token invalid/expired
  • 403: Forbidden – Insufficient permissions
  • 429: Rate Limited – Automatic retry with backoff
  • 500+: Server Error – Fallback to local mode

🔧 Development

Building from Source

# 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

Prerequisites

  • Java: 17 or higher
  • Minecraft: 1.21.x
  • NeoForge: Latest recommended build
  • Build Tools: Gradle 8.0+

Project Structure

src/main/java/org/skydream/cwhitelist/
├── Cwhitelist.java              # Main mod class
├── Config.java                  # Configuration management
├── ApiClient.java               # API communication
├── WhitelistManager.java        # Core whitelist logic
├── WhitelistCommand.java        # Command implementation
├── LogHandler.java              # Logging system
└── WhitelistEntry.java          # Data model

Extending the Mod

Adding New Authentication Methods:

  1. Update Config.java with new check setting
  2. Modify WhitelistManager.isAllowed() method
  3. Add corresponding command handlers
  4. Update API client for new endpoint support

Custom API Integration:

// Implement custom ApiClient interface
public interface CustomApiClient {
    CompletableFuture<List<WhitelistEntry>> fetchEntries();
    CompletableFuture<Boolean> validateEntry(WhitelistEntry entry);
}

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Coding Standards

  • Follow existing code style and patterns
  • Add comprehensive JavaDoc comments
  • Include unit tests for new features
  • Update documentation for API changes
  • Ensure backward compatibility

Third-Party Licenses

  • Gson: Apache License 2.0
  • NeoForge: LGPL 2.1
  • SLF4J: MIT License

🌟 Acknowledgments

  • NeoForge Team for the excellent modding framework
  • Mojang Studios for Minecraft
  • Contributors who help improve this project
  • Community for feedback and support

📞 Support


Built with ❤️ by SkyDream Team

If you find this project useful, please consider giving it a ⭐ on GitHub!

🎯 Quick Reference

Deployment Checklist

  • [ ] Verify Java 17+ installation
  • [ ] Configure API token (if using API mode)
  • [ ] Set appropriate permission levels
  • [ ] Test API connectivity
  • [ ] Configure logging preferences
  • [ ] Set up log rotation schedule
  • [ ] Test local fallback functionality

Performance Tips

  1. Cache Duration: Set cacheDurationSeconds based on update frequency
  2. Log Rotation: Configure logCutSizeMB to prevent disk space issues
  3. Timeout Settings: Adjust timeoutSeconds based on network latency
  4. API Calls: Minimize API calls during peak hours

Security Best Practices

  1. Token Security: Store tokens in configuration, not in code
  2. Permission Minimization: Grant minimum required permissions
  3. Regular Audits: Review log files for suspicious activity
  4. API Security: Use HTTPS for API communication
  5. Backup Strategy: Regular backups of local whitelist files

Ready to secure your Minecraft server? Install CWhitelist today and experience professional-grade whitelist management!

常见问题

cwhitelist 支持哪些 Minecraft 版本?

cwhitelist 支持 Minecraft Java 版 1.21–26.3,共 17 个版本,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

cwhitelist 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分

SkyDreamLG 的其他作品

查看全部 →