{ $siteInfo = $engine->getSiteInfo($arDomain['DOMAIN'], $arDomain['SITE_DIR']); if($siteInfo[$arDomain['DOMAIN']]['verified'] == 'false') { $filename = $siteInfo[$arDomain['DOMAIN']]['verification-method']['file-name']; // paranoia? $filename = preg_replace("/^(.*?)\..*$/", "\\1.html", $filename); $path = Path::combine(( strlen($arDomain['SITE_DOC_ROOT']) > 0 ? $arDomain['SITE_DOC_ROOT'] : $_SERVER['DOCUMENT_ROOT'] ), $arDomain['SITE_DIR'], $filename); $obFile = new \Freetrix\Main\IO\File($path); $obFile->putContents($siteInfo[$arDomain['DOMAIN']]['verification-method']['file-content']); $res = $engine->verifySite($arDomain['DOMAIN'], $arDomain['SITE_DIR']); $obFile->delete(); $res = $engine->getFeeds(); $res['_domain'] = $arDomain['DOMAIN']; } elseif($siteInfo[$arDomain['DOMAIN']]['verified'] == 'true') { $res = $siteInfo; $res['_domain'] = $arDomain['DOMAIN']; }
/** * Parses the passed content to find css, js and images. Returns the array of files. * * @param $content * * @return array */ public function getFilesFromContent($content) { $files = array(); $arFilesByType = array(); $arExtensions = array("js", "css"); $extension_regex = "(?:" . implode("|", $arExtensions) . ")"; $regex = "/\n\t\t\t\t((?i:\n\t\t\t\t\thref=\n\t\t\t\t\t|src=\n\t\t\t\t\t|BX\\.loadCSS\\(\n\t\t\t\t\t|BX\\.loadScript\\(\n\t\t\t\t\t|jsUtils\\.loadJSFile\\(\n\t\t\t\t\t|background\\s*:\\s*url\\(\n\t\t\t\t)) #attribute\n\t\t\t\t(\"|') #open_quote\n\t\t\t\t([^?'\"]+\\.) #href body\n\t\t\t\t(" . $extension_regex . ") #extentions\n\t\t\t\t(|\\?\\d+|\\?v=\\d+) #params\n\t\t\t\t(\\2) #close_quote\n\t\t\t/x"; $match = array(); preg_match_all($regex, $content, $match); $link = $match[3]; $extension = $match[4]; $params = $match[5]; $linkCount = count($link); $fileData = array("FULL_FILE_LIST" => array(), "FILE_TIMESTAMPS" => array(), "CSS_FILE_IMAGES" => array()); for ($i = 0; $i < $linkCount; $i++) { $fileData["FULL_FILE_LIST"][] = $files[] = $link[$i] . $extension[$i] . $params[$i]; $fileData["FILE_TIMESTAMPS"][$link[$i] . $extension[$i]] = $params[$i]; $arFilesByType[$extension[$i]][] = $link[$i] . $extension[$i]; } $manifestCache = $this->readManifestCache($this->getCurrentManifestID()); if (array_key_exists("css", $arFilesByType)) { $cssCount = count($arFilesByType["css"]); for ($j = 0; $j < $cssCount; $j++) { $cssFilePath = $arFilesByType["css"][$j]; if ($manifestCache["FILE_DATA"]["FILE_TIMESTAMPS"][$cssFilePath] != $fileData["FILE_TIMESTAMPS"][$cssFilePath]) { $fileContent = false; $fileUrl = parse_url($cssFilePath); $file = new \Freetrix\Main\IO\File(Application::getDocumentRoot() . $fileUrl['path']); if ($file->isExists() && $file->isReadable()) { $fileContent = $file->getContents(); } elseif ($fileUrl["scheme"]) { $req = new \CHTTP(); $req->http_timeout = 20; $fileContent = $req->Get($cssFilePath); } if ($fileContent != false) { $regex = '#([;\\s:]*(?:url|@import)\\s*\\(\\s*)(\'|"|)(.+?)(\\2)\\s*\\)#si'; $cssFileRelative = new \Freetrix\Main\IO\File($cssFilePath); $cssPath = $cssFileRelative->getDirectoryName(); preg_match_all($regex, $fileContent, $match); $matchCount = count($match[3]); for ($k = 0; $k < $matchCount; $k++) { $file = self::replaceUrlCSS($match[3][$k], addslashes($cssPath)); if (!in_array($file, $files) && !strpos($file, ";base64")) { $fileData["FULL_FILE_LIST"][] = $files[] = $file; $fileData["CSS_FILE_IMAGES"][$cssFilePath][] = $file; } } } } else { $fileData["CSS_FILE_IMAGES"][$cssFilePath] = $manifestCache["FILE_DATA"]["CSS_FILE_IMAGES"][$cssFilePath]; if (is_array($manifestCache["FILE_DATA"]["CSS_FILE_IMAGES"][$cssFilePath])) { $fileData["FULL_FILE_LIST"] = array_merge($fileData["FULL_FILE_LIST"], $manifestCache["FILE_DATA"]["CSS_FILE_IMAGES"][$cssFilePath]); } } } } return $fileData; }
$arFeeds = $engine->getFeeds(); if(isset($arFeeds[$arDomain['DOMAIN']]) && is_array($arFeeds[$arDomain['DOMAIN']])) { if($arFeeds[$arDomain['DOMAIN']]['verification'] != 'VERIFIED') { $uin = $engine->verifySite($arDomain['DOMAIN'], false); if($uin) { $filename = "yandex_".$uin.".txt"; $path = Path::combine(( strlen($arDomain['SITE_DOC_ROOT']) > 0 ? $arDomain['SITE_DOC_ROOT'] : $_SERVER['DOCUMENT_ROOT'] ), $arDomain['SITE_DIR'], $filename); $obFile = new \Freetrix\Main\IO\File($path); $obFile->putContents(""); $res = $engine->verifySite($arDomain['DOMAIN'], true); //$obFile->delete(); } } } $res['_domain'] = $arDomain['DOMAIN']; } else { $res = array('error' => 'No domain'); }