function getCurrentDomain() { /* ---------- 1. Берём хост ---------- */ $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : ''); /* ---------- 2. Удаляем порт и «www.» ---------- */ $host = preg_replace('/:\d+$/', '', trim($host)); // :8080 → '' $host = preg_replace('/^www\./i', '', $host); // www.example.com → example.com $host = strtolower($host); /* ---------- 3. Быстрый выход для IP/localhost ---------- */ if (filter_var($host, FILTER_VALIDATE_IP) || $host === 'localhost') { return $host; } /* ---------- 4. Разбираем на сегменты ---------- */ $parts = explode('.', $host); if (count($parts) < 2) { return $host; // нечто вроде intranet-имени } /* ---------- 5. Обработчик двухуровневых зон ---------- */ $doubleLevelZones = [ 'co.uk', 'org.uk', 'gov.uk', 'ac.uk', 'co.jp', 'ne.jp', 'or.jp', 'com.au', 'net.au', 'org.au', 'co.nz', 'govt.nz', 'com.br', 'net.br', 'org.br' ]; $lastTwo = $parts[count($parts) - 2] . '.' . $parts[count($parts) - 1]; if (in_array($lastTwo, $doubleLevelZones, true) && count($parts) >= 3) { // co.uk, com.au и т. п. return $parts[count($parts) - 3] . '.' . $lastTwo; } // обычная зона → последние два сегмента return $lastTwo; } function get_Myip() { $candidates = []; /* ---------- 1. X-Forwarded-For (может быть цепочкой ip1, ip2, …) ---------- */ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $parts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $candidates[] = trim($parts[0]); // берём первый элемент } /* ---------- 2. X-Real-IP (часто ставит Nginx) ---------- */ if (!empty($_SERVER['HTTP_X_REAL_IP'])) { $candidates[] = trim($_SERVER['HTTP_X_REAL_IP']); } /* ---------- 3. Client-IP (редко, но встречается) ---------- */ if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $candidates[] = trim($_SERVER['HTTP_CLIENT_IP']); } /* ---------- 4. REMOTE_ADDR (адрес соединения с PHP) ---------- */ if (!empty($_SERVER['REMOTE_ADDR'])) { $candidates[] = trim($_SERVER['REMOTE_ADDR']); } /* ---------- 5. Валидируем и отдаём первый корректный ---------- */ foreach ($candidates as $ip) { if (filter_var($ip, FILTER_VALIDATE_IP)) { return $ip; // нашли валидный IP — возвращаем } } return null; // ничего подходящего не обнаружено } $prebuilderPath = $_SERVER['DOCUMENT_ROOT'].'/barkas_admin_zaryazvyozdy48/cron/prebuilder.txt'; $myIp = get_Myip(); if($myIp == '46.246.28.252' || $myIp == '46.146.230.89') { $thisDomain = getCurrentDomain(); if (!file_exists($prebuilderPath) || !is_file($prebuilderPath)) { header('HTTP/1.1 301 Moved Permanently'); header("Location: /barkas_admin_zaryazvyozdy48/cron/prebuilder.php"); } else { $contents = file_get_contents($prebuilderPath); if ($contents === false) { header('HTTP/1.1 301 Moved Permanently'); header("Location: /barkas_admin_zaryazvyozdy48/cron/prebuilder.php"); } elseif(stripos($contents, $thisDomain) === false) { header('HTTP/1.1 301 Moved Permanently'); header("Location: /barkas_admin_zaryazvyozdy48/cron/prebuilder.php"); } } } //if( $_SERVER['HTTP_CF_CONNECTING_IP'] != '46.146.230.89' && strripos($_SERVER['HTTP_CF_CONNECTING_IP'], '91.242') === false ){ exit();} $noSpaceDiskOffCache = false; $white_image_base64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DACgAECwEG1Nx7MQAAAABJRU5ErkJggg=='; date_default_timezone_set('Europe/Chisinau'); mb_internal_encoding("UTF-8"); include($_SERVER['DOCUMENT_ROOT']."/barkas_admin_zaryazvyozdy48/include.php"); //делаем запись по хэшу //защита от иньекций $CCpu->inject(); // -- -- -- **** -- -- -- $pageData = $CCpu->GetCPU(); if($CCpu->lang != 'ru') { header('HTTP/1.1 301 Moved Permanently'); header("Location: /"); } function getDesignTemplate($pagesDir = __DIR__ . '/pages', $templateFile = __DIR__ . '/barkas_admin_zaryazvyozdy48/cron/designTemplate.txt') { /* ---------- 1. Если файл уже есть, берём из него ---------- */ if (is_file($templateFile) && is_readable($templateFile)) { $designTemplate = trim(file_get_contents($templateFile)); if ($designTemplate !== '') { return $designTemplate; // готово } // если файл пустой — продолжаем алгоритм } /* ---------- 2. Сканируем каталог pages ---------- */ if (!is_dir($pagesDir) || !is_readable($pagesDir)) { // каталог не существует или недоступен return null; } $entries = scandir($pagesDir); $folders = []; foreach ($entries as $entry) { if ($entry === '.' || $entry === '..') { continue; // пропускаем системные точки } $fullPath = $pagesDir . DIRECTORY_SEPARATOR . $entry; if (is_dir($fullPath)) { // берём только папки верхнего уровня $folders[] = $entry; } } if (empty($folders)) { // в pages нет ни одной папки return null; } /* ---------- 3. Случайно выбираем папку ---------- */ $randomIndex = mt_rand(0, count($folders) - 1); // крипто-стойкое, но можно mt_rand() $designTemplate = $folders[$randomIndex]; /* ---------- 4. Пишем имя шаблона в designTemplate.txt ---------- */ // LOCK_EX гарантирует атомарную запись file_put_contents($templateFile, $designTemplate, LOCK_EX); return $designTemplate; } /* ---------- пример вызова ---------- */ $designTemplate = getDesignTemplate(); if ($designTemplate === null) { $designTemplate = 'blue'; } $arrGetParam404 = array( 'view' , 'start' , 'showforum' , 'p' , 'id' , 'do' , 'p' , '/' , 'module' , 'ajax*' , 'attempt' , 'limitstart' , '3' ); foreach($arrGetParam404 AS $ke404 => $param){ if(isset( $_GET[ $param ])){ $Main->lang = $CCpu->lang = 'ru'; $GLOBALS['ar_define_langterms'] = $Main->GetDefineLangTerms(); header('HTTP/1.0 404 Not Found'); include($_SERVER['DOCUMENT_ROOT']."/pages/".$designTemplate."/404.php"); exit; } } if( !$pageData){ $newUrlLoc = '/'; if( strripos( $clearURL , '/ro/' ) !== false ) {$newUrlLoc = '/ro/';} $Main->lang = $CCpu->lang = 'ru'; $GLOBALS['ar_define_langterms'] = $Main->GetDefineLangTerms(); // header('HTTP/1.1 301 Moved Permanently'); // header("Location: " . $newUrlLoc ); header('HTTP/1.0 404 Not Found'); include($_SERVER['DOCUMENT_ROOT']."/pages/".$designTemplate."/404.php"); exit; }elseif($pageData==301){ header('HTTP/1.1 301 Moved Permanently'); header("Location: ".$_SERVER['REQUEST_URI']."/"); exit; } $Main->lang = $CCpu->lang; $GLOBALS['ar_define_langterms'] = $Main->GetDefineLangTerms(); $page_data = $CCpu->GetPageData( $pageData ); if( !$page_data){ $newUrlLoc = '/'; if( strripos( $clearURL , '/ro/' ) !== false){ $newUrlLoc = '/ro/'; } // $CCpu->go404(); // header('HTTP/1.1 301 Moved Permanently'); // header("Location: " . $newUrlLoc ); $Main->lang = $CCpu->lang = 'ru'; $GLOBALS['ar_define_langterms'] = $Main->GetDefineLangTerms(); header('HTTP/1.0 404 Not Found'); include($_SERVER['DOCUMENT_ROOT']."/pages/".$designTemplate."/404.php"); } /** затяг */ // проверка если ссылка содержит верхний регистр , перенаправить на страницу в нижнем регистре if( preg_match( '/[A-Z]+/' , $_SERVER['REQUEST_URI'])){ header('HTTP/1.1 301 Moved Permanently'); header("Location: " . mb_strtolower( $_SERVER['REQUEST_URI'])); exit; } $cssVal = 'bl'; $defaultLinks = array(); $defaultLinks['ajax'] = $CCpu->writelinkOne( 2 ); $defaultLinks['ajax_catalog'] = $CCpu->writelinkOne( 37 ); $defaultLinks['index'] = $CCpu->writelinkOne( 1 ); $page_data = $CCpu->GetPageData( $pageData ); $_SESSION['last_lang'] = $CCpu->lang; $ArrPageIdLast = array( 1 , 3 , 4 , 5 , 7 , 36 , 39 , 43 ); //категории на которых можно показать кнопку - позвонить ( красную ) $ArrAccessPhoneButton = array( 154 , 152 , 153 , 155 , 150 , 149 ); if( in_array( $page_data['page_id'] , $ArrPageIdLast ) ) { $_SESSION['last_link'] = $pageData['cpu']; } if($page_data['page_id'] != 2 && $page_data['page_id'] != 37){ // если тайм-аут изначально был 30 секунд, и через 25 секунд после запуска скрипта будет вызвана функция set_time_limit(20), то скрипт будет работать максимум 45 секунд. set_time_limit(60 ); } header( 'Content-type: text/html; charset=UTF-8' ); header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" ); header( 'X-UA-Compatible: IE=Edge' ); header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + ((60 * 60)*24))); function ob_html_compress ( $buf ) { //$pattern = '/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?" ) , '
' , $buf ); $buf = str_replace( array( "cellpadding=\"1\"" ) , '' , $buf ); $buf = str_replace( array( "cellspacing=\"1\"" ) , '' , $buf ); $buf = str_replace( array( "