<?php
// admin/mtwatch_allowlist.php - قائمة سماح تنبيهات مراقبة MikroTik
$page_title = 'قائمة سماح تنبيهات الشبكة';
$uaAndroidAllowlist = ((string)($_GET['ua_android'] ?? '') === '1')
  || stripos((string)($_SERVER['HTTP_USER_AGENT'] ?? ''), 'NetworkCustomersAndroid/') !== false;
$UA_PAGE_CSS = ['assets/css/pages/mtwatch_allowlist_admin.css'];
if ($uaAndroidAllowlist) $UA_PAGE_CSS[] = 'assets/css/android_mtwatch_allowlist.css';
if (session_status() === PHP_SESSION_NONE) session_start();
$UA_FORCE_DESIGN_V2 = true;
require_once __DIR__ . '/header.php';
require_once __DIR__ . '/sidebar.php';
require_once __DIR__ . '/subscriber_mikrotik_watch_lib.php';

if (!($conn instanceof mysqli)) {
  echo '<div class="content-wrapper ua-manual-page"><section class="content"><div class="container-fluid p-4"><div class="alert alert-danger">فشل الاتصال بقاعدة البيانات.</div></div></section></div>';
  require_once __DIR__ . '/footer.php';
  exit;
}
mtwatch_ensure_schema($conn);

function mtw_h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }

$msg = '';
$err = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $act = (string)($_POST['act'] ?? '');
  if ($act === 'add') {
    $kind = strtolower(trim((string)($_POST['kind'] ?? '')));
    $value1 = trim((string)($_POST['value1'] ?? ''));
    $value2 = trim((string)($_POST['value2'] ?? ''));
    $label = trim((string)($_POST['label'] ?? ''));
    $note = trim((string)($_POST['note'] ?? ''));
    $allowedKinds = ['mac','ip','ip_cidr','ip_prefix','interface','username','source','mac_ip'];
    if (!in_array($kind, $allowedKinds, true)) $err = 'نوع السماح غير صحيح.';
    elseif ($value1 === '') $err = 'القيمة مطلوبة.';
    else {
      if ($kind === 'mac') $value1 = mtwatch_norm_mac($value1);
      if ($kind === 'mac_ip') $value1 = mtwatch_norm_mac($value1);
      if (($kind === 'mac' || $kind === 'mac_ip') && $value1 === '') $err = 'صيغة MAC غير صحيحة.';
      else {
        $stmt = @$conn->prepare("INSERT INTO mtwatch_allowlist (kind,value1,value2,label,note,enabled,created_at) VALUES (?,?,?,?,?,1,NOW()) ON DUPLICATE KEY UPDATE label=VALUES(label), note=VALUES(note), enabled=1, updated_at=NOW()");
        if ($stmt) {
          $stmt->bind_param('sssss', $kind, $value1, $value2, $label, $note);
          if (@$stmt->execute()) $msg = 'تمت إضافة عنصر السماح.'; else $err = 'تعذر حفظ عنصر السماح.';
          $stmt->close();
        } else $err = 'تعذر تجهيز أمر الحفظ.';
      }
    }
  } elseif ($act === 'toggle') {
    $id = (int)($_POST['id'] ?? 0);
    if ($id > 0) {
      @ $conn->query("UPDATE mtwatch_allowlist SET enabled=IF(enabled=1,0,1), updated_at=NOW() WHERE id={$id} LIMIT 1");
      $msg = 'تم تغيير حالة عنصر السماح.';
    }
  } elseif ($act === 'delete') {
    $id = (int)($_POST['id'] ?? 0);
    if ($id > 0) {
      @ $conn->query("DELETE FROM mtwatch_allowlist WHERE id={$id} LIMIT 1");
      $msg = 'تم حذف عنصر السماح.';
    }
  }
}

$rows = [];
$rs = @$conn->query("SELECT * FROM mtwatch_allowlist ORDER BY enabled DESC, id DESC");
if ($rs) while ($r = $rs->fetch_assoc()) $rows[] = $r;
if ($uaAndroidAllowlist) {
  $allowEnabled = count(array_filter($rows, function($row){ return (int)($row['enabled'] ?? 0) === 1; }));
  require __DIR__ . '/android_mtwatch_allowlist.php';
  require_once __DIR__ . '/footer.php';
  exit;
}
?>
<div class="content-wrapper ua-manual-page">
  <section class="content">
    <div class="container-fluid">
<div class="mtw-page">
  <div class="mtw-card">
    <h1 class="mtw-title">قائمة سماح تنبيهات MikroTik</h1>
    <div class="mtw-muted">أي عنصر تضيفه هنا سيبقى مرصوداً في جدول المراقبة، لكن لن يظهر كتنبيه ولن يُسجل كسجل حركة للمشترك عند مطابقته.</div>
  </div>

  <?php if ($msg): ?><div class="mtw-msg ok"><?= mtw_h($msg) ?></div><?php endif; ?>
  <?php if ($err): ?><div class="mtw-msg err"><?= mtw_h($err) ?></div><?php endif; ?>

  <div class="mtw-card">
    <h2 class="mtw-title">إضافة عنصر سماح</h2>
    <form method="post">
      <input type="hidden" name="act" value="add">
      <div class="mtw-grid">
        <div class="mtw-field">
          <label>النوع</label>
          <select name="kind">
            <option value="ip">IP محدد</option>
            <option value="ip_cidr">شبكة CIDR مثل 10.30.98.0/24</option>
            <option value="ip_prefix">بداية IP مثل 10.30.98.</option>
            <option value="mac">MAC محدد</option>
            <option value="interface">Interface مثل vlan99-gmt</option>
            <option value="username">اسم حساب PPPoE</option>
            <option value="mac_ip">MAC + IP معاً</option>
            <option value="source">مصدر مثل arp أو neighbor</option>
          </select>
        </div>
        <div class="mtw-field">
          <label>القيمة الأساسية</label>
          <input name="value1" placeholder="10.30.98.250 أو vlan99-gmt أو MAC">
        </div>
        <div class="mtw-field">
          <label>القيمة الثانية، فقط لـ MAC + IP</label>
          <input name="value2" placeholder="IP عند اختيار mac_ip">
        </div>
        <div class="mtw-field">
          <label>اسم توضيحي</label>
          <input name="label" placeholder="مثلاً: جهاز الإدارة">
        </div>
        <div class="mtw-field ua-u-grid-through-before-last">
          <label>ملاحظة</label>
          <textarea name="note" placeholder="سبب السماح"></textarea>
        </div>
        <div class="mtw-actions">
          <button class="mtw-btn gold" type="submit">إضافة / تحديث</button>
        </div>
      </div>
    </form>
  </div>

  <div class="mtw-card">
    <h2 class="mtw-title">العناصر الحالية</h2>
    <table class="mtw-table">
      <thead><tr><th>#</th><th>الحالة</th><th>النوع</th><th>القيمة</th><th>القيمة الثانية</th><th>الاسم</th><th>الملاحظة</th><th>إجراء</th></tr></thead>
      <tbody>
      <?php if (!$rows): ?>
        <tr><td colspan="8" class="mtw-muted">لا توجد عناصر سماح.</td></tr>
      <?php else: foreach ($rows as $r): ?>
        <tr>
          <td><?= (int)$r['id'] ?></td>
          <td><span class="mtw-badge <?= ((int)$r['enabled']===1?'on':'off') ?>"><?= ((int)$r['enabled']===1?'فعال':'متوقف') ?></span></td>
          <td><?= mtw_h($r['kind']) ?></td>
          <td><?= mtw_h($r['value1']) ?></td>
          <td><?= mtw_h($r['value2']) ?></td>
          <td><?= mtw_h($r['label']) ?></td>
          <td><?= mtw_h($r['note']) ?></td>
          <td class="ua-u-nowrap">
            <form method="post" class="ua-u-inline"><input type="hidden" name="act" value="toggle"><input type="hidden" name="id" value="<?= (int)$r['id'] ?>"><button class="mtw-btn gray" type="submit"><?= ((int)$r['enabled']===1?'تعطيل':'تفعيل') ?></button></form>
            <form method="post" class="ua-u-inline" onsubmit="return confirm('حذف عنصر السماح؟')"><input type="hidden" name="act" value="delete"><input type="hidden" name="id" value="<?= (int)$r['id'] ?>"><button class="mtw-btn red" type="submit">حذف</button></form>
          </td>
        </tr>
      <?php endforeach; endif; ?>
      </tbody>
    </table>
  </div>
</div>
    </div>
  </section>
</div>
<?php require_once __DIR__ . '/footer.php'; ?>
