Skip to content

Commit

Permalink
Merge branch 'release/12.0' into release/13.0
Browse files Browse the repository at this point in the history
  • Loading branch information
tm1000 committed May 20, 2015
2 parents a183928 + f5bea40 commit 77255cc
Show file tree
Hide file tree
Showing 43 changed files with 8,556 additions and 8 deletions.
12 changes: 8 additions & 4 deletions Superfecta.class.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,11 @@ public function execute($scheme='ALL', $request, $debug=0, $keepGoing=false) {
include __DIR__ . '/includes/processors/superfecta_multi.php';
include __DIR__ . '/includes/processors/superfecta_single.php';



global $db, $amp_conf, $astman;
$options = array(
'db' => $db,
'db' => $this->db,
'amp_conf' => $amp_conf,
'astman' => $astman,
'debug' => 0,
Expand Down Expand Up @@ -460,10 +462,12 @@ public function ajaxHandler() {
$scheme = $_REQUEST['scheme'];
$source = $_REQUEST['source'];

$sql = "REPLACE INTO superfectaconfig (source,field,value) VALUES (?, ?, ?)";
$sth = $this->db->prepare($sql);
foreach($params as $key => $data) {
$sql = "REPLACE INTO superfectaconfig (source,field,value) VALUES (?, ?, ?)";
$sth = $this->db->prepare($sql);
$sth->execute(array($scheme . "_" . $source, $key, $_POST[$key]));
if (strcmp($data['type'], 'internal') != 0) {
$sth->execute(array($scheme . "_" . $source, $key, $_POST[$key]));
}
}
return array("status" => true);
break;
Expand Down
35 changes: 35 additions & 0 deletions includes/oauth-google/Google/Auth/Abstract.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php
/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once "Google/Http/Request.php";

/**
* Abstract class for the Authentication in the API client
* @author Chris Chabot <[email protected]>
*
*/
abstract class Google_Auth_Abstract
{
/**
* An utility function that first calls $this->auth->sign($request) and then
* executes makeRequest() on that signed request. Used for when a request
* should be authenticated
* @param Google_Http_Request $request
* @return Google_Http_Request $request
*/
abstract public function authenticatedRequest(Google_Http_Request $request);
abstract public function sign(Google_Http_Request $request);
}
100 changes: 100 additions & 0 deletions includes/oauth-google/Google/Auth/AppIdentity.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php
/*
* Copyright 2014 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/*
* WARNING - this class depends on the Google App Engine PHP library
* which is 5.3 and above only, so if you include this in a PHP 5.2
* setup or one without 5.3 things will blow up.
*/
use google\appengine\api\app_identity\AppIdentityService;

require_once "Google/Auth/Abstract.php";
require_once "Google/Http/Request.php";

/**
* Authentication via the Google App Engine App Identity service.
*/
class Google_Auth_AppIdentity extends Google_Auth_Abstract
{
const CACHE_PREFIX = "Google_Auth_AppIdentity::";
const CACHE_LIFETIME = 1500;
private $key = null;
private $client;
private $token = false;
private $tokenScopes = false;

public function __construct(Google_Client $client, $config = null)
{
$this->client = $client;
}

/**
* Retrieve an access token for the scopes supplied.
*/
public function authenticateForScope($scopes)
{
if ($this->token && $this->tokenScopes == $scopes) {
return $this->token;
}
$memcache = new Memcached();
$this->token = $memcache->get(self::CACHE_PREFIX . $scopes);
if (!$this->token) {
$this->token = AppIdentityService::getAccessToken($scopes);
if ($this->token) {
$memcache_key = self::CACHE_PREFIX;
if (is_string($scopes)) {
$memcache_key .= $scopes;
} else if (is_array($scopes)) {
$memcache_key .= implode(":", $scopes);
}
$memcache->set($memcache_key, $this->token, self::CACHE_LIFETIME);
}
}
$this->tokenScopes = $scopes;
return $this->token;
}

/**
* Perform an authenticated / signed apiHttpRequest.
* This function takes the apiHttpRequest, calls apiAuth->sign on it
* (which can modify the request in what ever way fits the auth mechanism)
* and then calls apiCurlIO::makeRequest on the signed request
*
* @param Google_Http_Request $request
* @return Google_Http_Request The resulting HTTP response including the
* responseHttpCode, responseHeaders and responseBody.
*/
public function authenticatedRequest(Google_Http_Request $request)
{
$request = $this->sign($request);
return $this->io->makeRequest($request);
}

public function sign(Google_Http_Request $request)
{
if (!$this->token) {
// No token, so nothing to do.
return $request;
}
// Add the OAuth2 header to the request
$request->setRequestHeaders(
array('Authorization' => 'Bearer ' . $this->token['access_token'])
);

return $request;
}
}
138 changes: 138 additions & 0 deletions includes/oauth-google/Google/Auth/AssertionCredentials.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
<?php
/*
* Copyright 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

require_once "Google/Auth/OAuth2.php";
require_once "Google/Signer/P12.php";
require_once "Google/Utils.php";

/**
* Credentials object used for OAuth 2.0 Signed JWT assertion grants.
*
* @author Chirag Shah <[email protected]>
*/
class Google_Auth_AssertionCredentials
{
const MAX_TOKEN_LIFETIME_SECS = 3600;

public $serviceAccountName;
public $scopes;
public $privateKey;
public $privateKeyPassword;
public $assertionType;
public $sub;
/**
* @deprecated
* @link http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06
*/
public $prn;
private $useCache;

/**
* @param $serviceAccountName
* @param $scopes array List of scopes
* @param $privateKey
* @param string $privateKeyPassword
* @param string $assertionType
* @param bool|string $sub The email address of the user for which the
* application is requesting delegated access.
* @param bool useCache Whether to generate a cache key and allow
* automatic caching of the generated token.
*/
public function __construct(
$serviceAccountName,
$scopes,
$privateKey,
$privateKeyPassword = 'notasecret',
$assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer',
$sub = false,
$useCache = true
) {
$this->serviceAccountName = $serviceAccountName;
$this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes);
$this->privateKey = $privateKey;
$this->privateKeyPassword = $privateKeyPassword;
$this->assertionType = $assertionType;
$this->sub = $sub;
$this->prn = $sub;
$this->useCache = $useCache;
}

/**
* Generate a unique key to represent this credential.
* @return string
*/
public function getCacheKey()
{
if (!$this->useCache) {
return false;
}
$h = $this->sub;
$h .= $this->assertionType;
$h .= $this->privateKey;
$h .= $this->scopes;
$h .= $this->serviceAccountName;
return md5($h);
}

public function generateAssertion()
{
$now = time();

$jwtParams = array(
'aud' => Google_Auth_OAuth2::OAUTH2_TOKEN_URI,
'scope' => $this->scopes,
'iat' => $now,
'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS,
'iss' => $this->serviceAccountName,
);

if ($this->sub !== false) {
$jwtParams['sub'] = $this->sub;
} else if ($this->prn !== false) {
$jwtParams['prn'] = $this->prn;
}

return $this->makeSignedJwt($jwtParams);
}

/**
* Creates a signed JWT.
* @param array $payload
* @return string The signed JWT.
*/
private function makeSignedJwt($payload)
{
$header = array('typ' => 'JWT', 'alg' => 'RS256');

$payload = json_encode($payload);
// Handle some overzealous escaping in PHP json that seemed to cause some errors
// with claimsets.
$payload = str_replace('\/', '/', $payload);

$segments = array(
Google_Utils::urlSafeB64Encode(json_encode($header)),
Google_Utils::urlSafeB64Encode($payload)
);

$signingInput = implode('.', $segments);
$signer = new Google_Signer_P12($this->privateKey, $this->privateKeyPassword);
$signature = $signer->sign($signingInput);
$segments[] = Google_Utils::urlSafeB64Encode($signature);

return implode(".", $segments);
}
}
22 changes: 22 additions & 0 deletions includes/oauth-google/Google/Auth/Exception.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php
/*
* Copyright 2013 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

require_once "Google/Exception.php";

class Google_Auth_Exception extends Google_Exception
{
}
69 changes: 69 additions & 0 deletions includes/oauth-google/Google/Auth/LoginTicket.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?php
/*
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

require_once "Google/Auth/Exception.php";

/**
* Class to hold information about an authenticated login.
*
* @author Brian Eaton <[email protected]>
*/
class Google_Auth_LoginTicket
{
const USER_ATTR = "sub";

// Information from id token envelope.
private $envelope;

// Information from id token payload.
private $payload;

/**
* Creates a user based on the supplied token.
*
* @param string $envelope Header from a verified authentication token.
* @param string $payload Information from a verified authentication token.
*/
public function __construct($envelope, $payload)
{
$this->envelope = $envelope;
$this->payload = $payload;
}

/**
* Returns the numeric identifier for the user.
* @throws Google_Auth_Exception
* @return
*/
public function getUserId()
{
if (array_key_exists(self::USER_ATTR, $this->payload)) {
return $this->payload[self::USER_ATTR];
}
throw new Google_Auth_Exception("No user_id in token");
}

/**
* Returns attributes from the login ticket. This can contain
* various information about the user session.
* @return array
*/
public function getAttributes()
{
return array("envelope" => $this->envelope, "payload" => $this->payload);
}
}
Loading

0 comments on commit 77255cc

Please sign in to comment.