<?php
session_start();
require('routeros_api.class.php');

// Tentukan jalur file konfigurasi (pastikan konsisten dengan index.php)
const MIKROTIK_FILE = __DIR__ . '/mikrotik_list.json';

// =====================================
// 1. Inisialisasi dan Validasi Data
// =====================================

// Baca file list Mikrotik
if (!file_exists(MIKROTIK_FILE)) {
    // Simpan pesan error ke session jika ingin ditampilkan di index.php
    $_SESSION['status_msg'] = '<p style="color:#e74c3c;font-weight:bold;padding:10px;border:1px solid #e74c3c;border-radius:5px;background:#442323;">❌ File konfigurasi Mikrotik tidak ditemukan.</p>';
    header("Location: index.php");
    exit;
}

$mikrotikList = json_decode(file_get_contents(MIKROTIK_FILE), true);
if (!is_array($mikrotikList)) {
    $mikrotikList = [];
}

// Pastikan parameter id ada dan valid (Casting menjadi integer untuk keamanan)
$id = (int)($_GET['id'] ?? -1);

if (!isset($mikrotikList[$id])) {
    $_SESSION['status_msg'] = '<p style="color:#e74c3c;font-weight:bold;padding:10px;border:1px solid #e74c3c;border-radius:5px;background:#442323;">❌ Data Mikrotik tidak ditemukan atau ID tidak valid.</p>';
    header("Location: index.php");
    exit;
}

$mt = $mikrotikList[$id];

// =====================================
// 2. Coba Koneksi dan Setup Sesi
// =====================================

$API = new RouterosAPI();
$API->debug = false;
$API->connect_timeout = 4; // Tambahkan timeout koneksi
$API->read_timeout = 7;    // Tambahkan timeout baca

try {
    if ($API->connect($mt['ip'], $mt['user'], $mt['pass'])) {

        // Simpan data koneksi ke session
        $_SESSION['ip']     = $mt['ip'];
        $_SESSION['user']   = $mt['user'];
        $_SESSION['pass']   = $mt['pass'];

        // Tambahan bot telegram per mikrotik
        $_SESSION['bot']    = $mt['bot_token'] ?? '';
        $_SESSION['chat']   = $mt['chat_id'] ?? '';
        
        $API->disconnect();

        // Pergi ke halaman monitoring AP
        header("Location: comment.php");
        exit;
    } else {
        // Gagal terhubung, lemparkan Exception
        throw new Exception("Gagal terhubung ke Mikrotik pada IP: " . htmlspecialchars($mt['ip']));
    }
} catch (Exception $e) {
    // Tangkap error koneksi dan simpan pesan ke session
    $_SESSION['status_msg'] = '<p style="color:#e74c3c;font-weight:bold;padding:10px;border:1px solid #e74c3c;border-radius:5px;background:#442323;">❌ Koneksi Gagal: ' . htmlspecialchars($e->getMessage()) . '</p>';
    
    // Pastikan koneksi ditutup (meski biasanya sudah ditutup jika gagal connect)
    if (isset($API) && $API->connected) {
        $API->disconnect();
    }
    
    // Kembali ke index.php
    header("Location: index.php");
    exit;
}