No description
- Go 68.9%
- JavaScript 15%
- CSS 9%
- HTML 6.9%
- Makefile 0.2%
| cmd/repeater | ||
| internal | ||
| .gitignore | ||
| generate.go | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| oapi-gin.cfg.yaml | ||
| oapi-types.cfg.yaml | ||
| openapi.yaml | ||
| README.md | ||
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
go build -o repeater ./cmd/repeater
Running
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 networksPOST /api/wifi/connect- Connect to a networkPOST /api/wifi/disconnect- Disconnect from current network
Hotspot Operations
POST /api/hotspot/config- Configure hotspot settingsPOST /api/hotspot/toggle- Enable/disable hotspot
Device Management
GET /api/devices- Get connected devices
System
GET /api/status- Get system statusGET /api/logs- Get system logsDELETE /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