HEX
Server: Apache/2.2.22
System: Linux server1.blueharbor.com 3.10.0-1160.90.1.vz7.200.7 #1 SMP Wed Jul 12 12:00:44 MSK 2023 x86_64
User: locglobe (1004)
PHP: 5.6.37
Disabled: NONE
Upload Files
File: /home/locglobe/public_html/wp-content/plugins/super-socializer/library/SteamLogin/SteamLogin.php
<?php
//namespace Ehesp\SteamLogin;

//use Exception;
require 'SteamLoginInterface.php';
if (!class_exists('SteamLogin')) {
    class SteamLogin implements SteamLoginInterface
    {
        /**
         * Steam Community OpenID URL
         *
         * @var string
         */
        private static $openId = 'https://steamcommunity.com/openid/login';

        /**
         * Validates a given URL, ensuring it contains the http or https URI Scheme
         *
         * @param string $url
         * @return bool
         */
        private function validateUrl($url)
        {
            if (!filter_var($url, FILTER_VALIDATE_URL)) {
                return false;
            }
            return true;
        }

        /**
         * Build the Steam login URL
         *
         * @param string $return A custom return to URL
         * @return string
         */
        public function url($return = null)
        {
            if (!is_null($return)) {
                if (!$this->validateUrl($return)) {
                    throw new Exception('The return URL must be a valid URL with a URI Scheme or http or https.');
                }
            }
            else {
                $return = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
            }

            $params = array(
                'openid.ns'         => 'http://specs.openid.net/auth/2.0',
                'openid.mode'       => 'checkid_setup',
                'openid.return_to'  => $return,
                'openid.realm'      => (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'],
                'openid.identity'   => 'http://specs.openid.net/auth/2.0/identifier_select',
                'openid.claimed_id' => 'http://specs.openid.net/auth/2.0/identifier_select'
            );

            return self::$openId . '?' . http_build_query($params);
        }

        /**
         * Validates a Steam login request and returns the users Steam Community ID
         *
         * @return string
         */
        public function validate($timeout = 30)
        {
            $response = null;

            try {
                $params = array(
                    'openid.assoc_handle' => $_GET['openid_assoc_handle'],
                    'openid.signed'       => $_GET['openid_signed'],
                    'openid.sig'          => $_GET['openid_sig'],
                    'openid.ns'           => 'http://specs.openid.net/auth/2.0',
                );

                $signed = explode(',', $_GET['openid_signed']);

                foreach ($signed as $item) {
                    $val = $_GET['openid_' . str_replace('.', '_', $item)];
                    $params['openid.' . $item] = get_magic_quotes_gpc() ? stripslashes($val) : $val; 
                }

                $params['openid.mode'] = 'check_authentication';

                $data =  http_build_query($params);

                $context = @stream_context_create(array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => 
                        "Accept-language: en\r\n".
                        "Content-type: application/x-www-form-urlencoded\r\n" .
                        "Content-Length: " . strlen($data) . "\r\n",
                        'content' => $data,
                        ),
                    'timeout' => $timeout
                ));

                $result = file_get_contents(self::$openId, false, $context);

                preg_match("#^http://steamcommunity.com/openid/id/([0-9]{17,25})#", $_GET['openid_claimed_id'], $matches);

                $steamID64 = is_numeric($matches[1]) ? $matches[1] : 0;

                $response = preg_match("#is_valid\s*:\s*true#i", $result) == 1 ? $steamID64 : null;
            } catch (Exception $e) {
                $response = null;
            }

            if (is_null($response)) {
                throw new Exception('The Steam login request timed out or was invalid');
            }

            return $response;
        }
    }
}