/** * Fetches the current IP for the specified online guest * * @return XenForo_ControllerResponse_Abstract */ public function actionGuestIp() { if (!$this->_getUserModel()->canViewIps($errorPhraseKey)) { throw $this->getErrorOrNoPermissionResponseException($errorPhraseKey); } $ip = preg_replace('#[^0-9]#', '', $this->_input->filterSingle('ip', XenForo_Input::STRING)); $ip = long2ip($ip); $viewParams = array('ip' => $ip, 'host' => XenForo_Model_Ip::getHost($ip)); return $this->responseView('XenForo_ViewPublic_Online_GuestIp', 'online_guest_ip', $viewParams); }
/** * Fetches the current IP for the specified online guest * * @return XenForo_ControllerResponse_Abstract */ public function actionGuestIp() { if (!$this->_getUserModel()->canViewIps($errorPhraseKey)) { throw $this->getErrorOrNoPermissionResponseException($errorPhraseKey); } $ip = preg_replace('#[^0-9a-f]#', '', $this->_input->filterSingle('ip', XenForo_Input::STRING)); try { $ip = XenForo_Helper_Ip::convertIpBinaryToString(XenForo_Helper_Ip::convertHexToBin($ip)); } catch (Exception $e) { $ip = false; } if (!$ip) { // likely given an invalid IP return $this->responseError(new XenForo_Phrase('unexpected_error_occurred')); } $viewParams = array('ip' => $ip, 'host' => XenForo_Model_Ip::getHost($ip)); return $this->responseView('XenForo_ViewPublic_Online_GuestIp', 'online_guest_ip', $viewParams); }
/** * Validates the callback request is valid. If failure happens, the response should * tell the processor to retry. * * @param string $errorString Output error string * * @return boolean */ public function validateRequest(&$errorString) { try { if ($this->_filtered['test_ipn'] && XenForo_Application::debugMode()) { $validator = XenForo_Helper_Http::getClient('https://www.sandbox.paypal.com/cgi-bin/webscr'); } else { $validator = XenForo_Helper_Http::getClient('https://www.paypal.com/cgi-bin/webscr'); } $validator->setParameterPost('cmd', '_notify-validate'); $validator->setParameterPost($_POST); $validatorResponse = $validator->request('POST'); if (!$validatorResponse || $validatorResponse->getBody() != 'VERIFIED' || $validatorResponse->getStatus() != 200) { $host = XenForo_Model_Ip::getHost($this->_request->getClientIp(false)); if (preg_match('#(^|\\.)paypal.com$#i', $host)) { $errorString = 'Request not validated'; } else { $errorString = array(false, 'Request not validated (from unknown source)'); } return false; } } catch (Zend_Http_Client_Exception $e) { $errorString = 'Connection to PayPal failed'; return false; } $business = strtolower($this->_filtered['business']); $receiverEmail = strtolower($this->_filtered['receiver_email']); $options = XenForo_Application::get('options'); $accounts = preg_split('#\\r?\\n#', $options->payPalAlternateAccounts, -1, PREG_SPLIT_NO_EMPTY); $accounts[] = $options->payPalPrimaryAccount; $matched = false; foreach ($accounts as $account) { $account = trim(strtolower($account)); if ($account && ($business == $account || $receiverEmail == $account)) { $matched = true; break; } } if (!$matched) { $errorString = 'Invalid business or receiver_email'; return false; } return true; }
/** * Shows a list of moderated users and allows them to be managed. * * @return XenForo_ControllerResponse_Abstract */ public function actionModerated() { $visitor = XenForo_Visitor::getInstance(); if (!XenForo_Permission::hasPermission($visitor['permissions'], 'general', 'userModFrontEnd')) { return $this->responseNoPermission(); } $users = $this->_getUserModel()->getUsers(array('user_state' => 'moderated'), array('limit' => 30)); $class = XenForo_Application::resolveDynamicClass('XenForo_Session'); /** * @var $publicSession XenForo_Session */ $publicSession = new $class(); $publicSession->start(); if ($publicSession->get('user_id') == XenForo_Visitor::getUserId()) { $sessionCounts = $publicSession->get('userModerationCounts'); if (!is_array($sessionCounts) || $sessionCounts['total'] != count($users)) { $publicSession->remove('userModerationCounts'); $publicSession->save(); $this->getModelFromCache('XenForo_Model_User')->rebuildUserModerationQueueCache(); } } if (!$users) { return $this->responseMessage(new XenForo_Phrase('no_users_awaiting_approval')); } /** * @var XenForo_Model_SpamPrevention $spamPreventionModel */ $spamPreventionModel = $this->getModelFromCache('XenForo_Model_SpamPrevention'); $spamLogs = $spamPreventionModel->getSpamTriggerLogsByContentIds('user', array_keys($users)); $spamLogs = $spamPreventionModel->prepareSpamTriggerLogs($spamLogs); foreach ($users as &$user) { $ips = $this->_getUserModel()->getRegistrationIps($user['user_id']); $user['ip'] = $ips ? reset($ips) : false; $user['ipHost'] = $user['ip'] ? XenForo_Model_Ip::getHost($user['ip']) : false; if (isset($spamLogs[$user['user_id']])) { $user['spamDetails'] = $spamLogs[$user['user_id']]['detailsPrintable']; } else { $user['spamDetails'] = false; } } $viewParams = array('users' => $users, 'userEditFrontEnd' => $this->_userEditFrontEndCheck()); return $this->responseView('XenForo_ViewAdmin_User_Moderated', 'th_user_moderated_usermodfrontend', $viewParams); }