%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/security/classes/general/ |
Current File : //home/bitrix/www/bitrix/modules/security/classes/general/event_message.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage security * @copyright 2001-2013 Bitrix */ final class CSecurityEventMessageFormatter { const AUDIT_TYPE = "#AUDIT_TYPE#"; const SITE_ID = "#SITE_ID#"; const USER_INFO = "#USER_INFO#"; const URL = "#URL#"; const VARIABLE_NAME = "#VARIABLE_NAME#"; const VARIABLE_VALUE = "#VARIABLE_VALUE#"; const VARIABLE_VALUE_BASE64 = "#VARIABLE_VALUE_BASE64#"; const REMOTE_ADDR = "#REMOTE_ADDR#"; const USER_AGENT = "#USER_AGENT#"; const USER_ID = "#USER_ID#"; const BX24_HOST = "#BX24_HOST_NAME#"; private $messageFormat = ""; private $userInfoFormat = ""; private $isUserInfoNeeded = false; private $isB64MessageNeeded = false; private $siteId = ""; private $userInfo = ""; private $url = "/"; private static $messagePlaceholders = array( self::AUDIT_TYPE, self::SITE_ID, self::USER_INFO, self::URL, self::VARIABLE_NAME, self::VARIABLE_VALUE, self::VARIABLE_VALUE_BASE64 ); private static $userInfoPlaceholders = array( self::REMOTE_ADDR, self::USER_AGENT, self::USER_ID ); /** * @param string $messageFormat * @param string $userInfoFormat */ public function __construct($messageFormat = "", $userInfoFormat = "") { if ($messageFormat) $this->messageFormat = $messageFormat; else $this->messageFormat = self::getDefaultMessageFormat(); if ($userInfoFormat) $this->userInfoFormat = $userInfoFormat; else $this->userInfoFormat = self::getDefaultUserInfoFormat(); $this->isUserInfoNeeded = strpos($messageFormat, self::USER_INFO) !== false; $this->isB64MessageNeeded = strpos($messageFormat, self::VARIABLE_VALUE_BASE64) !== false; if (!defined("ADMIN_SECTION") || ADMIN_SECTION != true) $this->siteId = SITE_ID; $this->userInfo = $this->getUserInfo(); $this->url = preg_replace("/(&?sessid=[0-9a-z]+)/", "", $_SERVER["REQUEST_URI"]); } /** * @return string */ public static function getDefaultMessageFormat() { return implode( ' | ', array(self::AUDIT_TYPE, self::SITE_ID, self::USER_INFO, self::URL, self::VARIABLE_NAME, self::VARIABLE_VALUE_BASE64) ); } /** * @return string */ public static function getDefaultUserInfoFormat() { return implode( ' | ', array(self::REMOTE_ADDR, self::USER_ID) ); } /** * @return array */ public static function getAvailableMessagePlaceholders() { return self::$messagePlaceholders; } /** * @return array */ public static function getAvailableUserInfoPlaceholders() { return self::$userInfoPlaceholders; } /** * @param string $auditType * @param string $itemName * @param string $itemDescription * @return string */ public function format($auditType, $itemName, $itemDescription) { $description = substr($itemDescription,0,2000); $replacement = array( self::AUDIT_TYPE => $auditType, self::SITE_ID => $this->siteId, self::USER_INFO => $this->userInfo, self::URL => $this->url, self::VARIABLE_NAME => $itemName, self::VARIABLE_VALUE => $description ); if ($this->isB64MessageNeeded) $replacement[self::VARIABLE_VALUE_BASE64] = base64_encode($description); if (defined("BX24_HOST_NAME")) $replacement[self::BX24_HOST] = BX24_HOST_NAME; return str_replace( array_keys($replacement), $replacement, $this->messageFormat ); } /** * @return string */ private function getUserInfo() { if (!$this->isUserInfoNeeded) return ""; global $USER; if (is_object($USER)) $userId = $USER->GetID(); else $userId = 0; $replacement = array( self::REMOTE_ADDR => $_SERVER["REMOTE_ADDR"], self::USER_AGENT => $_SERVER["HTTP_USER_AGENT"], self::USER_ID => $userId ); return str_replace( array_keys($replacement), $replacement, $this->userInfoFormat ); } }