How monkfish-iot/wrthub-ui works
WrtHub-UI is a web console for managing OpenWrt devices, including device details, wireless status and configuration, user access, and audit history. The main workflow is browser request → authenticated and permission-checked Gin routes → device discovery or device RPC → rendered response; wireless calls use UBUS and reuse LuCI authentication tokens. Local accounts, RBAC, and audit records provide the internal access-control layer. The README provides screenshots but little architectural documentation; links for unsampled handlers and integrations are limited to relationships visible in the supplied excerpts.
Main entry points: router.go Route registry · app.go App assembly · lucirpc/client.go LuCI RPC client · ubusrpc/client.go UBUS RPC client
Components 23
Web application
- HTTP startup
cmd/wrthub-ui/main.go - Route registry
internal/server/router.go - Login handlers
internal/server/auth_handlers.go - Device listing
internal/server/devices.go - Device details
internal/server/devices_detail.go - Device configuration
internal/server/devices_config.go - Wireless views
internal/server/wireless.go - User endpoint
internal/server/users.go - Audit views
internal/server/audit.go - App assembly
internal/server/app.go
Access and persistence
- Sessions and auth
internal/auth/auth.go - Permission checks
internal/auth/rbac.go - Local data store
internal/store/store.go
Device integration
- Device discovery API
internal/frpsclient/client.go - Device credentials
internal/service/credential.go - LuCI RPC client
internal/lucirpc/client.go - UBUS RPC client
internal/ubusrpc/client.go - Wireless operations
internal/service/wireless.go
Presentation
- Template renderer
internal/render/render.go - HTML templates
templates
Other components
- Operator
- OpenWrt device
- frps helper
Connections 28
- Operator → HTTP startup: sends requests
cmd/wrthub-ui/main.go - HTTP startup → App assembly: assembles app
cmd/wrthub-ui/main.go - HTTP startup → Route registry: mounts routes
cmd/wrthub-ui/main.go - Route registry → Login handlers: registers auth
internal/server/router.go - Route registry → Device listing: routes devices
internal/server/router.go - Route registry → Device details: routes details
internal/server/router.go - Route registry → Device configuration: routes config
internal/server/router.go - Route registry → Wireless views: routes wireless
internal/server/router.go - Route registry → User endpoint: routes users
internal/server/router.go - Route registry → Audit views: routes audit
internal/server/router.go - Route registry → Sessions and auth: checks sessions
internal/server/router.go - Login handlers → Sessions and auth: authenticates users
internal/server/auth_handlers.go - Login handlers → Local data store: records audit
internal/server/auth_handlers.go - App assembly → Local data store: opens database
internal/server/app.go - App assembly → Sessions and auth: creates authenticator
internal/server/app.go - App assembly → Device discovery API: constructs client
internal/server/app.go - App assembly → Device credentials: creates provider
internal/server/app.go - App assembly → LuCI RPC client: constructs client
internal/server/app.go - App assembly → UBUS RPC client: constructs client
internal/server/app.go - App assembly → Wireless operations: creates service
internal/server/app.go - App assembly → Template renderer: creates renderer
internal/server/app.go - Device credentials → Device discovery API: retrieves credentials
- LuCI RPC client → Device credentials: requests credentials
internal/lucirpc/client.go - LuCI RPC client → OpenWrt device: authenticates and calls
internal/lucirpc/client.go - UBUS RPC client → LuCI RPC client: reuses token
internal/ubusrpc/client.go - UBUS RPC client → OpenWrt device: calls UBUS
internal/ubusrpc/client.go - Wireless operations → UBUS RPC client: queries wireless
internal/service/wireless.go - Template renderer → HTML templates: renders pages