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/main/lib/access/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/main/lib/access/accesscode.php
<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage main
 * @copyright 2001-2021 Bitrix
 */

namespace Bitrix\Main\Access;


class AccessCode
{
	public const
		ACCESS_DIRECTOR = 'AD',
		ACCESS_EMPLOYEE = 'AE',
		ACCESS_DEPUTY = 'AT';

	public const
		AC_DEPARTMENT = '^(D)(\d+)$',
		AC_ALL_DEPARTMENT = '^(DR)(\d+)$',
		AC_INTRANET_USER = '^(IU)(\d+)$',
		AC_GROUP = '^(G)(\d+)$',
		AC_USER = '^(U)(\d+)$',
		AC_SOCNETGROUP = '^(SG)(\d+)(_[AEK])?$',
		AC_SOCNETUSER = '^(SU)(\d+)(_M)?$',
		AC_CHAT = '^(CHAT)(\d+)$',
		AC_ACCESS_DIRECTOR = '^(' . self::ACCESS_DIRECTOR . ')(\d+)?$',
		AC_ACCESS_EMPLOYEE = '^(' . self::ACCESS_EMPLOYEE . ')(\d+)?$',
		AC_ACCESS_DEPUTY = '^(' . self::ACCESS_DEPUTY . ')(\d+)?$',
		AC_STRUCTURE_TEAM = '^(SNT)(\d+)$',
		AC_ALL_STRUCTURE_TEAM = '^(SNTR)(\d+)$';

	public const
		TYPE_USER 				= 'users',
		TYPE_USER_ALL			= 'users_all',
		TYPE_GROUP	 			= 'groups',
		TYPE_SOCNETGROUP 		= 'sonetgroups',
		TYPE_DEPARTMENT			= 'departments',
		TYPE_ACCESS_DIRECTOR	= 'access_director',
		TYPE_ACCESS_EMPLOYEE	= 'access_employee',
		TYPE_ACCESS_DEPUTY		= 'access_deputy',
		TYPE_CHAT				= 'chat',
		TYPE_OTHER				= 'other',
		TYPE_STRUCTURE_TEAM		= 'structureteams';

	public static $map = [
		self::AC_DEPARTMENT 		=> self::TYPE_DEPARTMENT,
		self::AC_ALL_DEPARTMENT 	=> self::TYPE_DEPARTMENT,
		self::AC_INTRANET_USER 		=> self::TYPE_USER,
		self::AC_GROUP 				=> self::TYPE_GROUP,
		self::AC_USER 				=> self::TYPE_USER,
		self::AC_SOCNETGROUP 		=> self::TYPE_SOCNETGROUP,
		self::AC_SOCNETUSER 		=> self::TYPE_OTHER,
		self::AC_CHAT 				=> self::TYPE_CHAT,
		self::AC_ACCESS_DIRECTOR	=> self::TYPE_ACCESS_DIRECTOR,
		self::AC_ACCESS_EMPLOYEE	=> self::TYPE_ACCESS_EMPLOYEE,
		self::AC_ACCESS_DEPUTY		=> self::TYPE_ACCESS_DEPUTY,
		self::AC_STRUCTURE_TEAM		=> self::TYPE_STRUCTURE_TEAM,
		self::AC_ALL_STRUCTURE_TEAM	=> self::TYPE_STRUCTURE_TEAM,
	];

	private $accessCode;

	private $parsed = false;
	private $entityType = self::TYPE_OTHER;
	private $entityPrefix = '';
	private $entityId = 0;

	/**
	 * @param $code
	 * @return bool
	 */
	public static function isValid($code): bool
	{
		foreach (self::$map as $pattern => $type)
		{
			if (preg_match('/'. $pattern .'/', $code, $matches))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * @param string $accessCode
	 */
	public function __construct(string $accessCode)
	{
		$this->accessCode = $accessCode;
		$this->parse();
	}

	/**
	 * @return string|null
	 */
	public function getSignature(): ?string
	{
		if (!$this->parsed)
		{
			return null;
		}
		return $this->entityPrefix . $this->entityId;
	}

	/**
	 * @return string
	 */
	public function getEntityType(): string
	{
		return $this->entityType;
	}

	/**
	 * @return string
	 */
	public function getEntityPrefix(): string
	{
		return $this->entityPrefix;
	}

	/**
	 * @return int
	 */
	public function getEntityId(): int
	{
		return $this->entityId;
	}

	/**
	 * @return void
	 */
	private function parse()
	{
		foreach (self::$map as $pattern => $type)
		{
			if (preg_match('/'. $pattern .'/', $this->accessCode, $matches))
			{
				$this->parsed = true;
				$this->entityType = $type;
				$this->entityPrefix = (string) $matches[1];
				if (array_key_exists('2', $matches))
				{
					$this->entityId = (int) $matches[2];
				}
				return;
			}
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit