<?php
//globalny skrypt na ZEWN ZAP

$ext = 'http://zaps.primu.pl/';
$dom = str_replace('www.','',$_SERVER['HTTP_HOST']);
$uri = $_SERVER['REQUEST_URI'];

$EXT2['SERVER_ZAP'] = $_SERVER;
$EXT2['GET_ZAP'] = $_GET;
$EXT2['POST_ZAP'] = $_POST;                                                                        

function get_web_page( $url )
{
	global $EXT2;
	$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

	$options = array(

			//CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
			CURLOPT_POST           => true,        //set to GET
			CURLOPT_POSTFIELDS		 => http_build_query($EXT2),                                             
			CURLOPT_USERAGENT      => $user_agent, //set user agent
			//CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
			//CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
			CURLOPT_RETURNTRANSFER => true,     // return web page
			CURLOPT_HEADER         => false,    // don't return headers
			CURLOPT_FOLLOWLOCATION => false,     // follow redirects
			CURLOPT_ENCODING       => "",       // handle all encodings
			CURLOPT_AUTOREFERER    => true,     // set referer on redirect
			CURLOPT_CONNECTTIMEOUT => 2,      // timeout on connect
			CURLOPT_TIMEOUT        => 4,      // timeout on response
			CURLOPT_MAXREDIRS      => 0,       // stop after 10 redirects
			CURLOPT_SSL_VERIFYPEER => true,
	);  

	$ch      = curl_init( $url );
	curl_setopt_array( $ch, $options );
	$content = curl_exec( $ch );
	$err     = curl_errno( $ch );
	$errmsg  = curl_error( $ch );
	$header  = curl_getinfo( $ch );
	curl_close( $ch );

	$header['errno']   = $err;
	$header['errmsg']  = $errmsg;
	$header['content'] = $content;
	return $header;
}  




/*
if($site['http_code'] == '404')
{
  header("HTTP/1.0 404 Not Found");
  exit();   
}  */




// **********************************************************************************************************************************************************
// IMG - FOTEK NIE AKTUALIZUJE!!! else w linii 153 do moda jeżeli trzeba
// **********************************************************************************************************************************************************

//stworz katalogi jezeli nieistnieją
  //grafiki
if(!file_exists('temp/'.$dom.'/gfx/'))
{
  mkdir('temp/'.$dom.'/gfx/', 0770, true);
}
  //wszystkie pozostale pliki
if(!file_exists('temp/'.$dom.'/pliki/'))
{
  mkdir('temp/'.$dom.'/pliki/', 0770, true);
}



//sciezka pliku w root
$img_path = $ext.'domeny/'.$dom.'/gfx/';

//do css
$img_dir = '/';

//sciezka plikow domeny na ext
$dir_temp = 'temp/'.$dom.'/';

//sciezka plikow graficznych domeny na ext 
$dir_temp_gfx = $dir_temp.'gfx/';

// POBIERZ ROZSZERZENIE Z ADRESU PODSTRONY - globalne 
preg_match('#^(.+)\.([a-z]{2,3})$#Usmi', $_SERVER['REQUEST_URI'], $matches);
$extension = $matches[2];

// NAZWA PLIKU (usun '/' jesli istnieje na poczatku ciagu) - globalne
$file = $matches[0];
if($file[0] == '/') $file = substr($file, 1, strlen($file));

//zapisz img i pobierz
if(in_array($extension, array('gif','png','jpg','jpeg'))) 
{
  
	//obrobka do czystego pliku graficznego (usuwa dowolna pseudo-sciezke do pliku):
	preg_match('#^(.*)\/{0,1}([^\/]+)\.'. $extension .'$#Usmi', $file, $file_matches);
	$file = $file_matches['2']. '.'. $extension;
	$file = $file_matches['0'];


	$file_local = $dir_temp_gfx . $file;
	
  // jesli plik nie istnieje - pobierz na local serwer
	if(!file_exists($file_local))
  {  
         
		//$result = file_get_contents($img_path . $file);
    $result = get_web_page($img_path . $file);
    //echo $img_path . $file;
    //if($result['http_code'] == '200')
    if(md5($result['content']) != 'd41d8cd98f00b204e9800998ecf8427e')
    {
  		if(!file_exists( dirname($file_local)))
      {
  		  mkdir( dirname($file_local), 0770, true );
      }
      /*else
      {
        echo '';
      }*/				
  		file_put_contents($file_local, $result['content'], LOCK_EX);
  	}
	}
  // jezeli jest na localu, to z niego pobierz
  else
  {
    
    $result['content'] = file_get_contents($file_local);
  }
    //jezeli ma pobierac TYLKO z locala nawet, gdy root nie dziala, to odkomentuj
    //$result['content'] = file_get_contents($file_local);
  
  	// wyślij img do przegladarki
  	header('Content-Type: image/'.$extension.'');
  	echo $result['content'];
    exit();	
}

// **********************************************************************************************************************************************************
// KONIEC IMG
// **********************************************************************************************************************************************************


// **********************************************************************************************************************************************************
// 	CSS / JS
// **********************************************************************************************************************************************************

//sciezka pliku css w root
$css_path = $ext.'domeny/'.$dom.'/pliki/';

//sciezka css domeny na ext 
$dir_temp_css = $dir_temp.'pliki/';


if(in_array($extension, array('css', 'js')))
{
	$file_local = $dir_temp_css . $file;
	
	if(!file_exists($file_local))
  {
		$result = get_web_page($css_path . $file);
    
    //if($result['http_code'] == '200')
    if(md5($result['content']) != 'd41d8cd98f00b204e9800998ecf8427e')
    {
  		if(!file_exists(dirname($file_local)))
      {
  		  mkdir(dirname($file_local), 0770, true );
      }
      else
      {
        echo '';
      }				
  		file_put_contents($file_local, $result['content'], LOCK_EX);
  	}
	}
  // jezeli jest na localu, porownaj i zaktualizuj jeżeli różne
  else
  {
    //$result = get_web_page($css_path . $file);
    
    //jezeli są różne, ale root nie jest pusty/niedostepny
 
      $result = get_web_page($css_path . $file);
      $remote_css = $result['content'];
      $local_css = file_get_contents($file_local);
      
      if(md5($result['content']) != 'd41d8cd98f00b204e9800998ecf8427e')
      {
        if(md5($local_css) == md5($remote_css))
        {
          $result['content'] = $local_css;    
        }
        else
        {
          file_put_contents($file_local, $remote_css, LOCK_EX);
        }
      }
      else
      {
        $result['content'] = $local_css;
      }    
  }
  
  // wyślij css/js do przegladarki
  if($extension == 'js')
  {
    header('Content-Type: application/javascript');
  }
  else
  {
    header('Content-Type: text/'.$extension.'');
  }
  echo $result['content'];
  exit();	
}

// **********************************************************************************************************************************************************
// KONIEC CSS / JS
// **********************************************************************************************************************************************************


// **********************************************************************************************************************************************************
// Pobierz stronę + obsługa nagłówków
// **********************************************************************************************************************************************************

$url = $ext.'?dom='.$dom.'&page='.$uri;

$site = get_web_page($url);


//przekierowania po $site[http_code] $site[redirect_url] - definiowane w root, domykane w ext
if($site['http_code'] == '301')
{
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: ".$site['redirect_url']."");
  exit();   
}

if($site['http_code'] == '503')
{
  header("HTTP/1.1 503 Service Temporarily Unavailable");
  header('Status: 503 Service Temporarily Unavailable');
  exit();   
}

// **********************************************************************************************************************************************************
// KONIEC Pobierz stronę + obsługa nagłówków
// **********************************************************************************************************************************************************


// **********************************************************************************************************************************************************
// 	SHARED
// **********************************************************************************************************************************************************

//sciezka plikow graficznych domeny na ext 
$dir_temp_gfx = $dir_temp.'gfx/';

// THUMBS - GET/SAVE TO LOCAL + shared files
$common = preg_match_all('#=(["|\'])[\/]?\_files/([^"|\']+)(["|\'])#Usmi', $site['content'], $matches_thumbs);

if($common)
{	
	foreach($matches_thumbs[0] as $k => $src) 
  {	
     
			$tmp_file = $matches_thumbs[2][$k];
      
      //nowe dla katalogu z miniaturkami bo zapisywal za kazdym wejsciem na strone - logika save to local
      $check_file = str_replace('miniaturki/','',$tmp_file);
			
			$r = preg_match('#^(.+)\.([a-z]{2,3})$#Usmi', $tmp_file, $matches);
			$tmp_extension = $matches[2];
      
			if($tmp_extension == 'js')    
      {
				$dir_cache_SELECT = $dir_temp_css;
      }
			elseif($tmp_extension == 'css')
      { 
				$dir_cache_SELECT = $dir_temp_css;
      }
			if($tmp_extension == 'jpg' || $tmp_extension == 'jpeg' || $tmp_extension == 'gif' || $tmp_extension == 'png') 
      {
				$dir_cache_SELECT = $dir_temp_gfx;
      }

		// save to local
		if(!file_exists($dir_cache_SELECT . $check_file))
    { 
      
      //echo '---'.$dir_cache_SELECT . $tmp_file;
      //echo $ext.'domeny/_COMMON/'. $tmp_file;
			$result_thumb = get_web_page( $ext.'domeny/_COMMON/'. $tmp_file );
      if(md5($result_thumb['content']) != 'd41d8cd98f00b204e9800998ecf8427e')
      {
        file_put_contents($dir_cache_SELECT . str_replace('miniaturki/','',$tmp_file), $result_thumb['content'], LOCK_EX);
      }
		}		
		// jesli plik istnieje - sprawdza md5 (prócz img) => jesli sie roznia =>  podmien css/js
		elseif(file_exists($dir_cache_SELECT . $tmp_file) && ($tmp_extension == 'js' || $tmp_extension == 'css'))
    {	
		  $result_thumb = get_web_page( $ext.'domeny/_COMMON/'. $tmp_file );
      $local_file = file_get_contents($dir_cache_SELECT . $tmp_file);
       
      //sprawdz czy ext jest taki sam
      if(md5($result_thumb['content']) != md5($local_file))
      {
        //jezeli root nie jest pusty/niedostepny  
        if(md5($result_thumb['content']) != 'd41d8cd98f00b204e9800998ecf8427e')
        { 
          file_put_contents($dir_cache_SELECT . str_replace('miniaturki/','',$tmp_file), $result_thumb['content'], LOCK_EX);
        }
      }	
		}	
 
    //zaktualizuj caly html content
		$site['content'] = str_replace( $src, str_replace('miniaturki/','','='. $matches_thumbs[1][$k]. '/'. $tmp_file . $matches_thumbs[3][$k]), $site['content']);		
	}
}

// **********************************************************************************************************************************************************
// KONIEC SHARED
// **********************************************************************************************************************************************************

if($extension == 'txt')
{
  header('Content-Type: text/plain');
}
elseif($extension == 'xml')
{
  header('Content-Type: application/xml');
}  
  
//wyswietl HTML
echo $site['content'];

?>

