<?php
    require_once __DIR__ . '/auth/auth.php';
    require_once __DIR__ . '/setup.php';
    require_once __DIR__ . '/mainframe_render.php';

    $extraIncludes = get_html_head($page);

    
//    insert_log($c, $username, $page, $action);

    $isHTML = true;


switch($page) {
    case 'loadurlKK':
        $url       = $_GET['url'];
        header("Location: $url");
        exit;

    case 'loadurlhj':
        $url       = $_GET['url'];
        $id_inst   = $_GET['id_inst'];

        Tools::DebugTXT("url");
        Tools::DebugTXT($url);
        
        // obtenemos el user y pass de la bd
        $instalacion_model = $c->get('instalacion_model');
        $user = null;
        $pass = null;
        $instalacion = $instalacion_model->select($id_inst)[0];
//        print_r($instalacion);
        if ($instalacion) {
            $user = $instalacion['user'];
            $pass = $instalacion['pass'];
        }
        


        $parts = parse_url($url);
//        print_r($parts);

//        $user = isset($parts['user']) ? $parts['user'] : null;
//        $pass = isset($parts['pass']) ? $parts['pass'] : null;

        Tools::DebugTXT($parts);
        Tools::DebugTXT($user);
        Tools::DebugTXT($pass);




        
        if ($user && $pass) {
            $realUrl = $parts['scheme'].'://'.$parts['host']
                       .(isset($parts['path']) ? $parts['path'] : '');
//                       .(isset($parts['query']) ? '?'.$parts['query'] : '');
//                       . "?user=".$user."&pass=".$pass;
//            echo $realUrl."<br>";
            Tools::DebugTXT($realUrl);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $realUrl);

            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);      
//            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
//            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);                  
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);                  

            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");

            // Para obtener la respuesta como string en vez de imprimirla directo
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $response = curl_exec($ch);     

            if($response === false) {
                echo "cURL error: " . curl_error($ch);
            }
            /*
            $ch = curl_init($realUrl);
            curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $html = curl_exec($ch);
            curl_close($ch);
            */
            Tools::DebugTXT("html");
            Tools::DebugTXT($response);

//            echo $html;
//            $content = "";
            $content = $response;
//            $content = "";
//            echo $response;
//            exit;
        } 
        else {
            // Si no hay usuario/contraseña, simplemente redirigimos o mostramos la URL
            header("Location: $url");
            exit;
        }
        break;
    
    case 'instalacion':
        $content = $c->get('instalacion_controller')->checkAction($usuario, $params);
        break;

    case 'equipos':
        $content = $c->get('equipos_controller')->checkAction($usuario, $params);
        break;

    case 'usuarios':
        $content = $c->get('usuarios_controller')->checkAction($usuario, $params);
        break;

    case 'languages':
        $content = $c->get('languages_controller')->checkAction($usuario, $params);
        break;

    case 'instalador':
        $content = $c->get('instalador_controller')->checkAction($usuario, $params);
        break;

    default:
        $content = "";
        break;
    }


//    $db->close();



// Detectar si lo que devolvió el controlador es JSON
if (isJson($content)) {
    $isHTML = false;
    header('Content-Type: application/json');
    echo $content;
//    $db->close();
    exit;
}


render_mainframe($action, $extraIncludes, $content);


// Función auxiliar para detectar si es JSON
function isJson($string) {
    json_decode($string);
    return json_last_error() === JSON_ERROR_NONE;
}    

// inserta log en bd
function insert_log($c, $username, $page, $action)
{
    $params       = array_merge($_GET, $_POST);
    $params_str = json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

    $log_web_model       = $c->get('log_web_model');
    $log_web_model->insert($username, $page, $action, $params_str);
}

?>
 