docs(master-link): Add README for both master-link packages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e74e44158f
commit
b516609bcc
63
package/secubox/luci-app-master-link/README.md
Normal file
63
package/secubox/luci-app-master-link/README.md
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# LuCI App Master-Link
|
||||||
|
|
||||||
|
LuCI web interface for SecuBox Master-Link mesh management.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
opkg install luci-app-master-link
|
||||||
|
```
|
||||||
|
|
||||||
|
Requires `secubox-master-link` (pulled automatically as dependency).
|
||||||
|
|
||||||
|
## Access
|
||||||
|
|
||||||
|
**SecuBox > Mesh Management** in the LuCI menu.
|
||||||
|
|
||||||
|
## Tabs
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
|
Adapts to the node's role:
|
||||||
|
|
||||||
|
- **Master**: Role badge, mesh stats (peers, depth, chain height), Generate Token button with QR-ready URL
|
||||||
|
- **Peer**: Role badge, upstream master info, own depth, sync status
|
||||||
|
- **Sub-master**: Upstream info + downstream peer count
|
||||||
|
|
||||||
|
### Join Requests (master/sub-master only)
|
||||||
|
|
||||||
|
- Table: hostname, IP, fingerprint, timestamp, status
|
||||||
|
- Actions: Approve, Reject, Promote to sub-master
|
||||||
|
- Auto-refresh every 10 seconds
|
||||||
|
|
||||||
|
### Mesh Tree
|
||||||
|
|
||||||
|
- Hierarchical view of master → peers → sub-masters → their peers
|
||||||
|
- Depth indicators and role badges
|
||||||
|
- Online/offline status per node
|
||||||
|
|
||||||
|
## RPCD Methods
|
||||||
|
|
||||||
|
All calls go through `luci.master_link` ubus object:
|
||||||
|
|
||||||
|
| Method | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `status` | Node status and mesh stats |
|
||||||
|
| `peers` | List all peers with join details |
|
||||||
|
| `tree` | Mesh topology tree |
|
||||||
|
| `token_generate` | Create one-time join token |
|
||||||
|
| `approve` | Approve, reject, or promote a peer |
|
||||||
|
| `token_cleanup` | Remove expired tokens |
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `root/usr/share/luci/menu.d/luci-app-master-link.json` | Menu entry |
|
||||||
|
| `root/usr/share/rpcd/acl.d/luci-app-master-link.json` | ACL permissions |
|
||||||
|
| `root/usr/libexec/rpcd/luci.master_link` | RPCD endpoint |
|
||||||
|
| `htdocs/luci-static/resources/view/secubox/master-link.js` | LuCI view |
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Apache-2.0
|
||||||
98
package/secubox/secubox-master-link/README.md
Normal file
98
package/secubox/secubox-master-link/README.md
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# SecuBox Master-Link
|
||||||
|
|
||||||
|
Secure mesh onboarding for SecuBox appliances. A master node generates one-time join tokens, serves the secubox IPK bundle, and approves new peers via blockchain-backed trust. Supports gigogne (nested) hierarchy where approved nodes can become sub-masters.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
```
|
||||||
|
MASTER (depth 0)
|
||||||
|
├── Peer A (depth 1)
|
||||||
|
├── Sub-Master B (depth 1)
|
||||||
|
│ ├── Peer C (depth 2)
|
||||||
|
│ └── Peer D (depth 2)
|
||||||
|
└── Peer E (depth 1)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
opkg install secubox-master-link luci-app-master-link
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# /etc/config/master-link
|
||||||
|
|
||||||
|
config master-link 'main'
|
||||||
|
option enabled '1'
|
||||||
|
option role 'master' # master | peer | sub-master
|
||||||
|
option upstream '' # upstream master IP (peers/sub-masters)
|
||||||
|
option depth '0' # gigogne depth (0 = root master)
|
||||||
|
option max_depth '3' # max nesting depth
|
||||||
|
option token_ttl '3600' # token validity in seconds
|
||||||
|
option auto_approve '0' # auto-approve join requests
|
||||||
|
option ipk_path '/www/secubox-feed/secubox-master-link_*.ipk'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Join Protocol
|
||||||
|
|
||||||
|
1. **Master generates token** — one-time HMAC-SHA256 token with TTL
|
||||||
|
2. **New node opens landing page** — `http://<master>:7331/master-link/?token=...`
|
||||||
|
3. **New node downloads IPK** — token-validated download via `/api/master-link/ipk`
|
||||||
|
4. **New node sends join request** — fingerprint + address submitted to master
|
||||||
|
5. **Master approves** — TOFU key exchange, blockchain block recorded, peer added to mesh
|
||||||
|
6. **Optional: promote to sub-master** — approved peer can onboard its own peers
|
||||||
|
|
||||||
|
## CGI Endpoints
|
||||||
|
|
||||||
|
All served on port 7331 under `/api/master-link/`.
|
||||||
|
|
||||||
|
| Endpoint | Method | Auth | Description |
|
||||||
|
|----------|--------|------|-------------|
|
||||||
|
| `/token` | POST | Local only | Generate join token |
|
||||||
|
| `/join` | POST | Token | Submit join request |
|
||||||
|
| `/approve` | POST | Local only | Approve/reject peer |
|
||||||
|
| `/status` | GET | Public/Local | Mesh status |
|
||||||
|
| `/ipk` | POST | Token | Download secubox IPK |
|
||||||
|
|
||||||
|
## RPCD API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ubus call luci.master_link status '{}'
|
||||||
|
ubus call luci.master_link peers '{}'
|
||||||
|
ubus call luci.master_link tree '{}'
|
||||||
|
ubus call luci.master_link token_generate '{}'
|
||||||
|
ubus call luci.master_link approve '{"fingerprint":"...","action":"approve"}'
|
||||||
|
ubus call luci.master_link approve '{"fingerprint":"...","action":"reject","reason":"..."}'
|
||||||
|
ubus call luci.master_link approve '{"fingerprint":"...","action":"promote"}'
|
||||||
|
ubus call luci.master_link token_cleanup '{}'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Blockchain Block Types
|
||||||
|
|
||||||
|
| Type | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `join_request` | New node requesting to join |
|
||||||
|
| `peer_approved` | Master approved peer |
|
||||||
|
| `peer_rejected` | Master rejected peer |
|
||||||
|
| `peer_promoted` | Peer promoted to sub-master |
|
||||||
|
| `token_generated` | Audit: token was created |
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- **Tokens**: HMAC-SHA256, one-time use, time-limited (default 1h)
|
||||||
|
- **TOFU**: First join establishes trust via fingerprint exchange
|
||||||
|
- **Depth limiting**: `max_depth` prevents unbounded nesting
|
||||||
|
- **Chain integrity**: All actions recorded as blockchain blocks
|
||||||
|
- **Audit trail**: Token lifecycle and peer events queryable via chain
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- `secubox-p2p` — mesh networking and blockchain
|
||||||
|
- `openssl-util` — HMAC token generation
|
||||||
|
- `curl` — peer notification
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Apache-2.0
|
||||||
Loading…
Reference in New Issue
Block a user