403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/seo/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/seo/classes/general/seo_utils.php
<?
class CSeoUtils
{
	public static function CleanURL($URL)
	{
		if (false !== ($pos = mb_strpos($URL, '?')))
		{
			$query = mb_substr($URL, $pos + 1);
			$URL = mb_substr($URL, 0, $pos);

			$arQuery = explode('&', $query);

			$arExcludedParams = array('clear_cache', 'clear_cache_session', 'back_url_admin', 'back_url', 'backurl', 'login', 'logout', 'compress');
			foreach ($arQuery as $key => $param)
			{
				if (false !== ($pos = mb_strpos($param, '=')))
				{
					$param_name = mb_strtolower(mb_substr($param, 0, $pos));
					if (
						mb_substr($param_name, 0, 7) == 'bitrix_'
						|| mb_substr($param_name, 0, 5) == 'show_'
						|| in_array($param_name, $arExcludedParams)
					)
					{
						unset($arQuery[$key]);
					}
				}
			}

			if (count($arQuery) > 0)
			{
				$URL .= '?'.implode('&', $arQuery);
			}
		}

		return $URL;
	}

	public static function getDomainsList()
	{
		static $arDomains = null;

		if($arDomains === null)
		{
			$arDomains = array();

			$dbSites = Bitrix\Main\SiteDomainTable::getList(
				array(
					'select'=>array(
						'DOMAIN', 'LID',
						'SITE_NAME'=>'SITE.NAME', 'SITE_ACTIVE' => 'SITE.ACTIVE',
						'SITE_DIR' => 'SITE.DIR', 'SITE_DOC_ROOT' => 'SITE.DOC_ROOT'
					)
				)
			);

			$defaultDomain = CBXPunycode::ToASCII(Bitrix\Main\Config\Option::getRealValue('main', 'server_name'), $e);

			$bCurrentHostFound = false;
			while($arSite = $dbSites->fetch())
			{
				$arDomains[] = $arSite;
				if($arSite['DOMAIN'] == $defaultDomain)
					$bCurrentHostFound = true;
			}

			if(!$bCurrentHostFound)
			{
				$dbDefSite = Bitrix\Main\SiteTable::getList(array(
					'filter' => array('DEF' => 'Y'),
					'select' => array('LID', 'NAME', 'ACTIVE'),
				));
				$arDefSite = $dbDefSite->fetch();
				if($arDefSite)
				{
					array_unshift($arDomains, array(
						'DOMAIN' => $defaultDomain,
						'LID' => $arDefSite['LID'],
						'SITE_NAME' => $arDefSite['NAME'],
						'SITE_ACTIVE' => $arDefSite['ACTIVE'],
						'SITE_DIR' => $arDefSite['DIR'],
						'SITE_DOC_ROOT' => $arDefSite['DOC_ROOT'],
					));
				}
			}
		}

		return $arDomains;
	}

	public static function getDirStructure($bLogical, $site, $path)
	{
		global $USER;

		// for cron agents make fake user
		if ($USER === null)
		{
			$USER = new \CUser();
			if (!$USER->Authorize(1))
			{
				return [];
			}

			$isFakeUser = true;
		}

		$arDirContent = [];
		if ($USER->CanDoFileOperation('fm_view_listing', array($site, $path)))
		{
			\Bitrix\Main\Loader::includeModule('fileman');

			$arDirs = [];
			$arFiles = [];

			\CFileMan::GetDirList(
				[$site, $path],
				$arDirs,
				$arFiles,
				[],
				["NAME" => "asc"],
				"DF",
				$bLogical,
				true
			);

			$arDirContent_t = array_merge($arDirs, $arFiles);
			for ($i = 0, $l = count($arDirContent_t); $i < $l; $i++)
			{
				$file = $arDirContent_t[$i];
				$arPath = array($site, $file['ABS_PATH']);
				if (
					($file["TYPE"] == "F" && !$USER->CanDoFileOperation('fm_view_file', $arPath))
					|| ($file["TYPE"] == "D" && !$USER->CanDoFileOperation('fm_view_listing', $arPath))
					|| ($file["TYPE"] == "F" && $file["NAME"] == ".section.php")
				)
				{
					continue;
				}

				$f = $file['TYPE'] == 'F'
					? new \Bitrix\Main\IO\File($file['PATH'], $site)
					: new \Bitrix\Main\IO\Directory($file['PATH'], $site);

				$p = $f->getName();

				if (
					$f->isSystem()
					|| $file['TYPE'] == 'F' && in_array($p, ["urlrewrite.php"])
					|| $file['TYPE'] == 'D'
					&& preg_match(
						"/\/(bitrix|" . \COption::getOptionString("main", "upload_dir", "upload") . ")\//",
						"/" . $p . "/"
					)
				)
				{
					continue;
				}

				$arFileData = [
					'NAME' => $bLogical ? $file['LOGIC_NAME'] : $p,
					'FILE' => $p,
					'TYPE' => $file['TYPE'],
					'DATA' => $file,
				];

				if ($arFileData['NAME'] == '')
				{
					$arFileData['NAME'] = GetMessage('SEO_DIR_LOGICAL_NO_NAME');
				}

				$arDirContent[] = $arFileData;
			}
			unset($arDirContent_t);
		}

		if (isset($isFakeUser) && $isFakeUser === true)
		{
			unset($USER);
		}

		return $arDirContent;
	}
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit