102 lines
2.8 KiB
Markdown
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
|