Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
alain
Make it Open Project Site
Commits
bfa1325c
Commit
bfa1325c
authored
Feb 25, 2021
by
alain
🐙
Browse files
remove updraft
parent
4ab81fac
Changes
203
Show whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 203+
files are displayed.
Plain diff
Email patch
wordpress/wp-content/plugins/updraftplus/includes/Google/Auth/Exception.php
deleted
100644 → 0
View file @
4ab81fac
<?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.
*/
if
(
!
class_exists
(
'UDP_Google_Client'
))
{
require_once
dirname
(
__FILE__
)
.
'/../autoload.php'
;
}
class
Google_Auth_Exception
extends
Google_Exception
{
}
wordpress/wp-content/plugins/updraftplus/includes/Google/Auth/LoginTicket.php
deleted
100644 → 0
View file @
4ab81fac
<?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.
*/
if
(
!
class_exists
(
'UDP_Google_Client'
))
{
require_once
dirname
(
__FILE__
)
.
'/../autoload.php'
;
}
/**
* Class to hold information about an authenticated login.
*
* @author Brian Eaton <beaton@google.com>
*/
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
);
}
}
wordpress/wp-content/plugins/updraftplus/includes/Google/Auth/OAuth2.php
deleted
100644 → 0
View file @
4ab81fac
<?php
/*
* Copyright 2008 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.
*/
if
(
!
class_exists
(
'UDP_Google_Client'
))
{
require_once
dirname
(
__FILE__
)
.
'/../autoload.php'
;
}
/**
* Authentication class that deals with the OAuth 2 web-server authentication flow
*
*/
class
Google_Auth_OAuth2
extends
Google_Auth_Abstract
{
const
OAUTH2_REVOKE_URI
=
'https://accounts.google.com/o/oauth2/revoke'
;
const
OAUTH2_TOKEN_URI
=
'https://accounts.google.com/o/oauth2/token'
;
const
OAUTH2_AUTH_URL
=
'https://accounts.google.com/o/oauth2/auth'
;
const
CLOCK_SKEW_SECS
=
300
;
// five minutes in seconds
const
AUTH_TOKEN_LIFETIME_SECS
=
300
;
// five minutes in seconds
const
MAX_TOKEN_LIFETIME_SECS
=
86400
;
// one day in seconds
const
OAUTH2_ISSUER
=
'accounts.google.com'
;
/** @var Google_Auth_AssertionCredentials $assertionCredentials */
private
$assertionCredentials
;
/**
* @var string The state parameters for CSRF and other forgery protection.
*/
private
$state
;
/**
* @var array The token bundle.
*/
private
$token
=
array
();
/**
* @var UDP_Google_Client the base client
*/
private
$client
;
/**
* Instantiates the class, but does not initiate the login flow, leaving it
* to the discretion of the caller.
*/
public
function
__construct
(
UDP_Google_Client
$client
)
{
$this
->
client
=
$client
;
}
/**
* 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
(
UDP_Google_Http_Request
$request
)
{
$request
=
$this
->
sign
(
$request
);
return
$this
->
client
->
getIo
()
->
makeRequest
(
$request
);
}
/**
* @param string $code
* @throws Google_Auth_Exception
* @return string
*/
public
function
authenticate
(
$code
)
{
if
(
strlen
(
$code
)
==
0
)
{
throw
new
Google_Auth_Exception
(
"Invalid code"
);
}
// We got here from the redirect from a successful authorization grant,
// fetch the access token
$request
=
new
UDP_Google_Http_Request
(
self
::
OAUTH2_TOKEN_URI
,
'POST'
,
array
(),
array
(
'code'
=>
$code
,
'grant_type'
=>
'authorization_code'
,
'redirect_uri'
=>
$this
->
client
->
getClassConfig
(
$this
,
'redirect_uri'
),
'client_id'
=>
$this
->
client
->
getClassConfig
(
$this
,
'client_id'
),
'client_secret'
=>
$this
->
client
->
getClassConfig
(
$this
,
'client_secret'
)
)
);
$request
->
disableGzip
();
$response
=
$this
->
client
->
getIo
()
->
makeRequest
(
$request
);
if
(
$response
->
getResponseHttpCode
()
==
200
)
{
$this
->
setAccessToken
(
$response
->
getResponseBody
());
$this
->
token
[
'created'
]
=
time
();
return
$this
->
getAccessToken
();
}
else
{
$decodedResponse
=
json_decode
(
$response
->
getResponseBody
(),
true
);
if
(
$decodedResponse
!=
null
&&
$decodedResponse
[
'error'
])
{
$errorText
=
$decodedResponse
[
'error'
];
if
(
isset
(
$decodedResponse
[
'error_description'
]))
{
$errorText
.
=
": "
.
$decodedResponse
[
'error_description'
];
}
}
throw
new
Google_Auth_Exception
(
sprintf
(
"Error fetching OAuth2 access token, message: '%s'"
,
$errorText
),
$response
->
getResponseHttpCode
()
);
}
}
/**
* Create a URL to obtain user authorization.
* The authorization endpoint allows the user to first
* authenticate, and then grant/deny the access request.
* @param string $scope The scope is expressed as a list of space-delimited strings.
* @return string
*/
public
function
createAuthUrl
(
$scope
)
{
$params
=
array
(
'response_type'
=>
'code'
,
'redirect_uri'
=>
$this
->
client
->
getClassConfig
(
$this
,
'redirect_uri'
),
'client_id'
=>
$this
->
client
->
getClassConfig
(
$this
,
'client_id'
),
'scope'
=>
$scope
,
'access_type'
=>
$this
->
client
->
getClassConfig
(
$this
,
'access_type'
),
);
// Prefer prompt to approval prompt.
if
(
$this
->
client
->
getClassConfig
(
$this
,
'prompt'
))
{
$params
=
$this
->
maybeAddParam
(
$params
,
'prompt'
);
}
else
{
$params
=
$this
->
maybeAddParam
(
$params
,
'approval_prompt'
);
}
$params
=
$this
->
maybeAddParam
(
$params
,
'login_hint'
);
$params
=
$this
->
maybeAddParam
(
$params
,
'hd'
);
$params
=
$this
->
maybeAddParam
(
$params
,
'openid.realm'
);
$params
=
$this
->
maybeAddParam
(
$params
,
'include_granted_scopes'
);
// If the list of scopes contains plus.login, add request_visible_actions
// to auth URL.
$rva
=
$this
->
client
->
getClassConfig
(
$this
,
'request_visible_actions'
);
if
(
strpos
(
$scope
,
'plus.login'
)
&&
strlen
(
$rva
)
>
0
)
{
$params
[
'request_visible_actions'
]
=
$rva
;
}
if
(
isset
(
$this
->
state
))
{
$params
[
'state'
]
=
$this
->
state
;
}
return
self
::
OAUTH2_AUTH_URL
.
"?"
.
http_build_query
(
$params
,
''
,
'&'
);
}
/**
* @param string $token
* @throws Google_Auth_Exception
*/
public
function
setAccessToken
(
$token
)
{
$token
=
json_decode
(
$token
,
true
);
if
(
$token
==
null
)
{
throw
new
Google_Auth_Exception
(
'Could not json decode the token'
);
}
if
(
!
isset
(
$token
[
'access_token'
]))
{
throw
new
Google_Auth_Exception
(
"Invalid token format"
);
}
$this
->
token
=
$token
;
}
public
function
getAccessToken
()
{
return
json_encode
(
$this
->
token
);
}
public
function
getRefreshToken
()
{
if
(
array_key_exists
(
'refresh_token'
,
$this
->
token
))
{
return
$this
->
token
[
'refresh_token'
];
}
else
{
return
null
;
}
}
public
function
setState
(
$state
)
{
$this
->
state
=
$state
;
}
public
function
setAssertionCredentials
(
Google_Auth_AssertionCredentials
$creds
)
{
$this
->
assertionCredentials
=
$creds
;
}
/**
* Include an accessToken in a given apiHttpRequest.
* @param Google_Http_Request $request
* @return Google_Http_Request
* @throws Google_Auth_Exception
*/
public
function
sign
(
UDP_Google_Http_Request
$request
)
{
// add the developer key to the request before signing it
if
(
$this
->
client
->
getClassConfig
(
$this
,
'developer_key'
))
{
$request
->
setQueryParam
(
'key'
,
$this
->
client
->
getClassConfig
(
$this
,
'developer_key'
));
}
// Cannot sign the request without an OAuth access token.
if
(
null
==
$this
->
token
&&
null
==
$this
->
assertionCredentials
)
{
return
$request
;
}
// Check if the token is set to expire in the next 30 seconds
// (or has already expired).
if
(
$this
->
isAccessTokenExpired
())
{
if
(
$this
->
assertionCredentials
)
{
$this
->
refreshTokenWithAssertion
();
}
else
{
$this
->
client
->
getLogger
()
->
debug
(
'OAuth2 access token expired'
);
if
(
!
array_key_exists
(
'refresh_token'
,
$this
->
token
))
{
$error
=
"The OAuth 2.0 access token has expired,"
.
" and a refresh token is not available. Refresh tokens"
.
" are not returned for responses that were auto-approved."
;
$this
->
client
->
getLogger
()
->
error
(
$error
);
throw
new
Google_Auth_Exception
(
$error
);
}
$this
->
refreshToken
(
$this
->
token
[
'refresh_token'
]);
}
}
$this
->
client
->
getLogger
()
->
debug
(
'OAuth2 authentication'
);
// Add the OAuth2 header to the request
$request
->
setRequestHeaders
(
array
(
'Authorization'
=>
'Bearer '
.
$this
->
token
[
'access_token'
])
);
return
$request
;
}
/**
* Fetches a fresh access token with the given refresh token.
* @param string $refreshToken
* @return void
*/
public
function
refreshToken
(
$refreshToken
)
{
$this
->
refreshTokenRequest
(
array
(
'client_id'
=>
$this
->
client
->
getClassConfig
(
$this
,
'client_id'
),
'client_secret'
=>
$this
->
client
->
getClassConfig
(
$this
,
'client_secret'
),
'refresh_token'
=>
$refreshToken
,
'grant_type'
=>
'refresh_token'
)
);
}
/**
* Fetches a fresh access token with a given assertion token.
* @param Google_Auth_AssertionCredentials $assertionCredentials optional.
* @return void
*/
public
function
refreshTokenWithAssertion
(
$assertionCredentials
=
null
)
{
if
(
!
$assertionCredentials
)
{
$assertionCredentials
=
$this
->
assertionCredentials
;
}
$cacheKey
=
$assertionCredentials
->
getCacheKey
();
if
(
$cacheKey
)
{
// We can check whether we have a token available in the
// cache. If it is expired, we can retrieve a new one from
// the assertion.
$token
=
$this
->
client
->
getCache
()
->
get
(
$cacheKey
);
if
(
$token
)
{
$this
->
setAccessToken
(
$token
);
}
if
(
!
$this
->
isAccessTokenExpired
())
{
return
;
}
}
$this
->
client
->
getLogger
()
->
debug
(
'OAuth2 access token expired'
);
$this
->
refreshTokenRequest
(
array
(
'grant_type'
=>
'assertion'
,
'assertion_type'
=>
$assertionCredentials
->
assertionType
,
'assertion'
=>
$assertionCredentials
->
generateAssertion
(),
)
);
if
(
$cacheKey
)
{
// Attempt to cache the token.
$this
->
client
->
getCache
()
->
set
(
$cacheKey
,
$this
->
getAccessToken
()
);
}
}
private
function
refreshTokenRequest
(
$params
)
{
if
(
isset
(
$params
[
'assertion'
]))
{
$this
->
client
->
getLogger
()
->
info
(
'OAuth2 access token refresh with Signed JWT assertion grants.'
);
}
else
{
$this
->
client
->
getLogger
()
->
info
(
'OAuth2 access token refresh'
);
}
$http
=
new
UDP_Google_Http_Request
(
self
::
OAUTH2_TOKEN_URI
,
'POST'
,
array
(),
$params
);
$http
->
disableGzip
();
$request
=
$this
->
client
->
getIo
()
->
makeRequest
(
$http
);
$code
=
$request
->
getResponseHttpCode
();
$body
=
$request
->
getResponseBody
();
if
(
200
==
$code
)
{
$token
=
json_decode
(
$body
,
true
);
if
(
$token
==
null
)
{
throw
new
Google_Auth_Exception
(
"Could not json decode the access token"
);
}
if
(
!
isset
(
$token
[
'access_token'
])
||
!
isset
(
$token
[
'expires_in'
]))
{
throw
new
Google_Auth_Exception
(
"Invalid token format"
);
}
if
(
isset
(
$token
[
'id_token'
]))
{
$this
->
token
[
'id_token'
]
=
$token
[
'id_token'
];
}
$this
->
token
[
'access_token'
]
=
$token
[
'access_token'
];
$this
->
token
[
'expires_in'
]
=
$token
[
'expires_in'
];
$this
->
token
[
'created'
]
=
time
();
}
else
{
throw
new
Google_Auth_Exception
(
"Error refreshing the OAuth2 token, message: '
$body
'"
,
$code
);
}
}
/**
* Revoke an OAuth2 access token or refresh token. This method will revoke the current access
* token, if a token isn't provided.
* @throws Google_Auth_Exception
* @param string|null $token The token (access token or a refresh token) that should be revoked.
* @return boolean Returns True if the revocation was successful, otherwise False.
*/
public
function
revokeToken
(
$token
=
null
)
{
if
(
!
$token
)
{
if
(
!
$this
->
token
)
{
// Not initialized, no token to actually revoke
return
false
;
}
elseif
(
array_key_exists
(
'refresh_token'
,
$this
->
token
))
{
$token
=
$this
->
token
[
'refresh_token'
];
}
else
{
$token
=
$this
->
token
[
'access_token'
];
}
}
$request
=
new
UDP_Google_Http_Request
(
self
::
OAUTH2_REVOKE_URI
,
'POST'
,
array
(),
"token=
$token
"
);
$request
->
disableGzip
();
$response
=
$this
->
client
->
getIo
()
->
makeRequest
(
$request
);
$code
=
$response
->
getResponseHttpCode
();
if
(
$code
==
200
)
{
$this
->
token
=
null
;
return
true
;
}
return
false
;
}
/**
* Returns if the access_token is expired.
* @return bool Returns True if the access_token is expired.
*/
public
function
isAccessTokenExpired
()
{
if
(
!
$this
->
token
||
!
isset
(
$this
->
token
[
'created'
]))
{
return
true
;
}
// If the token is set to expire in the next 30 seconds.
$expired
=
(
$this
->
token
[
'created'
]
+
(
$this
->
token
[
'expires_in'
]
-
30
))
<
time
();
return
$expired
;
}
// Gets federated sign-on certificates to use for verifying identity tokens.
// Returns certs as array structure, where keys are key ids, and values
// are PEM encoded certificates.
private
function
getFederatedSignOnCerts
()
{
return
$this
->
retrieveCertsFromLocation
(
$this
->
client
->
getClassConfig
(
$this
,
'federated_signon_certs_url'
)
);
}
/**
* Retrieve and cache a certificates file.
*
* @param $url string location
* @throws Google_Auth_Exception
* @return array certificates
*/
public
function
retrieveCertsFromLocation
(
$url
)
{
// If we're retrieving a local file, just grab it.
if
(
"http"
!=
substr
(
$url
,
0
,
4
))
{
$file
=
file_get_contents
(
$url
);
if
(
$file
)
{
return
json_decode
(
$file
,
true
);
}
else
{
throw
new
Google_Auth_Exception
(
"Failed to retrieve verification certificates: '"
.
$url
.
"'."
);
}
}
// This relies on makeRequest caching certificate responses.
$request
=
$this
->
client
->
getIo
()
->
makeRequest
(
new
UDP_Google_Http_Request
(
$url
)
);
if
(
$request
->
getResponseHttpCode
()
==
200
)
{
$certs
=
json_decode
(
$request
->
getResponseBody
(),
true
);
if
(
$certs
)
{
return
$certs
;
}
}
throw
new
Google_Auth_Exception
(
"Failed to retrieve verification certificates: '"
.
$request
->
getResponseBody
()
.
"'."
,
$request
->
getResponseHttpCode
()
);
}
/**
* Verifies an id token and returns the authenticated apiLoginTicket.
* Throws an exception if the id token is not valid.
* The audience parameter can be used to control which id tokens are
* accepted. By default, the id token must have been issued to this OAuth2 client.
*
* @param $id_token
* @param $audience
* @return Google_Auth_LoginTicket
*/
public
function
verifyIdToken
(
$id_token
=
null
,
$audience
=
null
)
{
if
(
!
$id_token
)
{
$id_token
=
$this
->
token
[
'id_token'
];
}
$certs
=
$this
->
getFederatedSignonCerts
();
if
(
!
$audience
)
{
$audience
=
$this
->
client
->
getClassConfig
(
$this
,
'client_id'
);
}