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 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(); } }
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; }
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); }
/// <summary> /// Initializes a new instance of the <see cref="BlobContainerPermissions"/> class. /// </summary> public BlobContainerPermissions() { this.PublicAccess = BlobContainerPublicAccessType.Off; SharedAccessPolicies = new SharedAccessPolicies(); }