public function __construct() { $this->gadwp = GADWP(); include_once GADWP_DIR . 'tools/autoload.php'; $config = new Google_Config(); $config->setCacheClass('Google_Cache_Null'); if (function_exists('curl_version')) { $curlversion = curl_version(); if (isset($curlversion['version']) && version_compare(PHP_VERSION, '5.3.0') >= 0 && version_compare($curlversion['version'], '7.10.8') >= 0 && defined('GADWP_IP_VERSION') && GADWP_IP_VERSION) { $config->setClassConfig('Google_IO_Curl', array('options' => array(CURLOPT_IPRESOLVE => GADWP_IP_VERSION))); // Force CURL_IPRESOLVE_V4 or CURL_IPRESOLVE_V6 } } $this->client = new Google_Client($config); $this->client->setScopes('https://www.googleapis.com/auth/analytics.readonly'); $this->client->setAccessType('offline'); $this->client->setApplicationName('Google Analytics Dashboard'); $this->client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); $this->set_error_timeout(); $this->managequota = 'u' . get_current_user_id() . 's' . get_current_blog_id(); $this->access = array_map(array($this, 'map'), $this->access); if ($this->gadwp->config->options['ga_dash_userapi']) { $this->client->setClientId($this->gadwp->config->options['ga_dash_clientid']); $this->client->setClientSecret($this->gadwp->config->options['ga_dash_clientsecret']); $this->client->setDeveloperKey($this->gadwp->config->options['ga_dash_apikey']); } else { $this->client->setClientId($this->access[0]); $this->client->setClientSecret($this->access[1]); } $this->service = new Google_Service_Analytics($this->client); if ($this->gadwp->config->options['ga_dash_token']) { $token = $this->gadwp->config->options['ga_dash_token']; if ($token) { try { $this->client->setAccessToken($token); $gadwp->config->options['ga_dash_token'] = $this->client->getAccessToken(); } catch (Google_IO_Exception $e) { GADWP_Tools::set_cache('ga_dash_lasterror', date('Y-m-d H:i:s') . ': ' . esc_html($e), $this->error_timeout); } catch (Google_Service_Exception $e) { GADWP_Tools::set_cache('ga_dash_lasterror', date('Y-m-d H:i:s') . ': ' . esc_html("(" . $e->getCode() . ") " . $e->getMessage()), $this->error_timeout); GADWP_Tools::set_cache('ga_dash_gapi_errors', array($e->getCode(), (array) $e->getErrors()), $this->error_timeout); $this->reset_token(); } catch (Exception $e) { GADWP_Tools::set_cache('ga_dash_lasterror', date('Y-m-d H:i:s') . ': ' . esc_html($e), $this->error_timeout); $this->reset_token(); } if (is_multisite() && $this->gadwp->config->options['ga_dash_network']) { $this->gadwp->config->set_plugin_options(true); } else { $this->gadwp->config->set_plugin_options(); } } } }
public function __construct() { $this->gadwp = GADWP(); include_once GADWP_DIR . 'tools/autoload.php'; $config = new Google_Config(); $config->setCacheClass('Google_Cache_Null'); if (function_exists('curl_version')) { $curlversion = curl_version(); if (isset($curlversion['version']) && version_compare(PHP_VERSION, '5.3.0') >= 0 && version_compare($curlversion['version'], '7.10.8') >= 0 && defined('GADWP_IP_VERSION') && GADWP_IP_VERSION) { $config->setClassConfig('Google_IO_Curl', array('options' => array(CURLOPT_IPRESOLVE => GADWP_IP_VERSION))); // Force // CURL_IPRESOLVE_V4 // or // CURL_IPRESOLVE_V6 } } $this->client = new Google_Client($config); $this->client->setScopes('https://www.googleapis.com/auth/analytics.readonly'); $this->client->setAccessType('offline'); $this->client->setApplicationName('Google Analytics Dashboard'); $this->client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); $this->set_error_timeout(); $this->managequota = 'u' . get_current_user_id() . 's' . get_current_blog_id(); if ($this->gadwp->config->options['ga_dash_userapi']) { $this->client->setClientId($this->gadwp->config->options['ga_dash_clientid']); $this->client->setClientSecret($this->gadwp->config->options['ga_dash_clientsecret']); $this->client->setDeveloperKey($this->gadwp->config->options['ga_dash_apikey']); } else { $this->client->setClientId($this->gadwp->config->access[0]); $this->client->setClientSecret($this->gadwp->config->access[1]); $this->client->setDeveloperKey($this->gadwp->config->access[2]); } $this->service = new Google_Service_Analytics($this->client); if ($this->gadwp->config->options['ga_dash_token']) { $token = $this->gadwp->config->options['ga_dash_token']; $token = $this->refresh_token(); if ($token) { $this->client->setAccessToken($token); } } }
function __construct() { global $GADASH_Config; include_once $GADASH_Config->plugin_path . '/tools/autoload.php'; $config = new Google_Config(); $config->setCacheClass('Google_Cache_Null'); if (function_exists('curl_version')) { $curlversion = curl_version(); if (isset($curlversion['version']) and version_compare($curlversion['version'], '7.10.8') >= 0 and defined('GADWP_IP_VERSION') and GADWP_IP_VERSION) { $config->setClassConfig('Google_IO_Curl', array('options' => array(CURLOPT_IPRESOLVE => GADWP_IP_VERSION))); // Force CURL_IPRESOLVE_V4 OR CURL_IPRESOLVE_V6 } } $this->client = new Google_Client($config); $this->client->setScopes('https://www.googleapis.com/auth/analytics.readonly'); $this->client->setAccessType('offline'); $this->client->setApplicationName('Google Analytics Dashboard'); $this->client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); $this->set_error_timeout(); $this->managequota = 'u' . get_current_user_id() . 's' . get_current_blog_id(); if ($GADASH_Config->options['ga_dash_userapi']) { $this->client->setClientId($GADASH_Config->options['ga_dash_clientid']); $this->client->setClientSecret($GADASH_Config->options['ga_dash_clientsecret']); $this->client->setDeveloperKey($GADASH_Config->options['ga_dash_apikey']); } else { $this->client->setClientId('65556128781.apps.googleusercontent.com'); $this->client->setClientSecret('Kc7888wgbc_JbeCpbFjnYpwE'); $this->client->setDeveloperKey('AIzaSyBG7LlUoHc29ZeC_dsShVaBEX15SfRl_WY'); } $this->service = new Google_Service_Analytics($this->client); if ($GADASH_Config->options['ga_dash_token']) { $token = $GADASH_Config->options['ga_dash_token']; $token = $this->ga_dash_refresh_token(); if ($token) { $this->client->setAccessToken($token); } } }
/** * Set the Cache object * @param Google_Cache_Abstract $cache */ public function setCache(Google_Cache_Abstract $cache) { $this->config->setCacheClass(get_class($cache)); $this->cache = $cache; }
/** Google authentication */ function googleAuthenticate($code) { $state = getGoogleAuthenticateState(); if ($state === false) { return; } include dirname(__DIR__) . '/config/config.php'; global $CDASH_DB_HOST, $CDASH_DB_LOGIN, $CDASH_DB_PASS, $CDASH_DB_NAME; $SessionCachePolicy = 'private_no_expire'; // initialize the session session_name('CDash'); session_cache_limiter($SessionCachePolicy); session_set_cookie_params($CDASH_COOKIE_EXPIRATION_TIME); @ini_set('session.gc_maxlifetime', $CDASH_COOKIE_EXPIRATION_TIME + 600); session_start(); // check that the anti-forgery token is valid if ($state->csrfToken != $_SESSION['cdash']['csrfToken']) { add_log('state anti-forgery token mismatch: ' . $state->csrfToken . ' vs ' . $_SESSION['cdash']['csrfToken'], 'googleAuthenticate', LOG_ERR); return; } $redirectURI = strtok(get_server_URI(false), '?'); // The return value of get_server_URI can be inconsistent. // It simply returns $CDASH_BASE_URL if that variable is set, yielding a // return value like http://mydomain.com/CDash. // If this variable is not set, then it will return the full URI including // the current script, ie // http://mydomain.com/CDash/googleauth_callback.php. // // Make sure that redirectURI contains the path to our callback script. if (strpos($redirectURI, 'googleauth_callback.php') === false) { $redirectURI .= '/googleauth_callback.php'; } try { $config = new Google_Config(); if ($CDASH_MEMCACHE_ENABLED) { $config->setCacheClass('Google_Cache_Memcache'); list($server, $port) = $CDASH_MEMCACHE_SERVER; $config->setClassConfig('Google_Cache_Memcache', 'host', $server); $config->setClassConfig('Google_Cache_Memcache', 'port', $port); } $client = new Google_Client($config); $client->setClientId($GOOGLE_CLIENT_ID); $client->setClientSecret($GOOGLE_CLIENT_SECRET); $client->setRedirectUri($redirectURI); $client->authenticate($_GET['code']); $oauth = new Google_Service_Oauth2($client); $me = $oauth->userinfo->get(); $tokenResponse = json_decode($client->getAccessToken()); } catch (Google_Auth_Exception $e) { add_log('Google access token request failed: ' . $e->getMessage(), 'googleAuthenticate', LOG_ERR); return; } // Check if this email address appears in our user database $email = strtolower($me->getEmail()); $db = pdo_connect("{$CDASH_DB_HOST}", "{$CDASH_DB_LOGIN}", "{$CDASH_DB_PASS}"); pdo_select_db("{$CDASH_DB_NAME}", $db); $sql = 'SELECT id,password FROM ' . qid('user') . " WHERE email='" . pdo_real_escape_string($email) . "'"; $result = pdo_query("{$sql}"); if (pdo_num_rows($result) == 0) { // if no match is found, redirect to pre-filled out registration page pdo_free_result($result); $firstname = $me->getGivenName(); $lastname = $me->getFamilyName(); header("Location: register.php?firstname={$firstname}&lastname={$lastname}&email={$email}"); return false; } $user_array = pdo_fetch_array($result); $pass = $user_array['password']; if ($state->rememberMe) { require_once 'include/login_functions.php'; setRememberMeCookie($user_array['id']); } $sessionArray = array('login' => $email, 'passwd' => $user_array['password'], 'ID' => session_id(), 'valid' => 1, 'loginid' => $user_array['id']); $_SESSION['cdash'] = $sessionArray; session_write_close(); pdo_free_result($result); header("Location: {$state->requestedURI}"); return true; // authentication succeeded }