public override void DoExecuteCmdlet()
        {
            ConfirmAction(
                string.Format(Resources.DoFullRestore, StorageContainerUri),
                HsmName, () =>
            {
                var errorMsg = string.Format(Resources.FullRestoreFailed, HsmName);
                try
                {
                    if (KeyName == null)
                    {
                        Track2DataClient.RestoreHsm(HsmName, StorageContainerUri, SasToken.ConvertToString(), BackupFolder);
                    }
                    else
                    {
                        Track2DataClient.SelectiveRestoreHsm(HsmName, KeyName, StorageContainerUri, SasToken.ConvertToString(), BackupFolder);
                        errorMsg = string.Format(Resources.SelectiveRestoreFailed, KeyName, HsmName);
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(errorMsg, ex);
                }

                if (PassThru)
                {
                    WriteObject(true);
                }
            }
                );
        }
        private void SetConnectionString()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append($"BlobEndpoint={BlobEndpoint};");
            sb.Append($"QueueEndpoint={QueueEndpoint};");
            sb.Append($"FileEndpoint={FileEndpoint};");
            sb.Append($"TableEndpoint={TableEndpoint};");
            sb.Append($"SharedAccessSignature={SasToken.TrimStart('?')}");
            ConnectionString = sb.ToString();
        }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public override void Validate()
 {
     base.Validate();
     if (AccountKey != null)
     {
         AccountKey.Validate();
     }
     if (SasToken != null)
     {
         SasToken.Validate();
     }
 }
 public override void DoExecuteCmdlet()
 {
     ConfirmAction(
         string.Format(Resources.DoFullRestore, StorageContainerUri),
         Name, () =>
     {
         try
         {
             Track2DataClient.RestoreHsm(Name, StorageContainerUri, SasToken.ConvertToString(), BackupFolder);
         }
         catch (Exception ex)
         {
             throw new Exception(string.Format(Resources.FullRestoreFailed, Name), ex);
         }
         if (PassThru)
         {
             WriteObject(true);
         }
     }
         );
 }
예제 #5
0
        internal static Secret CreateAzureStorageSasTokenSecret(string secretValue)
        {
            // In this case, the environment variable is expected to hold an Azure Storage connection string
            var cloudStorageAccount = CloudStorageAccount.Parse(secretValue);

            // Create a godlike SAS token for the account, so that we don't need to reimplement the Central Secrets Service.
            var sasToken = cloudStorageAccount.GetSharedAccessSignature(new SharedAccessAccountPolicy
            {
                SharedAccessExpiryTime = null,
                Permissions            = SharedAccessAccountPermissions.Add | SharedAccessAccountPermissions.Create | SharedAccessAccountPermissions.Delete | SharedAccessAccountPermissions.List | SharedAccessAccountPermissions.ProcessMessages | SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Update | SharedAccessAccountPermissions.Write,
                Services         = SharedAccessAccountServices.Blob,
                ResourceTypes    = SharedAccessAccountResourceTypes.Object | SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Service,
                Protocols        = SharedAccessProtocol.HttpsOnly,
                IPAddressOrRange = null,
            });

            var internalSasToken = new SasToken(
                token: sasToken,
                storageAccount: cloudStorageAccount.Credentials.AccountName,
                resourcePath: null);

            return(new UpdatingSasToken(internalSasToken));
        }
        public SasParameters(string sasToken)
        {
            SasToken = sasToken.TrimStart('?');

            foreach (string parameter in SasToken.Split('&'))
            {
                string paramName         = parameter.ToLower().Split('=')[0];
                string encodedParamValue = parameter.Split('=')[1];
                string paramValue        = WebUtility.UrlDecode(encodedParamValue);

                if (paramName.Equals("api-version"))
                {
                    ApiVersion = paramValue;
                }
                if (paramName.Equals("sv"))
                {
                    SignedVersion = paramValue;
                }
                if (paramName.Equals("ss"))
                {
                    SignedServices = paramValue;
                }
                if (paramName.Equals("srt"))
                {
                    SignedResourceTypes = paramValue;
                }
                if (paramName.Equals("sp"))
                {
                    SignedPermission = paramValue;
                }
                if (paramName.Equals("sip"))
                {
                    SignedIp = paramValue;
                }
                if (paramName.Equals("spr"))
                {
                    SignedProtocol = paramValue;
                }
                if (paramName.Equals("sig"))
                {
                    Signature = encodedParamValue;
                }

                if (paramName.Equals("st"))
                {
                    SignedStart      = paramValue;
                    SignedStartUtc   = ParseDate(SignedStart);
                    SignedStartLocal = SignedStartUtc.ToLocalTime();
                }

                if (paramName.Equals("se"))
                {
                    SignedExpiry      = paramValue;
                    SignedExpiryUtc   = ParseDate(SignedExpiry);
                    SignedExpiryLocal = SignedExpiryUtc.ToLocalTime();
                }

                // service sas
                if (paramName.Equals("sr") | paramName.Equals("tn"))
                {
                    IsServiceSas = true;
                }
            }
        }
 public override void DoExecuteCmdlet()
 {
     ConfirmAction(
         string.Format(Resources.DoFullBackup, StorageContainerUri),
         Name, () =>
     {
         try
         {
             WriteObject(Track2DataClient.BackupHsm(Name, StorageContainerUri, SasToken.ConvertToString()).AbsoluteUri);
         }
         catch (Exception ex)
         {
             throw new Exception(string.Format(Resources.FullBackupFailed, Name), ex);
         }
     });
 }
예제 #8
0
        public virtual async Task Send(byte[] content)
        {
            var c = new HttpClient();

            c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("SharedAccessSignature", SasToken.Split(' ')[1]);
            try
            {
                var endpoint = GetEndpoint();
                Console.Write($"Sending byte array to {endpoint}...");
                var result = await c.PostAsync(endpoint, new ByteArrayContent(content));

                if (result.IsSuccessStatusCode)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Success");
                    Console.ForegroundColor = ConsoleColor.White;
                    return;
                }

                Console.WriteLine(await result.Content.ReadAsStringAsync());
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(e);
                Console.ForegroundColor = ConsoleColor.White;
            }
        }