Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/AWS/Aws/Rds/AuthTokenGenerator.php
Строк: 79
<?php
namespace AwsRds;

use 
AwsCredentialsCredentialsInterface;
use 
AwsCredentialsCredentials;
use 
AwsSignatureSignatureV4;
use 
GuzzleHttpPsr7Request;
use 
GuzzleHttpPsr7Uri;
use 
GuzzleHttpPromise;
use 
Aws;

/**
 * Generates RDS auth tokens for use with IAM authentication.
 */
class AuthTokenGenerator
{

    private 
$credentialProvider;

    
/**
     * The constructor takes an instance of Credentials or a CredentialProvider
     *
     * @param callable|Credentials $creds
     */
    
public function __construct($creds)
    {
        if (
$creds instanceof CredentialsInterface) {
            
$promise = new PromiseFulfilledPromise($creds);
            
$this->credentialProvider Awsconstantly($promise);
        } else {
            
$this->credentialProvider $creds;
        }
    }

    
/**
     * Create the token for database login
     *
     * @param string $endpoint The database hostname with port number specified
     *                         (e.g., host:port)
     * @param string $region The region where the database is located
     * @param string $username The username to login as
     *
     * @return string Token generated
     */
    
public function createToken($endpoint$region$username)
    {
        
$uri = new Uri($endpoint);
        
$uri $uri->withPath('/');
        
$uri $uri->withQuery('Action=connect&DBUser=' $username);

        
$request = new Request('GET'$uri);
        
$signer = new SignatureV4('rds-db'$region);
        
$provider $this->credentialProvider;

        
$url = (string) $signer->presign(
            
$request,
            
$provider()->wait(),
            
'+15 minutes'
        
)->getUri();

        
// Remove 2 extra slash from the presigned url result
        
return substr($url2);
    }
}
Онлайн: 0
Реклама