<?php
// Caminho para o .phar do GeoIP2
require_once '/var/www/signals/geoip2.phar';

use MaxMind\Db\Reader;

// Token obrigatório para uso da API
$TOKEN_ESPERADO = 'longb2025';
if (!isset($_GET['token']) || $_GET['token'] !== $TOKEN_ESPERADO) {
    http_response_code(403);
    header('Content-Type: application/json');
    echo json_encode(['error' => 'Token inválido ou ausente']);
    exit;
}

// Obtém o IP via ?ip=... ou do visitante
$ip = $_GET['ip'] ?? $_SERVER['REMOTE_ADDR'];

// Caminho para o banco de dados MaxMind
$dbPath = '/var/lib/GeoIP/GeoLite2-City.mmdb';

try {
    $reader = new Reader($dbPath);
    $record = $reader->get($ip);

    // Monta a resposta
    $response = [
        'ip' => $ip,
        'country' => $record['country']['iso_code'] ?? null,
        'region' => $record['subdivisions'][0]['iso_code'] ?? null,
        'city' => $record['city']['names']['en'] ?? null
    ];

    header('Content-Type: application/json');
    echo json_encode($response);

} catch (Exception $e) {
    http_response_code(500);
    header('Content-Type: application/json');
    echo json_encode([
        'error' => 'GeoIP lookup failed',
        'message' => $e->getMessage()
    ]);
}
