<?php
/**
 * api/device/dns.php — GET/POST /api/device/dns
 *
 * Devuelve la lista de servidores DNS gestionados por el admin. La app prueba
 * las credenciales (username/password que escribe el usuario) contra cada DNS
 * vía player_api.php hasta que uno autentique (auth=1) e inicia sesión en ese.
 *
 * Response: { "dns": [ { "title": "...", "url": "http://host:port" }, ... ] }
 */

declare(strict_types=1);

require_once __DIR__ . '/../../lib/helpers.php';
require_once __DIR__ . '/../../lib/device.php';

try {
    $pdo  = db();
    $rows = $pdo->query('SELECT title, url FROM dns ORDER BY id ASC')->fetchAll(PDO::FETCH_ASSOC);

    $list = [];
    foreach ($rows as $row) {
        $url = trim((string) ($row['url'] ?? ''));
        if ($url === '') {
            continue;
        }
        $list[] = [
            'title' => (string) ($row['title'] ?? ''),
            'url'   => $url,
        ];
    }

    json_out(['dns' => $list], 200);
} catch (Throwable $ex) {
    error_log('[api/device/dns] ' . $ex->getMessage());
    json_out(['dns' => [], 'error' => 'server_error'], 500);
}
