# 🧠 System Overview
### Frontend (HTML/JS/CSS)
```
└── `/api/getListApp` – reads `listApp.txt` and fetches init data from OPNsense
└── `/update` – applies `app_controls` to Zenarmor via `fetch`
```
### Backend (Node.js + Express)
```
└── Uses Puppeteer for headless login
└── Session auto-refresh every 5 minutes
└── API forwarding with CSRF token + cookie
```
---
# 📁 Project Structure
```
├── public/
│ └── index.html ← Frontend UI
├── listApp.txt ← Line-separated JSON data of apps
├── server.js ← Express backend + OPNsense bridge
└── README.md ← This file
```
---
# 🛠️ Setup & Run
### 1. Install dependencies
```bash
npm install
```
> ⚠️ If using `node-fetch@3+`, it requires ESM.
> ✅ This script handles it via dynamic import.
---
### 2. Start the server
```bash
node server.js
```
* Login will be performed immediately.
* Session will auto-refresh every 5 minutes.
---
# 🔐 Config
* Change `SERVER_DOMAIN` in `public/index.html`
* Change `OPENSENSE_DOMAIN` in `server.js`