Example #1
0
 /**
  * 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);
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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);
 }