Migrate to a better architectured project
This commit is contained in:
parent
cc5ed5f23e
commit
b1b9eaa028
21 changed files with 2712 additions and 1540 deletions
102
README.md
Normal file
102
README.md
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue