<?php
/**
 * Servidor de releases do MonitorPing
 * Coloque este arquivo em: releases.monitorping.com.br/
 *
 * Estrutura de arquivos esperada:
 *   releases/
 *     latest.version        → ex: "2025.04.26"
 *     monitorping-2025.04.26.tar.gz
 *     latest.tar.gz         → symlink ou cópia do arquivo mais recente
 */

$action = $_GET['file'] ?? '';
$baseDir = __DIR__;

// Valida que o request é para latest.version ou latest.tar.gz ou um release específico
$allowed = ['latest.version', 'latest.tar.gz'];

// Permite nomes de release com padrão seguro
if (preg_match('/^monitorping-[\d.]+\.tar\.gz$/', $action)) {
    $allowed[] = $action;
}

if (!in_array($action, $allowed, true)) {
    http_response_code(404);
    echo "Not found";
    exit;
}

$filePath = $baseDir . '/' . $action;
if (!file_exists($filePath)) {
    http_response_code(404);
    echo "Not found";
    exit;
}

if ($action === 'latest.version') {
    header('Content-Type: text/plain');
    echo trim(file_get_contents($filePath));
    exit;
}

// Serve o tarball
header('Content-Type: application/gzip');
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
header('Content-Length: ' . filesize($filePath));
readfile($filePath);
