# zfx-t/openwrt-ruijie-minieap architecture

> Architecture diagram of the GitHub repository zfx-t/openwrt-ruijie-minieap, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zfx-t/openwrt-ruijie-minieap
- Repository: https://github.com/zfx-t/openwrt-ruijie-minieap

## Overview

This repository provides OpenWrt Ruijie 802.1X authentication and recovery so devices behind the router can share campus-network access. The main flow is credentials and interface settings → minieap RJv3 authentication → post-auth DHCP renewal when needed → WAN NAT for LAN/Wi-Fi clients. The watchdog detects outages, records diagnostics, and restarts authentication and renewal. The graph follows README-documented behavior; source excerpts were unavailable, so it does not infer undocumented calls or internal implementation details.

Main entry points: [`files/usr/bin/ruijie-net-watchdog.sh`](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-net-watchdog.sh) (Network watchdog), [`files/usr/bin/ruijie-minieap-ctl`](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-minieap-ctl) (Control CLI), [`files/etc/init.d/ruijie-minieap`](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/etc/init.d/ruijie-minieap) (Init service), [`files/usr/bin/ruijie-post-auth.sh`](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-post-auth.sh) (Post-auth DHCP)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_env["Credential settings<br/>[env.example]"]
  node_ctl["Control CLI"]
  node_service["Init service<br/>[ruijie-minieap]"]
  node_minieap["minieap RJv3"]
end

subgraph group_recovery["Recovery"]
  node_postauth["Post-auth DHCP"]
  node_watchdog["Network watchdog"]
  node_connectivity["Connectivity probes"]
  node_persistentlog[("Persistent log")]
end

subgraph group_router["Router networking"]
  node_routerwan["OpenWrt WAN"]
  node_nat["WAN masquerade"]
end

node_operator(("Router operator"))
node_campus(("Campus network"))
node_scheduler["Cron scheduler"]
node_clients(("LAN/Wi-Fi clients"))

node_operator -->|"sets credentials"| node_env
node_operator -->|"runs commands"| node_ctl
node_ctl -->|"starts authentication"| node_minieap
node_service -->|"manages process"| node_minieap
node_minieap -->|"authenticates via 802.1X"| node_campus
node_minieap -->|"uses WAN interface"| node_routerwan
node_minieap -->|"requests post-auth DHCP"| node_routerwan
node_scheduler -->|"runs periodically"| node_watchdog
node_watchdog -->|"checks connectivity"| node_connectivity
node_watchdog -->|"writes snapshots"| node_persistentlog
node_watchdog -->|"restarts offline service"| node_service
node_watchdog -->|"triggers renewal"| node_postauth
node_postauth -->|"renews DHCP lease"| node_routerwan
node_clients -->|"sends traffic"| node_nat
node_nat -->|"masquerades WAN traffic"| node_campus

click node_env "https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/etc/ruijie/env.example"
click node_ctl "https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-minieap-ctl"
click node_service "https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/etc/init.d/ruijie-minieap"
click node_postauth "https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-post-auth.sh"
click node_watchdog "https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-net-watchdog.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_env,node_ctl,node_service,node_minieap,node_clients toneBlue
class node_postauth,node_watchdog,node_connectivity,node_persistentlog toneAmber
class node_routerwan,node_nat,node_operator toneMint
class node_campus toneIndigo
class node_scheduler toneRose
```

## Components

### Authentication

- [Credential settings](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/etc/ruijie/env.example): `files/etc/ruijie/env.example`
- [Control CLI](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-minieap-ctl): `files/usr/bin/ruijie-minieap-ctl`
- [Init service](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/etc/init.d/ruijie-minieap): `files/etc/init.d/ruijie-minieap`
- **minieap RJv3**

### Recovery

- [Post-auth DHCP](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-post-auth.sh): `files/usr/bin/ruijie-post-auth.sh`
- [Network watchdog](https://github.com/zfx-t/openwrt-ruijie-minieap/blob/main/files/usr/bin/ruijie-net-watchdog.sh): `files/usr/bin/ruijie-net-watchdog.sh`
- **Connectivity probes**
- **Persistent log**

### Router networking

- **OpenWrt WAN**
- **WAN masquerade**

### Other components

- **Router operator**
- **Campus network**
- **Cron scheduler**
- **LAN/Wi-Fi clients**

## Connections

- Router operator → Credential settings: sets credentials (evidence: `README.md`)
- Router operator → Control CLI: runs commands (evidence: `README.md`)
- Control CLI → minieap RJv3: starts authentication (evidence: `README.md`)
- Init service → minieap RJv3: manages process (evidence: `README.md`)
- minieap RJv3 → Campus network: authenticates via 802.1X (evidence: `README.md`)
- minieap RJv3 → OpenWrt WAN: uses WAN interface (evidence: `README.md`)
- minieap RJv3 → OpenWrt WAN: requests post-auth DHCP (evidence: `README.md`)
- Cron scheduler → Network watchdog: runs periodically (evidence: `README.md`)
- Network watchdog → Connectivity probes: checks connectivity (evidence: `README.md`)
- Network watchdog → Persistent log: writes snapshots (evidence: `README.md`)
- Network watchdog → Init service: restarts offline service (evidence: `README.md`)
- Network watchdog → Post-auth DHCP: triggers renewal (evidence: `README.md`)
- Post-auth DHCP → OpenWrt WAN: renews DHCP lease (evidence: `README.md`)
- LAN/Wi-Fi clients → WAN masquerade: sends traffic (evidence: `README.md`)
- WAN masquerade → Campus network: masquerades WAN traffic (evidence: `README.md`)
