# Travel Router Control A Go application for controlling a mini travel router with dual WiFi interfaces and Ethernet connectivity. The router can operate as a WiFi repeater, connecting to upstream networks while providing a hotspot for client devices. ## Features - WiFi network scanning and connection management - Hotspot (access point) configuration and control - Connected device monitoring - Real-time system logs via WebSocket - RESTful API following OpenAPI 3.0 specification - Web interface for easy management ## Architecture The application follows a clean architecture pattern: ``` . ├── cmd/ │ └── repeater/ # Application entry point │ ├── main.go │ └── static/ # Embedded web assets ├── internal/ │ ├── api/ # HTTP API layer │ │ ├── router.go # Gin router setup │ │ └── handlers/ # HTTP handlers │ ├── app/ # Application logic & lifecycle │ ├── device/ # Device management │ ├── hotspot/ # Hotspot control │ ├── logging/ # Logging system │ ├── models/ # Data structures │ └── wifi/ # WiFi operations (wpa_supplicant via D-Bus) ├── openapi.yaml # API specification └── go.mod ``` ## Building ```bash go build -o repeater ./cmd/repeater ``` ## Running ```bash sudo ./repeater ``` The application requires root privileges to: - Access D-Bus system bus for wpa_supplicant - Control systemd services (hostapd) - Read DHCP leases and ARP tables The server will start on port 8080. ## API Endpoints ### WiFi Operations - `GET /api/wifi/scan` - Scan for available networks - `POST /api/wifi/connect` - Connect to a network - `POST /api/wifi/disconnect` - Disconnect from current network ### Hotspot Operations - `POST /api/hotspot/config` - Configure hotspot settings - `POST /api/hotspot/toggle` - Enable/disable hotspot ### Device Management - `GET /api/devices` - Get connected devices ### System - `GET /api/status` - Get system status - `GET /api/logs` - Get system logs - `DELETE /api/logs` - Clear logs ### WebSocket - `GET /ws/logs` - Real-time log streaming See `openapi.yaml` for complete API documentation. ## Configuration The application uses the following system resources: - **WiFi Interface**: `wlan0` (for upstream connection) - **AP Interface**: `wlan1` (for hotspot) - **Hostapd Config**: `/etc/hostapd/hostapd.conf` - **WPA Supplicant Config**: `/etc/wpa_supplicant/wpa_supplicant.conf` These can be modified in the respective package constants. ## Dependencies - **Gin**: HTTP web framework - **godbus**: D-Bus client for wpa_supplicant control - **gorilla/websocket**: WebSocket support - **wpa_supplicant**: WiFi connection management - **hostapd**: Hotspot functionality ## License MIT