<?php
/**
 * Index ( Main )
 * @file index.php
 * @author Soluciones Corporativas IP (SCIP) <mailto:info@scip.es>
 */
include '../includes.php';
// Check IP
$check_ip = true;
$preview  = false;

// Is debug
$isDebug = preg_match('/(62\.43\.207\.23[96]|212\.95\.210\.|37\.152\.88\.|37\.152\.93\.)/', $_SERVER[ 'REMOTE_ADDR' ] );


// Is thumb generation
$is_thumb = array_key_exists( 'is_thumb' , $_REQUEST );

// Not found
$has_redirs = false;

// Server name
$server_name = $_SERVER['SERVER_NAME'];
if( preg_match( '/^parkingsrv.*\.scip\.local$/i', $server_name )) {
	if( is_array( $_SERVER ) && array_key_exists( 'HTTP_X_FORWARDED_HOST', $_SERVER ) && strlen( $_SERVER[ 'HTTP_X_FORWARDED_HOST' ] ) ) {
		$server_name = $_SERVER[ 'HTTP_X_FORWARDED_HOST' ];
	}
}

if ( isset($_GET) && array_key_exists( 'SERVER_NAME', $_GET ) ) {
	if ( class_exists( 'ConfigPP' ) && in_array( $_SERVER['SERVER_NAME'] , ConfigPP::getAllowed() ) ) {
		$server_name = @$_GET['SERVER_NAME'];
		$preview = true;
	} else if ( ( $check_ip AND preg_match( '/^(212\.95\.210\.*)|(37\.152\.88\.*)$/' , @$_SERVER['REMOTE_ADDR'] ) ) || !$check_ip ) {
		$server_name = @$_GET['SERVER_NAME'];
		$preview = true;
	} else {
		ParkingDD::location( 'http://www.dondominio.com' , true );
	}
}


if ( isset($_REQUEST) && array_key_exists( 'domain', $_REQUEST ) && array_key_exists( 'preview', $_REQUEST ) && array_key_exists( 'config', $_REQUEST ) && array_key_exists( '_v', $_REQUEST ) ) {
	if ( !class_exists( 'ConfigPP' ) || ( class_exists( 'ConfigPP' ) && !in_array( $_SERVER['SERVER_NAME'] , ConfigPP::getAllowed() ) ) ) {
		ParkingDD::location( 'http://www.dondominio.com' , true );
	}
	if ( $_REQUEST['_v'] < time()-1800 ) {
		//ParkingDD::location( 'http://www.dondominio.com' , true );
	}
	$preview = true;
	$server_name = @$_REQUEST['domain'];
}

// To lower case
$server_name = strtolower( $server_name );

// Default Domain host
$DefaultDomainHost = $config['default_domain_host'];
if( in_array( $server_name , array(
				'attack.training',
				))) {
	$DefaultDomainHost = '';
}

// Domain object
$dom = new Domain( $server_name );
if ( !$dom->isValid() ) {
	ParkingDD::location( 'http://www.dondominio.com' , true );
}

if( isset( $_REQUEST['dderror'] ) ) {
	ParkingDD::errorDocument( $dom );
}


// Domains array ( for .cat tlds )
$aDomains = array( $dom );
if ( $dom->getTld() == 'cat' ) {
	if ( $dom->getName() != $dom->getNoIdn() ) {
		$host = $dom->getHost() ? $dom->getHost().'.' : '';
		$aDomains[] = new Domain( $host.$dom->getNoIdn() , $dom->getDomainTitle() );
	}
}

// Redirections
$req_redirs = false;

if ( !$preview ) {
	
	// Process redirections
	$real_uri = preg_replace( '/\?.*$/' , '' , $_SERVER['REQUEST_URI'] );
	$req_redirs = strlen( $real_uri ) > 1 ? true : false;

	foreach( $aDomains as $domain ) {
		// Continue if post data
		if ( $_POST ) {
			continue;
		}

		// Redirection object
		$redirect = new Redirect( $domain );

		// If not redirections file
		if ( !$redirect->fileExists() ) {
			if( !$req_redirs ) {
				$has_redirs = false;
			}
			continue;
		}

		if ( !$redirect->subdomainHasRedirs() ) {
			if( $req_redirs ) {
				$has_redirs = false;
			}
			continue;
		}

		
		// If redirections file
		if( $redirect->run( $_SERVER['REQUEST_URI'], $isDebug ) ) {
			exit(0);
		}

		$has_redirs = false;
	}

	/* Cuando el host es vacio, se crea una redirección a DefaultDomainHost de forma obligatoria */
	if( $dom->getHost()!=$DefaultDomainHost  && $dom->getHost() == '' ) {
		if( !$has_redirs ) {
			$link = 'http://'.$DefaultDomainHost.'.'.$dom->getIdna().$_SERVER['REQUEST_URI'];
			ParkingDD::location( $link );
		}
	}

}

if ( $req_redirs && !$has_redirs ) {
	ParkingDD::errorDocument( $domain );
} else {
	if ( $dom->getHost() != $DefaultDomainHost  && !$preview ) {
		$link = 'http://'.$DefaultDomainHost.'.'.$dom->getIdna().$_SERVER['REQUEST_URI'];
		ParkingDD::location( $link );
	}
}

include( '../load.php' );

// Print Parking page
foreach( $aDomains as $domain ) {
	try {
		$pp = ParkingPage::getParkingPage( $domain , @$_REQUEST['config'] , null ,  $is_thumb );
		if ( $pp->hasConfig() ) {
			$pp->renderCache();
			exit(0);
		}
	} catch ( Exception $e ) {
		$pp = ParkingPage::getParkingPage( $domain , null , 'default' );
	}
}
$pp->renderCache();
exit(0);

?>
