How s3ansh33p/unilan works
UniLAN Panel runs CS2 server instances and provides LAN users with live server control, event scheduling, and tournament management. The principal workflow is an admin launch/control request through the protected web handler to Docker, then server broadcast data flows through the CSTV relay and tracker into live status and tournament scores. Tournament setup, registration, seeding, match/game configuration, veto, and score recording are distinct stages backed by SQLite. README documents additional public/admin views and real-time updates; routes, handlers, and tracker excerpts establish representative wiring, while unsampled subsystem links are kept conservative.
Main entry points: handler.go Web handlers · routes.go HTTP routes · db.go SQLite data · tracker.go Game tracker
Components 22
Web and access
- HTTP routes
panel/internal/web/routes.go - Session auth
panel/internal/auth/auth.go - Web handlers
panel/internal/web/handler.go - WebSocket hub
panel/internal/web/wshub.go - Panel UI
panel/web/static/admin.js - Public UI
panel/web/static/app.js
Server operations
- Container manager
panel/internal/docker/docker.go - Launch config
panel/internal/docker/launch.go - RCON control
panel/internal/games/cs2/rcon/rcon.go - CS2 endpoints
panel/internal/games/cs2/web/cs2web.go
Live game data
- CSTV relay
panel/internal/games/cs2/cstv/relay.go - Game tracker
panel/internal/games/cs2/tracker/tracker.go
Events and tournaments
- SQLite data
panel/internal/db/db.go - Event schedule
panel/internal/db/schedule.go - Tournament setup
panel/internal/db/tournament.go - Team registration
panel/internal/db/teams.go - Bracket / scoring
panel/internal/db/bracket.go - Match games
panel/internal/db/games.go - Map veto
panel/internal/db/veto.go
Other components
- Event admin
- Player / viewer
- CS2 server
Connections 32
- Event admin → HTTP routes: uses
- Player / viewer → HTTP routes: browses
- HTTP routes → Session auth: guards
- HTTP routes → Web handlers: dispatches
- Web handlers → Container manager: manages servers
- Web handlers → RCON control: sends commands
- Web handlers → SQLite data: reads/writes
- Web handlers → WebSocket hub: publishes updates
- Panel UI → HTTP routes: requests
- Public UI → HTTP routes: requests
- Container manager → CS2 server: starts/stops
- CS2 server → CSTV relay: posts fragments
- HTTP routes → CSTV relay: serves streams
- Game tracker → CSTV relay: reads broadcast
- Web handlers → Game tracker: reads live state
- Game tracker → WebSocket hub: emits game updates
- Web handlers → Event schedule: manages schedule
- Web handlers → Tournament setup: manages tournaments
- Web handlers → Team registration: manages teams
- Web handlers → Bracket / scoring: seeds/records results
- Web handlers → Match games: configures games
- Web handlers → Map veto: manages veto
- Match games → Game tracker: links server tracking
- Game tracker → Bracket / scoring: records scores
- WebSocket hub → Panel UI: streams updates
- WebSocket hub → Public UI: streams updates
- Tournament setup → SQLite data: persists
- Team registration → SQLite data: persists
- Bracket / scoring → SQLite data: persists
- Match games → SQLite data: persists
- Map veto → SQLite data: persists
- Event schedule → SQLite data: persists