init: workspace opencode sync
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user