<?php
require_once(__DIR__ . "/db.php");

/* =========================================================================
   FUNCIONES DE ENCRIPTACIÓN Y DESENCRIPTACIÓN DE IP
   - Modo AES-256-ECB para que el cifrado sea siempre igual
   ========================================================================= */

/**
 * Encriptar // Desencriptar IP 
 */
if (!function_exists('encryptIP')) {
    function encryptIP($ip, $key256) {
        return base64_encode(openssl_encrypt($ip, "AES-256-ECB", $key256, 0));
    }
}

if (!function_exists('decryptIP')) {
    function decryptIP($encryptedIP) {
        if (!$encryptedIP) return false;
        $data = base64_decode($encryptedIP);
        if ($data === false) return false;

        $ipReal = openssl_decrypt($data, "AES-256-ECB", TIENDAS_KEY, 0);
        return $ipReal ?: false;
    }
}

/* =========================================================================
   CONEXIÓN SEGURA A SQL SERVER
   ========================================================================= */

/**
 * Conectar de forma segura usando la IP encriptada
 *
 * @param string $ipEncriptada IP de la tienda encriptada
 * @return resource|false Conexión SQLSRV o false si falla
 */
function conectarSeguro($ipEncriptada) {
    $ipReal = decryptIP($ipEncriptada);

    if (!$ipReal) {
        error_log("Conexión fallida: IP inválida o no desencriptable");
        return false;
    }

    // Opcional: guardar en logs para depuración
    // file_put_contents(__DIR__ . "/conexiones.log", date("Y-m-d H:i:s") . " IP: $ipReal" . PHP_EOL, FILE_APPEND);

    $serverName = $ipReal;
    $connectionOptions = [
        "Database" => DB_NAME,
        "Uid"      => DB_USER,
        "PWD"      => DB_PASS,
        "CharacterSet" => "UTF-8"
    ];

    $conn = sqlsrv_connect($serverName, $connectionOptions);

    if (!$conn) {
        $errors = sqlsrv_errors();
        error_log("Error de conexión SQL Server: " . print_r($errors, true));
        return false;
    }

    return $conn;
}

/* =========================================================================
   EJEMPLO DE USO
   =========================================================================
$ipEnc = encryptIP("192.168.1.10", TIENDAS_KEY);
$conn = conectarSeguro($ipEnc);
if ($conn) {
    echo "Conexión OK";
} else {
    echo "Error al conectar";
}
*/
?>
