Esempio n. 1
0
        static private async Task api(string[] args)
        {
            UserCognitoCredentials credentials = getSavedCredentials();

            if (credentials == null)
            {
                String password = GetPassword();
                credentials = getCognitoCredentials(args[0], password).Result;
                saveCredentials(credentials);
            }

            var signer  = new AWS4RequestSigner(credentials.getAccessKey(), credentials.getSecretKey());
            var request = new HttpRequestMessage {
                Method     = HttpMethod.Get,
                RequestUri = new Uri("https://ats.api.alexa.com/api?Action=TopSites&Count=5&CountryCode=" + args[2] + "&ResponseGroup=Country")
            };

            request.Headers.Add("x-api-key", args[1]);
            request.Headers.Add("x-amz-security-token", credentials.getSessionToken());

            request = await signer.Sign(request, "execute-api", "us-east-1");

            var client   = new HttpClient();
            var response = await client.SendAsync(request);

            var responseStr = await response.Content.ReadAsStringAsync();

            Console.WriteLine(responseStr);
        }
        public DigitalOceanBucketClient(HttpClient client, string accessKeyID, string accessKeySecret, string region)
        {
            var signer = new AWS4RequestSigner(accessKeyID, accessKeySecret);

            _client = new DigitalOceanHttpClient(client, signer, region);
            _region = region;
        }
Esempio n. 3
0
        public Function()
        {
            signer = new AWS4RequestSigner(ACCESS_KEY, SECRET_KEY);
            var config = new AmazonDynamoDBConfig {
                RegionEndpoint = RegionEndpoint.EUWest1
            };
            var client = new AmazonDynamoDBClient(config);

            table = Table.LoadTable(client, Environment.GetEnvironmentVariable("CONNECTION_ID_TABLE"));
        }
        static private async Task api(string[] args)
        {
            var signer  = new AWS4RequestSigner(args[0], args[1]);
            var request = new HttpRequestMessage {
                Method     = HttpMethod.Get,
                RequestUri = new Uri("https://awis.us-west-1.amazonaws.com/api?Action=urlInfo&ResponseGroup=Rank&Url=" + args[2])
            };

            request = await signer.Sign(request, "awis", "us-west-1");

            var client   = new HttpClient();
            var response = await client.SendAsync(request);

            var responseStr = await response.Content.ReadAsStringAsync();

            Console.WriteLine(responseStr);
        }
Esempio n. 5
0
        public async Task <string> Get()
        {
            var endpointUri = _configuration["AWS:urlAPIGw"];

            var signer  = new AWS4RequestSigner(_configuration["AWS:Key"], _configuration["AWS:Secret"]);
            var request = new HttpRequestMessage {
                Method     = HttpMethod.Get,
                RequestUri = new Uri(endpointUri)
            };

            request = await signer.Sign(request, _configuration["AWS:Service"], _configuration["AWS:Region"]);

            var client   = new HttpClient();
            var response = await client.SendAsync(request);

            var responseStr = await response.Content.ReadAsStringAsync();

            return(responseStr);
        }
        public async Task FunctionHandler(Request request, ILambdaContext context)
        {
            try
            {
                var accessKey     = Environment.GetEnvironmentVariable("ACCESS_KEY");
                var secretKey     = Environment.GetEnvironmentVariable("SECRET_KEY");
                var signer        = new AWS4RequestSigner(accessKey, secretKey);
                var repositoryUrl = $"{request.Endpoint}/_snapshot/{request.RepositoryName}";
                var service       = "es";

                await RegisterS3Repository(request, context, signer, repositoryUrl, service);
                await CreateSnapshot(request, context, signer, repositoryUrl, service);
            }
            catch (Exception ex)
            {
                context.Logger.LogLine($"Error performing backup: {ex.Message}");
                throw;
            }
        }
        public async Task <string> Post(InputModel input)
        {
            var endpointUri = _configuration["AWS:urlSocketAPI"] + input.connection_id;

            var signer  = new AWS4RequestSigner(_configuration["AWS:Key"], _configuration["AWS:Secret"]);
            var request = new HttpRequestMessage {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(endpointUri),
                Content    = new StringContent(input.message)
            };

            request = await signer.Sign(request, _configuration["AWS:Service"], _configuration["AWS:Region"]);

            var client   = new HttpClient();
            var response = await client.SendAsync(request);

            var responseStr = await response.Content.ReadAsStringAsync();

            return(responseStr);
        }
Esempio n. 8
0
        public async Task <HttpResponse> FunctionHandler(APIGatewayProxyRequest input, ILambdaContext context)
        {
            var message = JsonConvert.DeserializeObject <TmpMessage>(input.Body);
            var table   = Table.LoadTable(client, "ConnectionIds");

            var scanFilter = new ScanFilter();
            var search     = table.Scan(scanFilter);
            var remaining  = await search.GetRemainingAsync();

            var httpClient = new HttpClient();

            // Function no longer in use, therefore no up-to-date keys
            var signer = new AWS4RequestSigner("AccessKey", "SecretKey");

            foreach (var doc in remaining)
            {
                var connectionId = doc["ConnectionId"];
                var endpoint     =
                    $"https://{input.RequestContext.DomainName}/{input.RequestContext.Stage}/@connections/{connectionId}";

                var request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Post,
                    RequestUri = new Uri(endpoint),
                    Content    = new StringContent(message.Message)
                };

                request = await signer.Sign(request, "execute-api", "eu-west-1");

                var response = await httpClient.SendAsync(request);

                Console.WriteLine(await response.Content.ReadAsStringAsync());
            }

            return(new HttpResponse
            {
                statusCode = HttpStatusCode.OK
            });
        }
        private static async Task <HttpResponseMessage> CallWebservice(HttpMethod method, Uri uri, byte[] content = null)
        {
            var signer  = new AWS4RequestSigner(keyId, secretAccessKey);
            var request = new HttpRequestMessage
            {
                Method     = method,
                RequestUri = uri
            };

            if (content != null)
            {
                request.Content = new ByteArrayContent(content);
                string sha256Hash = Hash(content);
                request.Headers.Add("x-amz-content-sha256", sha256Hash);
            }

            request = await signer.Sign(request, service, region);

            var client   = new HttpClient();
            var response = await client.SendAsync(request);

            return(response);
        }
        static async Task <HttpRequestMessage> GetSignedRequest(HttpRequestMessage request)
        {
            var signer = new AWS4RequestSigner(Env.Var.ESAwsAccessKey, Env.Var.ESAwsSecretAccessKey);

            return(await signer.Sign(request, "es", Env.Var.ESAwsRegion));
        }
        private static async Task RegisterS3Repository(Request request, ILambdaContext context, AWS4RequestSigner signer, string repositoryUrl, string service)
        {
            context.Logger.LogLine($"Register ElasticSearch Repository: {request.RepositoryName}");
            var requestBody = new
            {
                type     = "s3",
                settings = new
                {
                    bucket   = request.S3Bucket,
                    region   = request.Region,
                    role_arn = request.RoleArn
                }
            };
            string requestBodyString = System.Text.Json.JsonSerializer.Serialize(requestBody);
            var    content           = new StringContent(requestBodyString, Encoding.UTF8, "application/json");

            var httpRequestRepository = new HttpRequestMessage
            {
                Method     = HttpMethod.Put,
                RequestUri = new Uri(repositoryUrl),
                Content    = content
            };

            httpRequestRepository = await signer.Sign(httpRequestRepository, service, request.Region);

            var client             = new HttpClient();
            var responseRepository = await client.SendAsync(httpRequestRepository);

            if (!responseRepository.IsSuccessStatusCode)
            {
                throw new Exception($"Error registering repository {request.RepositoryName}.\n" +
                                    $"Error code: {responseRepository.StatusCode}.\n" +
                                    $"Content: {await responseRepository.Content.ReadAsStringAsync()}");
            }
            context.Logger.LogLine($"ElasticSearch Repository {request.RepositoryName} successfully registered");
        }
        private static async Task CreateSnapshot(Request request, ILambdaContext context, AWS4RequestSigner signer, string repositoryUrl, string service)
        {
            var snapshotName = DateTime.Now.ToString("dd-MM-yyyy-h-mm-ss").ToLower();

            context.Logger.LogLine($"Create ElasticSearch Image: {repositoryUrl}/{snapshotName}");

            var httpRequestSnapshot = new HttpRequestMessage
            {
                Method     = HttpMethod.Put,
                RequestUri = new Uri($"{repositoryUrl}/{snapshotName}"),
                Content    = null
            };

            httpRequestSnapshot = await signer.Sign(httpRequestSnapshot, service, request.Region);

            var client           = new HttpClient();
            var responseSnapshot = await client.SendAsync(httpRequestSnapshot);

            if (!responseSnapshot.IsSuccessStatusCode)
            {
                throw new Exception($"Error creating snapshot {snapshotName}.\n" +
                                    $"Error code: {responseSnapshot.StatusCode}.\n" +
                                    $"Content: {await responseSnapshot.Content.ReadAsStringAsync()}");
            }
            context.Logger.LogLine($"ElasticSearch snapshot {snapshotName} successfully registered");
        }
Esempio n. 13
0
        private static async Task <bool> PutLogData
        (
            HttpClient client,
            string logName,
            string logData,
            string profile,
            TelemetryConfiguration telemetryConfiguration
        )
        {
            const string PathTemplate = "/put-log-data";

            try
            {
                var            chain = new CredentialProfileStoreChain();
                AWSCredentials awsCredentials;
                var            profileName = profile;
                var            region      = telemetryConfiguration.Region;

                if (chain.TryGetAWSCredentials(profileName, out awsCredentials))
                {
                    var signer = new AWS4RequestSigner
                                 (
                        awsCredentials.GetCredentials().AccessKey,
                        awsCredentials.GetCredentials().SecretKey
                                 );

                    dynamic requestMetadata = new JObject();
                    requestMetadata.version     = "1.0";
                    requestMetadata.service     = telemetryConfiguration.ServiceName;
                    requestMetadata.token       = "12345678";
                    requestMetadata.description = telemetryConfiguration.Description;

                    dynamic log = new JObject();
                    log.timestamp = DateTime.Now.ToString();
                    log.logName   = logName;
                    var logDataInBytes = System.Text.Encoding.UTF8.GetBytes(logData);
                    log.logData = System.Convert.ToBase64String(logDataInBytes);

                    dynamic body = new JObject();
                    body.requestMetadata = requestMetadata;
                    body.log             = log;

                    var requestContent = new StringContent(body.ToString(Formatting.None), Encoding.UTF8, "application/json");

                    var requestUri = new Uri(String.Join("", telemetryConfiguration.InvokeUrl, PathTemplate));

                    var request = new HttpRequestMessage
                    {
                        Method     = HttpMethod.Post,
                        RequestUri = requestUri,
                        Content    = requestContent
                    };

                    request = await signer.Sign(request, "execute-api", region);

                    var response = await client.SendAsync(request);

                    if (!response.IsSuccessStatusCode)
                    {
                        Log.Logger.Error("Http response faild with status code: " + response.StatusCode.ToString());
                    }

                    return(response.IsSuccessStatusCode);
                }
                Log.Logger.Error("Invalid Credentials.");
                return(false);
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex.Message);
                return(false);
            }
        }
 public DigitalOceanHttpClient(HttpClient client, AWS4RequestSigner signer, string region)
 {
     _client = client;
     _signer = signer;
     _region = region;
 }
Esempio n. 15
0
        async Task <HttpRequestMessage> GetSignedRequest(HttpRequestMessage request)
        {
            var signer = new AWS4RequestSigner(env.AWS_ACCESSKEY, env.AWS_SECRETACCESSKEY);

            return(await signer.Sign(request, "execute-api", env.AWS_REGION));
        }
    async Task <HttpRequestMessage> GetSignedRequest(HttpRequestMessage request)
    {
        var signer = new AWS4RequestSigner(env.AWS_ACCESS_KEY_ID, env.AWS_SECRET_ACCESS_KEY);

        return(await signer.Sign(request, "es", env.AWS_DEFAULT_REGION));
    }
Esempio n. 17
0
        private async Task <HttpRequestMessage> GetSignedRequest(HttpRequestMessage request)
        {
            var signer = new AWS4RequestSigner(_searchConfiguration.AWSESAccessKey, _searchConfiguration.AWSESSecretKey);

            return(await signer.Sign(request, "es", _searchConfiguration.AWSESRegion));
        }