<?php
require_once __DIR__ . '/../db.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/functions.php';

require_admin();
header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'POST required']);
    exit;
}

if (!csrf_check($_POST['csrf_token'] ?? null)) {
    http_response_code(403);
    echo json_encode(['error' => 'CSRF inválido.']);
    exit;
}

$triggerFile = '/opt/monitorping/.update_requested';
$statusFile  = '/opt/monitorping/.update_status.json';
$logFile     = '/opt/monitorping/.update.log';

// Verifica se já há uma atualização em andamento
if (file_exists($statusFile)) {
    $s = @json_decode(@file_get_contents($statusFile), true);
    if (($s['status'] ?? '') === 'running') {
        echo json_encode(['ok' => false, 'error' => 'Atualização já em andamento.']);
        exit;
    }
}

// Limpa log anterior
@file_put_contents($logFile, '');
@chmod($logFile, 0644);

// Escreve o arquivo-trigger que o watcher systemd detecta
if (@file_put_contents($triggerFile, time()) === false) {
    http_response_code(500);
    echo json_encode(['error' => 'Não foi possível criar o arquivo trigger. Verifique as permissões de /opt/monitorping.']);
    exit;
}

// Status inicial
@file_put_contents($statusFile, json_encode([
    'status'    => 'triggered',
    'message'   => 'Aguardando watcher iniciar...',
    'timestamp' => date('Y-m-d H:i:s'),
]));
@chmod($statusFile, 0644);

echo json_encode(['ok' => true]);
