Submit
Path:
~
/
/
opt
/
psa
/
admin
/
plib
/
modules
/
letsencrypt
/
vendor
/
aws
/
aws-sdk-php
/
src
/
Rds
/
File Content:
AuthTokenGenerator.php
<?php namespace PleskLetsEncrypt\Aws\Rds; use PleskLetsEncrypt\Aws\Credentials\CredentialsInterface; use PleskLetsEncrypt\Aws\Credentials\Credentials; use PleskLetsEncrypt\Aws\Signature\SignatureV4; use GuzzleHttp\Psr7\Request; use GuzzleHttp\Psr7\Uri; use PleskLetsEncrypt\GuzzleHttp\Promise; 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 Promise\FulfilledPromise($creds); $this->credentialProvider = Aws\constantly($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 * @param int $lifetime The lifetime of the token in minutes * * @return string Token generated */ public function createToken($endpoint, $region, $username, $lifetime = 15) { if (!\is_numeric($lifetime) || $lifetime > 15 || $lifetime <= 0) { throw new \InvalidArgumentException("Lifetime must be a positive number less than or equal to 15, was {$lifetime}"); } $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(), '+' . $lifetime . ' minutes')->getUri(); // Remove 2 extra slash from the presigned url result return \substr($url, 2); } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
Exception
---
0755
AuthTokenGenerator.php
2121 bytes
0644
RdsClient.php
36695 bytes
0644
N4ST4R_ID | Naxtarrr