File: /var/www/net/autodisable.php
<?php
include "routeros_api.php"; // RouterOS API 類別
include "name.php"; // name 對應表
include "mysqllink.php"; // 資料庫連線
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$rosid = $_GET['rosid'] ?? '';
$nombro = $_GET['pppoeuser'] ?? '';
} else {
echo json_encode(["status" => "error", "message" => "Invalid request"]);
exit;
}
if (empty($rosid) || empty($nombro)) {
echo json_encode(["status" => "error", "message" => "Missing parameters"]);
exit;
}
// 取得對應社區 RouterOS 的 IP
$fblink = "SELECT * FROM $tbname";
$freslut = $dblink->query($fblink);
$router_ip = "";
if ($freslut) {
while ($nb = mysqli_fetch_array($freslut)) {
if ($nb["name"] === $rosid) {
$router_ip = $nb["address"];
break;
}
}
}
if (empty($router_ip)) {
echo json_encode(["status" => "error", "message" => "Router IP not found for rosid $rosid"]);
exit;
}
// 登入 RouterOS 並執行 disable PPPoE user
$API = new RouterosAPI();
$API->debug = false;
$mikrotik_ip = $router_ip.'.sn.mynetname.net';
if ($API->connect($mikrotik_ip, $mikrotik_username,$mikrotik_password)) {
// 搜尋 PPPoE 使用者
$API->write('/ppp/secret/print', false);
$API->write('?name=' . $nombro);
$pppoeUser = $API->read();
if (!empty($pppoeUser[0]['.id'])) {
$pppoe_id = $pppoeUser[0]['.id'];
// 執行 disable
$API->write('/ppp/secret/disable', false);
$API->write("=.id=" . $pppoe_id);
$API->read();
$API->disconnect();
echo json_encode([
"status" => "成功",
"message" => "將PPPoe帳號 '$nombro' 停用。"
]);
} else {
$API->disconnect();
echo json_encode([
"status" => "失敗",
"message" => "找不到PPPoe帳號 '$nombro',請確認帳號是否正確。"
]);
}
} else {
echo json_encode(["status" => "error", "message" => "Failed to connect to RouterOS $router_ip"]);
}