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/cvetdv.ru/bitrix/modules/ldap/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/ldap/lib/limit.php
<?php

namespace Bitrix\Ldap;

use Bitrix\Main\Localization\Loc;
use Bitrix\Main\ORM\Fields\ExpressionField;
use Bitrix\Main\UserTable;

Loc::loadMessages(__FILE__);

final class Limit
{
	private static $userLimit = 1000;
	private static $userLimitExceededTag = 'LDAP_USER_LIMIT_EXCEEDED';
	private static $isUserLimitExceeded = false;

	public static function isUserLimitExceeded(): bool
	{
		if(self::$isUserLimitExceeded !== true)
		{
			$isFeatureEnabled = \CBXFeatures::IsFeatureEnabled('LdapUnlimitedUsers');
			$featuresList = \CBXFeatures::GetFeaturesList();

			if($isFeatureEnabled && !empty($featuresList))
			{
				self::$isUserLimitExceeded = false;
			}
			else
			{
				self::$isUserLimitExceeded = self::countLdapUsers() >= self::$userLimit;

				if(self::$isUserLimitExceeded)
				{
					self::notifyUserLimitExceeded();
				}
			}
		}

		return self::$isUserLimitExceeded;
	}

	public static function getUserLimitNotifyMessage(): string
	{
		return loc::getMessage(
			'LDAP_LIMIT_USER_LIMIT_EXCEEDED',
			['#LIMIT#' => self::$userLimit]
		);
	}

	private static function notifyUserLimitExceeded(): void
	{
		\CEventLog::Add([
			"SEVERITY" => \CEventLog::SEVERITY_WARNING,
			"AUDIT_TYPE_ID" => self::$userLimitExceededTag,
			"MODULE_ID" => "ldap",
			"DESCRIPTION" => self::getUserLimitNotifyMessage()
		]);

		\CAdminNotify::Add([
			'MODULE_ID' => 'ldap',
			'TAG' => self::$userLimitExceededTag,
			'ENABLE_CLOSE' => 'Y',
			'NOTIFY_TYPE' => \CAdminNotify::TYPE_NORMAL,
			'MESSAGE' => self::getUserLimitNotifyMessage()
		]);
	}

	private static function countLdapUsers(): int
	{
		$result = 0;

		$res = UserTable::query()
			->addSelect(new ExpressionField('CNT', 'COUNT(1)'))
			->whereLike('EXTERNAL_AUTH_ID', 'LDAP#%')
			->exec();

		if($row = $res->fetch())
		{
			$result = (int)$row['CNT'];
		}

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit