# EQ2Go Login Server A modern Go implementation of the EverQuest II login server, providing client authentication, character management, and world server coordination. ## Features - **Client Authentication**: MD5-hashed password authentication with account management - **Character Management**: Character list, creation, deletion, and play requests - **World Server Coordination**: Registration and status tracking of world servers - **Web Administration**: HTTP interface for monitoring and management - **Database Integration**: SQLite database with automatic table initialization - **UDP Protocol**: EverQuest II compatible UDP protocol implementation ## Quick Start ### Building ```bash go build ./cmd/login_server ``` ### Running ```bash # Run with defaults (creates login_config.json if missing) ./login_server # Run with custom configuration ./login_server -config custom_login.json # Run with overrides ./login_server -listen-port 6000 -web-port 8082 -db custom.db ``` ### Configuration On first run, a default `login_config.json` will be created: ```json { "listen_addr": "0.0.0.0", "listen_port": 5999, "max_clients": 1000, "web_addr": "0.0.0.0", "web_port": 8081, "database_path": "login.db", "server_name": "EQ2Go Login Server", "log_level": "info", "world_servers": [] } ``` ## Web Interface Access the web administration interface at `http://localhost:8081` (or configured web_port). Features: - Real-time server statistics - Connected client monitoring - World server status - Client management (kick clients) ## Database The login server uses SQLite by default with the following tables: - `login_accounts` - User account information - `characters` - Character data for character selection - `server_stats` - Server statistics and monitoring data ## Command Line Options - `-config` - Path to configuration file (default: login_config.json) - `-listen-addr` - Override listen address - `-listen-port` - Override listen port - `-web-port` - Override web interface port - `-db` - Override database path - `-log-level` - Override log level (debug, info, warn, error) - `-name` - Override server name - `-version` - Show version information ## Architecture The login server follows the EQ2Go architecture patterns: - **Server**: Main server instance managing UDP connections and web interface - **ClientList**: Thread-safe management of connected clients - **WorldList**: Management of registered world servers - **Database Integration**: Uses zombiezen SQLite with proper connection pooling - **UDP Protocol**: Compatible with EverQuest II client expectations ## Development The login server integrates with the broader EQ2Go ecosystem: - Uses `internal/udp` for EverQuest II protocol handling - Uses `internal/database` for data persistence - Follows Go concurrency patterns with proper synchronization - Implements comprehensive error handling and logging ## Next Steps To complete the login server implementation: 1. Add character creation functionality 2. Add character deletion functionality 3. Implement world server communication protocol 4. Add user registration/account creation 5. Add password reset functionality 6. Add account management features