Files
2026-08-15 00:28:08 +07:00

130 lines
3.3 KiB
Markdown

# Telegram Expiry Notifier + Reset Button — Deploy ke Server
## Overview
Mengganti direct call Telegram API dari RouterOS dengan PHP intermediary agar bisa kirim inline button "Reset" untuk user hotspot yang expired.
### Arsitektur
```
RouterOS scheduler (Family)
↓ call HTTP GET
↓
notify-expire.php (server)
↓ POST ke Telegram API
↓
⚠️ User X expired [🔄 Reset] (ke topik Notif Expire)
↓ admin klik "Reset"
↓ callback_query = "reset_X" ke Bot API
↓
tg-cb-poll scheduler (router, tiap 60s)
↓ call HTTP GET
↓
telegram-cb.php (server)
↓ polling getUpdates → proses callback
↓ RouterOS API: set limit-uptime=0, comment="", reset-counters
↓
✅ User X has been reset (ke topik Notif Expire)
```
### Files
| File | Fungsi |
|------|--------|
| `notify-expire.php` | Kirim notif + inline button ke Telegram |
| `telegram-cb.php` | Polling callback query + eksekusi reset |
| `setup.sh` | Setup script untuk server (install PHP + deploy) |
### Prerequisites (Server)
- Linux server (tested on Ubuntu/Debian)
- PHP 7.4+ dengan `curl` extension
- Akses keluar ke `api.telegram.org` (port 443)
- Akses ke RouterOS API (`192.168.100.2:8728`)
- `curl` binary di PATH (untuk internal call dari PHP ke Telegram)
### Setup Cepat
```bash
# 1. Copy files ke server
scp notify-expire.php player@somewhere:/home/player/telegram-notif/
scp telegram-cb.php player@somewhere:/home/player/telegram-notif/
scp setup.sh player@somewhere:/home/player/telegram-notif/
# 2. SSH ke server
ssh player@somewhere
# 3. Run setup
cd ~/telegram-notif
chmod +x setup.sh
./setup.sh
# 4. Start PHP built-in server (background)
nohup php -S 0.0.0.0:8080 -t /home/player/telegram-notif > /tmp/telegram-notif.log 2>&1 &
```
### Update RouterOS Scheduler
#### A. Family scheduler — notifikasi
Ganti on-event:
```bash
# OLD
/tool fetch url=("https://api.telegram.org/bot" . $bot . "/sendMessage?chat_id=" . $chat . "&text=" . $msg) http-method=get keep-result=no
# NEW — arahkan ke IP Tailscale server
/tool fetch url=("http://100.100.31.46:8080/notify-expire.php?key=msr-2026-reset&name=" . $name) http-method=get keep-result=no
```
#### B. Tambah scheduler polling callback
```bash
/system scheduler add name=tg-cb-poll interval=00:01:00 start-time=startup on-event=":delay 10s;/tool fetch url=\"http://100.100.31.46:8080/telegram-cb.php?key=msr-2026-reset\" http-method=get keep-result=no" disabled=no
```
### Secret Key
`msr-2026-reset` — shared secret di URL parameter `key`. Diganti sesuai kebutuhan.
### Bot Config
- Token: `5115036608:AAGeyXVq5eNvdAkaCQHU9NfH16uAAiSKiuk`
- Group: `-1002554941429` (laporkan)
- Topic ID: `42` (Notif Expire)
### RouterOS Credentials (untuk callback reset)
- IP: `192.168.100.2`
- User: `mi4`
- Password: `m14`
### Troubleshooting
**Logs**:
```bash
tail -f /tmp/telegram-notif.log
```
**Test notifikasi**:
```bash
curl "http://localhost:8080/notify-expire.php?key=msr-2026-reset&name=test_user"
```
**Test reset langsung**:
```bash
curl "http://localhost:8080/telegram-cb.php?key=msr-2026-reset&test=test_user"
```
**PHP curl extension**:
```bash
sudo apt install php-curl
```
### File Reference
Source files di `C:\Users\Admin\dev\Mikhmon Server\mikhmon\`:
- `notify-expire.php`
- `process/telegram-cb.php`
- `lib/routeros_api.class.php` (dependency untuk koneksi ke RouterOS)