diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index cd4265b1f..c2ea46405 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -666,9 +666,20 @@ class Context { $url = base64_decode(self::get('default_url')); $url_info = parse_url($url); + + $oModuleModel = getModel('module'); + $site_info = $oModuleModel->getSiteInfoByDomain($url_info['host']); + if(!$site_info->site_srl) { + $oModuleObject = new ModuleObject(); + $oModuleObject->stop('msg_invalid_request'); + + return false; + } + $url_info['query'].= ($url_info['query'] ? '&' : '') . 'SSOID=' . session_id(); $redirect_url = sprintf('%s://%s%s%s?%s', $url_info['scheme'], $url_info['host'], $url_info['port'] ? ':' . $url_info['port'] : '', $url_info['path'], $url_info['query']); header('location:' . $redirect_url); + return FALSE; } // for sites requesting SSO validation diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 4f6b67fe2..9fadc71aa 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -116,7 +116,6 @@ class ModuleHandler extends Handler * */ function init() { - $oModuleModel = getModel('module'); $site_module_info = Context::get('site_module_info'); @@ -317,13 +316,13 @@ class ModuleHandler extends Handler function procModule() { $oModuleModel = getModel('module'); + $display_mode = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; // If error occurred while preparation, return a message instance if($this->error) { $this->_setInputErrorToContext(); - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -359,8 +358,7 @@ class ModuleHandler extends Handler $this->httpStatusCode = '404'; $this->_setInputErrorToContext(); - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -397,7 +395,7 @@ class ModuleHandler extends Handler if(!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList)) { $this->error = "msg_invalid_request"; - $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -410,13 +408,24 @@ class ModuleHandler extends Handler Mobile::setMobile(FALSE); } - // Admin ip $logged_info = Context::get('logged_info'); + + // check CSRF for admin actions + if($kind === 'admin' && Context::getRequestMethod() === 'POST' && !checkCSRF()) { + $this->error = 'msg_invalid_request'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + return $oMessageObject; + } + + // Admin ip if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y') { $this->_setInputErrorToContext(); $this->error = "msg_not_permitted_act"; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -446,8 +455,7 @@ class ModuleHandler extends Handler if(!is_object($oModule)) { $this->_setInputErrorToContext(); - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -466,7 +474,7 @@ class ModuleHandler extends Handler { $this->_setInputErrorToContext(); $this->error = 'msg_invalid_request'; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -495,7 +503,7 @@ class ModuleHandler extends Handler else { $this->error = 'msg_invalid_request'; - $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -537,9 +545,8 @@ class ModuleHandler extends Handler if(!is_object($oModule)) { - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; $this->_setInputErrorToContext(); - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage('msg_module_is_not_exists'); $oMessageObject->dispMessage(); @@ -569,7 +576,7 @@ class ModuleHandler extends Handler $this->_setInputErrorToContext(); $this->error = 'msg_is_not_administrator'; - $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -583,7 +590,7 @@ class ModuleHandler extends Handler { $this->_setInputErrorToContext(); $this->error = 'msg_is_not_manager'; - $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); @@ -595,7 +602,7 @@ class ModuleHandler extends Handler { $this->_setInputErrorToContext(); $this->error = 'msg_is_not_administrator'; - $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); + $oMessageObject = ModuleHandler::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); diff --git a/config/config.inc.php b/config/config.inc.php index 3eb89230b..828c4925e 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -29,7 +29,7 @@ define('__ZBXE__', __XE__); /** * Display XE's full version. */ -define('__XE_VERSION__', '1.8.8'); +define('__XE_VERSION__', '1.8.9'); define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false)); define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false)); define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false));