repeater/README.md

102 lines
2.8 KiB
Markdown

# 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