Example #1
0
        private void SavePolicies_Click(object sender, RoutedEventArgs e)
        {
            SharedAccessPolicies policies = new SharedAccessPolicies();

            if (PolicyViews != null)
            {
                foreach (PolicyView policyView in PolicyViews)
                {
                    if (!String.IsNullOrEmpty(policyView.PolicyName))
                    {
                        if (!policyView.Validate())
                        {
                            MessageBox.Show("Policy '" + policyView.PolicyName + "' has one or more fields that are not formatted properly.", "Validation Error", MessageBoxButton.OK);
                            return;
                        }
                        policies.Add(policyView.PolicyName, policyView.Policy);
                    }
                }
            }

            try
            {
                Cursor = Cursors.Wait;
                ViewModel.SetContainerAccessPolicies(containerName, policies);
                MessageBox.Show("Container policies have been saved.", "Save Complete", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Saving policies failed due to an error.\r\n\r\n" + ex.ToString(), "Save Error", MessageBoxButton.OK);
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }
Example #2
0
        ////public string SharedAccessAuthenticatedURI(Uri uri, string permission) { return ""; }

        /// <summary>
        /// Writes a collection of shared access policies to the specified stream in XML format.
        /// </summary>
        /// <param name="sharedAccessPolicies">A collection of shared access policies.</param>
        /// <param name="outputStream">An output stream.</param>
        public static void WriteSharedAccessIdentifiers(SharedAccessPolicies sharedAccessPolicies, Stream outputStream)
        {
            CommonUtils.AssertNotNull("sharedAccessPolicies", sharedAccessPolicies);
            CommonUtils.AssertNotNull("outputStream", outputStream);

            if (sharedAccessPolicies.Count > Constants.MaxSharedAccessPolicyIdentifiers)
            {
                string errorMessage = string.Format(
                    CultureInfo.CurrentCulture,
                    SR.TooManyPolicyIdentifiers,
                    sharedAccessPolicies.Count,
                    Constants.MaxSharedAccessPolicyIdentifiers);

                throw new ArgumentOutOfRangeException("sharedAccessPolicies", errorMessage);
            }

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Encoding = Encoding.UTF8;

            using (XmlWriter writer = XmlWriter.Create(outputStream, settings))
            {
                writer.WriteStartElement(Constants.SignedIdentifiers);

                foreach (var key in sharedAccessPolicies.Keys)
                {
                    writer.WriteStartElement(Constants.SignedIdentifier);

                    // Set the identifier
                    writer.WriteElementString(Constants.Id, key);

                    // Set the permissions
                    writer.WriteStartElement(Constants.AccessPolicy);

                    var policy = sharedAccessPolicies[key];

                    writer.WriteElementString(
                        Constants.Start,
                        SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessStartTime));
                    writer.WriteElementString(
                        Constants.Expiry,
                        SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessExpiryTime));
                    writer.WriteElementString(
                        Constants.Permission,
                        SharedAccessPolicy.PermissionsToString(policy.Permissions));
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                }

                writer.WriteEndDocument();
            }
        }
Example #3
0
        void BlobSecurityDialog_Loaded(object sender, RoutedEventArgs e)
        {
            Cursor = Cursors.Wait;

            SetDefaultTimes();

            SharedAccessPolicies policies = ViewModel.GetContainerAccessPolicies(containerName);

            switch (ViewModel.GetContainerAccessLevel(containerName))
            {
            default:
            case BlobContainerPublicAccessType.Off:
                AccessPrivate.IsChecked = true;
                break;

            case BlobContainerPublicAccessType.Blob:
                AccessPublicBlob.IsChecked = true;
                break;

            case BlobContainerPublicAccessType.Container:
                AccessPublicContainer.IsChecked = true;
                break;
            }

            PolicyViews = new ObservableCollection <PolicyView>();

            if (policies != null)
            {
                PolicyComboBox.Items.Add("--- no policy selected ---");

                foreach (KeyValuePair <string, SharedAccessPolicy> policy in policies)
                {
                    PolicyViews.Add(new PolicyView(policy.Key, policy.Value));
                    PolicyComboBox.Items.Add(policy.Key);
                }
            }
            else
            {
                PolicyComboBox.Items.Add("--- no policies ---");
            }

            PolicyComboBox.SelectedIndex = 0;

            PoliciesGrid.ItemsSource = null;
            PoliciesGrid.ItemsSource = PolicyViews;

            Cursor = Cursors.Arrow;
        }
        private void SavePolicies_Click(object sender, RoutedEventArgs e)
        {
            SharedAccessPolicies policies = new SharedAccessPolicies();

            if (PolicyViews != null)
            {
                foreach (PolicyView policyView in PolicyViews)
                {
                    if (!String.IsNullOrEmpty(policyView.PolicyName))
                    {
                        if (!policyView.Validate())
                        {
                            MessageBox.Show("Policy '" + policyView.PolicyName + "' has one or more fields that are not formatted properly.", "Validation Error", MessageBoxButton.OK);
                            return;
                        }
                        policies.Add(policyView.PolicyName, policyView.Policy);
                    }
                }
            }

            try
            {
                Cursor = Cursors.Wait;
                ViewModel.SetContainerAccessPolicies(containerName, policies);
                MessageBox.Show("Container policies have been saved.", "Save Complete", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Saving policies failed due to an error.\r\n\r\n" + ex.ToString(), "Save Error", MessageBoxButton.OK);
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }
        public void SetContainerAccessPolicies(string containerName, SharedAccessPolicies policies)
        {
            CloudBlobClient client = CloudStorageAccount.CreateCloudBlobClient();
            client.RetryPolicy = RetryPolicies.Retry(20, TimeSpan.Zero);
            CloudBlobContainer container = client.GetContainerReference(containerName);
            BlobContainerPermissions permissions = container.GetPermissions();
            permissions.SharedAccessPolicies.Clear();

            if (policies != null)
            {
                foreach (KeyValuePair<string, SharedAccessPolicy> policy in policies)
                {
                    permissions.SharedAccessPolicies.Add(policy.Key, policy.Value);
                }
            }

            container.SetPermissions(permissions);
        }
Example #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BlobContainerPermissions"/> class.
 /// </summary>
 public BlobContainerPermissions()
 {
     this.PublicAccess    = BlobContainerPublicAccessType.Off;
     SharedAccessPolicies = new SharedAccessPolicies();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BlobContainerPermissions"/> class.
 /// </summary>
 public BlobContainerPermissions()
 {
     this.PublicAccess = BlobContainerPublicAccessType.Off;
     SharedAccessPolicies = new SharedAccessPolicies();
 }
        ////public string SharedAccessAuthenticatedURI(Uri uri, string permission) { return ""; }

        /// <summary>
        /// Writes a collection of shared access policies to the specified stream in XML format.
        /// </summary>
        /// <param name="sharedAccessPolicies">A collection of shared access policies.</param>
        /// <param name="outputStream">An output stream.</param>
        public static void WriteSharedAccessIdentifiers(SharedAccessPolicies sharedAccessPolicies, Stream outputStream)
        {
            CommonUtils.AssertNotNull("sharedAccessPolicies", sharedAccessPolicies);
            CommonUtils.AssertNotNull("outputStream", outputStream);

            if (sharedAccessPolicies.Count > Constants.MaxSharedAccessPolicyIdentifiers)
            {
                string errorMessage = string.Format(
                    CultureInfo.CurrentCulture,
                    SR.TooManyPolicyIdentifiers,
                    sharedAccessPolicies.Count,
                    Constants.MaxSharedAccessPolicyIdentifiers);

                throw new ArgumentOutOfRangeException("sharedAccessPolicies", errorMessage);
            }

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Encoding = Encoding.UTF8;

            using (XmlWriter writer = XmlWriter.Create(outputStream, settings))
            {
                writer.WriteStartElement(Constants.SignedIdentifiers);

                foreach (var key in sharedAccessPolicies.Keys)
                {
                    writer.WriteStartElement(Constants.SignedIdentifier);

                    // Set the identifier
                    writer.WriteElementString(Constants.Id, key);

                    // Set the permissions
                    writer.WriteStartElement(Constants.AccessPolicy);

                    var policy = sharedAccessPolicies[key];

                    writer.WriteElementString(
                        Constants.Start,
                        SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessStartTime));
                    writer.WriteElementString(
                        Constants.Expiry,
                        SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessExpiryTime));
                    writer.WriteElementString(
                        Constants.Permission,
                        SharedAccessPolicy.PermissionsToString(policy.Permissions));
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                }

                writer.WriteEndDocument();
            }
        }