<?php
//Version 3 20220621
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
header('Content-type: text/html');
//
define('sufijo', 'web2zoomboletoscom');
define('urlVenta', 'https://web2.zoomboletos.com');
define('urlori', 'http://internal-alb-fifo-mx-priv-pro-94953457.us-east-1.elb.amazonaws.com');
define('urlpass', 'https://queue.janto4.mx');
define('urlwaiting', 'https://waitingroom.janto4.mx/' . sufijo . '/');
define('urlTurno', urlpass . '/cola/' . sufijo);
define('urlapi', urlori . '/apiV301/');
define('rutalog', '/improntalogs/');
// 
if (!empty($_SERVER['REQUEST_URI'])) $uTurno = urlTurno . $_SERVER['REQUEST_URI']; // url de la pagina que da la posicion en la cola
else $uTurno = urlTurno; // url de la pagina que da la posicion en la cola
$uTurno2 = urlTurno; // url de la pagina que da la posicion en la cola sin parametros
// ######################## web4 ################
if (!empty($_SERVER['QUERY_STRING'])) {
  $uVenta = urlVenta . $_SERVER['QUERY_STRING']; // url de la pagina deventa
  $urlwaiting = urlwaiting . '?' . $_SERVER['QUERY_STRING'];
} else {
  $uVenta = urlVenta; // url de la pagina deventa
  $urlwaiting = urlwaiting;
}
if (!empty($_SERVER['REQUEST_URI'])) {
  $rep = str_replace("/index_cola.php", "", $_SERVER['REQUEST_URI']);
  $uVenta1 = urlVenta . $rep; // url de la pagina deventa
  // define('urlVenta1','https://bonobilbaokultura.bonoconsumo.es');
} else {
  $uVenta1 = urlVenta . $rep; // url de la pagina deventa, ponemos esta por que es fija sino la general
}
// 
// ################# cms ####################
// En cms tenemos que poner url directas tienen # que en php no te da el $_SERVER['REQUEST_URI']
// if(!empty($_SERVER['REQUEST_URI'])) define('urlVenta','https://demo.janto.es/cartuja/#/ver-recinto/TERRAESC@Janto_SAB');// url de la pagina deventa
// else define('urlVenta','https://demo.janto.es/cartuja/#/ver-recinto/TERRAESC@Janto_SAB');// url de la pagina deventa
// define('urlVenta','https://demo.janto.es/cartuja/#/ver-recinto/TERRAESC@Janto_SAB');
// define('urlVenta1','https://demo.janto.es/cartuja/#/ver-recinto/TERRAESC@Janto_SAB');
// 
//define('urlReferer','https://pre.janto.es/');// url de la pagina que da la posicion en la cola
//define('urlapi','https://pre.janto.es/gestionCola/api/');https://queueweb2zoomboletoscom.janto.es/controlCola/
//    
if (!empty($_SERVER['SERVER_ADDR'])) $datelog = date('Ymd', time()) . '-' . $_SERVER['SERVER_ADDR'];
else $datelog = date('Ymd', time()) . '-undefined';
//$nombreLog=$datelog.'-'.$_SERVER['SERVER_ADDR'].'-'.$_SERVER['REMOTE_ADDR'];
$log = "\n########## " . date('Ymd H:i:s') . " ###############\n";
if (!empty($_SERVER['REMOTE_ADDR'])) $log .= 'Remote addres ' . $_SERVER['REMOTE_ADDR'] . "\n";
else $log .= "Remote addres \n";
if (!empty($_SERVER['HTTP_REFERER'])) $log .= 'Remote http_referer ' . $_SERVER['HTTP_REFERER'] . "\n";
else $log .= "Remote http_referer null \n";
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $log .= 'Ip origen ' . $_SERVER['HTTP_X_FORWARDED_FOR'] . "\n";
else $log .= "Ip origen null \n";
// $log .= print_r($_SERVER,1);
if (!empty($_SERVER['QUERY_STRING'])) $log .= "QUERY_STRING " . $_SERVER['QUERY_STRING'] . "\n";
if (!empty($_SERVER['REQUEST_URI'])) $log .= "REQUEST_URI " . $_SERVER['REQUEST_URI'] . "\n";
$log .= print_r($_POST, 1);
$log .= print_r($_GET, 1);
$log .= "\n url api " . urlapi . " \n";
function getCola()
{
  $url = urlapi . "ncm/";
  $headers = array(
    "Origin:" . urlpass,
  );
  $user_agent = "Mozilla/5.0 (FIFO-CURL V3)";
  $ch = curl_init();
  $parametros = array('su' => sufijo);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_CAPATH, '/impronta/httpd/ssl/ca/');
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $parametros);
  $retorno = curl_exec($ch);
  if (curl_errno($ch)) {
    $datelog = date('Ymd', time());
    $logcurl = 'Curl error: ' . curl_error($ch);
    $logcurl .= "\n retorno " . $retorno;
    file_put_contents(rutalog . 'CurlErrorgetCola' . $datelog . '-' . sufijo . '.log', $logcurl, FILE_APPEND);
    // header("Location:https://waitingroom.janto.es/espera/");
  }
  //file_put_contents(rutalog.'CurlErrorgetCola'.$datelog.'-'.sufijo.'.log', $logcurl,FILE_APPEND);
  curl_close($ch);
  return $retorno;
}
function getZRank($member)
{
  $url = urlapi . "estado/";
  $headers = array(
    "Origin:" . urlpass,
  );
  $user_agent = "Mozilla/5.0 (FIFO-CURL V3)";
  $ch = curl_init();
  $parametros = array('su' => sufijo, 'ref' => $member);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_CAPATH, '/impronta/httpd/ssl/ca/');
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $parametros);
  $retorno = curl_exec($ch);
  if (curl_errno($ch)) {
    $datelog = date('Ymd', time());
    $logcurl = 'Curl error: ' . curl_error($ch);
    $logcurl .= "\n retorno " . $retorno;
    file_put_contents(rutalog . 'CurlErrorgetEstado' . $datelog . '-' . sufijo . '.log', $logcurl, FILE_APPEND);
    // header("Location:https://waitingroom.janto.es/espera/");
  }
  curl_close($ch);
  return $retorno;
}
function addUsados($member)
{
  $url = urlapi . "usados/";
  $headers = array(
    "Origin:" . urlpass,
  );
  $user_agent = "Mozilla/5.0 (FIFO-CURL V3)";
  $ch = curl_init();
  // $parametros="ref=".$member;
  $parametros = array('su' => sufijo, 'ref' => $member);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_CAPATH, '/impronta/httpd/ssl/ca/');
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $parametros);
  $retorno = curl_exec($ch);
  if (curl_errno($ch)) {
    $datelog = date('Ymd', time());
    $logcurl = 'Curl error: ' . curl_error($ch);
    $logcurl .= "\n retorno " . $retorno;
    file_put_contents(rutalog . 'CurlErrorgetusados' . $datelog . '-' . sufijo . '.log', $logcurl, FILE_APPEND);
    // header("Location:https://waitingroom.janto.es/espera/");
  }
  curl_close($ch);
  return $retorno;
}
$log .= "\n Pedimos estado de la cola y aumentamos en uno el contador de conexiones ";
$n_cola = json_decode(getCola());
$log .= print_r($n_cola, 1);
$log .= "\n waiting " . $n_cola->awaiting;
if ($n_cola->awaiting == "1") {
  $log .= "\n waiting activa desviamos a waiting " . $urlwaiting;
  file_put_contents(rutalog . 'WAIT' . $datelog . '-' . sufijo . '.log', $log, FILE_APPEND);
  header("Location:" . $urlwaiting);
}
$log .= "\n pos " . $n_cola->pos;
if ($n_cola->pos > 10 && $n_cola->status == 0) {
  $log .= "Cola mayor que 10\n";
  if (!empty($_GET['ref'])) {
    $FEstado = $_GET['ref'];
    $clave = json_decode(getZRank($FEstado));
    $log .= "getZRank \n";
    $log .= print_r($clave, 1);
    $log .= "tipo de acceso " . $clave->ac;
    if ($clave->ac == 1) {
      //movemos el fichero a turnos usados
      // puede comprar
      $retAddUsados = json_decode(addUsados($FEstado));
      $log .= "add usados retorno \n";
      $log .= print_r($retAddUsados, 1);
      if ($retAddUsados > 0) {
        $log .= "movemos el fichero a turnos usados, puede comprar\n";
      } else {
        $log .= "No se ha podido mover el turno " . $FEstado . "\n";
      }
      $eliget = "&ref=" . $_GET['ref'];
      $urlventamodi = str_replace($eliget, "", $uVenta);
      $log .= "urlventa modificada " . $urlventamodi . "\n";
      file_put_contents(rutalog . 'DV' . $datelog . '-' . $FEstado . '-' . sufijo . '.log', $log, FILE_APPEND);
      header("Location:" . $urlventamodi);
    } else {
      // El fichero no esta en los datos puede ser por que ya ha entrado o esta intentando colarse le volvemos a dar numero
      $log .= "El fichero no esta en los datos puede ser por que ya ha entrado o esta intentando colarse le volvemos a dar numero \n";
      file_put_contents(rutalog . 'DT' . $datelog . '-' . $FEstado . '-' . sufijo . '.log', $log, FILE_APPEND);
      header("Location:" . $uTurno2);
    }
  } else {
    $log .= "Tenemos cola sin asignacion de turno con elementos en post\n";
    $log .= "urlturno " . $uTurno . "\n";
    file_put_contents(rutalog . 'DPT' . $datelog . '-' . sufijo . '.log', $log, FILE_APPEND);
    header("Location:" . $uTurno); //no tiene numero le damos numero
  }
} else {
  if (!empty($_GET['ref'])) {
    $FEstado = $_GET['ref'];
    $clave = json_decode(getZRank($FEstado));
    $log .= "getZRank \n";
    $log .= print_r($clave, 1);
    $log .= "tipo de acceso [" . $clave->ac . "]";
    $eliget = "&ref=" . $_GET['ref'];
    $urlventamodi = str_replace($eliget, "", $uVenta);
    if ($clave->ac == 1) {
      //movemos el fichero a turnos usados
      // puede comprar
      $retAddUsados = json_decode(addUsados($FEstado));
      $log .= "add usados retorno \n";
      $log .= print_r($retAddUsados, 1);
      $log .= "Resultado " . $retAddUsados->status;
      if ($retAddUsados->status == 0) {
        $log .= "movemos el fichero a turnos usados y borramos de accesos, puede comprar\n";
      } else {
        $log .= "No se ha podido mover el turno " . $FEstado . "\n";
      }
      file_put_contents(rutalog . 'DV' . $datelog . '-' . $FEstado . '-' . sufijo . '.log', $log, FILE_APPEND);
      header("Location:" . $urlventamodi);
    } else {
      // El fichero no esta en los datos puede ser por que ya ha entrado o esta intentando colarse le volvemos a dar numero
      $log .= "El fichero no esta en los datos puede ser por que ya ha entrado o esta intentando colarse como la cola es cero dejamos pasar a venta \n";
      file_put_contents(rutalog . 'DV' . $datelog . '-' . $FEstado . '-' . sufijo . '.log', $log, FILE_APPEND);
      header("Location:" . $urlventamodi);
    }
  } else {
    $log .= "Cola menor de 10 ";
    if (!empty($_SERVER['HTTP_REFERER'])) $log .= "vamos a la url de venta origen" . $_SERVER['HTTP_REFERER'] . "\n";
    else $log .= " referencia vacia\n";
    $log .= "enviamos a urlVenta " . $uVenta1 . "\n";
    file_put_contents(rutalog . 'NC' . $datelog . '-' . sufijo . '.log', $log, FILE_APPEND);
    //header("Location:".urlVenta);
    $uVenta1 = str_replace('&amp;', '&', htmlspecialchars($uVenta1, ENT_QUOTES, 'UTF-8'));
    $urlForm = '<script>location.assign("' . $uVenta1 . '")</script>';
    // $urlForm='<Form id="dinamicForm" action = "'.$uVenta1.'" method = "post" style="display:none" ><script>document.getElementById("dinamicForm").submit();</script>';
    echo $urlForm;
  }
}
