# MikroTik DHCP RADIUS SQL Manager - v6 NAS SQL

This version keeps the v6 logic and adds one SQL table for RADIUS NAS/settings:

- `radius_nas` = allowed MikroTik/NAS IP + secret + RADIUS port
- `clients` = MAC -> Framed-IP-Address + Mikrotik-Rate-Limit + Mikrotik-Address-List
- Unregistered MAC returns `Access-Reject`

## Install

```bash
cd /var/www/html/mikrotik-radius-full-v6-nas-sql
mysql -u root -p < schema.sql
cd node-radius
npm install
node server.js
```

## Important

Edit DB connection in:

```txt
node-radius/server.js
admin/config.php
```

Default DB:

```txt
host: 127.0.0.1
user: root
password: rootroot
database: radius_db
```

## Admin Panel

```txt
http://SERVER_IP/admin
admin / admin123
```

Pages:

- Clients
- NAS / Settings
- Logs

## NAS / Settings

Open `NAS / Settings` and add your MikroTik source IP.

Example:

```txt
Name: MikroTik Main
NAS IP: 192.168.88.1
Secret: MySecret
Port: 1812
Status: active
```

`port` and `secret` are now loaded from SQL. If you change port/secret, restart the service:

```bash
systemctl restart radius-dhcp
```

## MikroTik

```rsc
/radius
add service=dhcp address=RADIUS_SERVER_IP secret=MySecret authentication-port=1812 timeout=1000ms

/ip dhcp-server
set dhcp1 use-radius=yes
```

## systemd service

```bash
nano /etc/systemd/system/radius-dhcp.service
```

```ini
[Unit]
Description=Green Networks MikroTik DHCP RADIUS Server
After=network-online.target mysql.service mariadb.service
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/var/www/html/mikrotik-radius-full-v6-nas-sql/node-radius
ExecStart=/usr/bin/node /var/www/html/mikrotik-radius-full-v6-nas-sql/node-radius/server.js
Restart=always
RestartSec=3
User=root
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
```

```bash
systemctl daemon-reload
systemctl enable radius-dhcp
systemctl start radius-dhcp
journalctl -u radius-dhcp -f
```


## Client Session-Timeout
Clients table includes `session_timeout` only as an extra client field. Removed fields: Customer, Phone, Comment.
Set timeout seconds from SQL/Admin panel. Example:

```sql
UPDATE clients SET session_timeout = 3600 WHERE mac = 'AA:BB:CC:DD:EE:FF';
```

RADIUS Access-Accept returns `Session-Timeout` from SQL together with `Framed-IP-Address`, `Mikrotik-Rate-Limit`, and `Mikrotik-Address-List`.
