public async Task <string> cleanupAndGetPolicyToUse() { FileSharePermissions permissions = await share.GetPermissionsAsync(); List <string> policiesToDelete = permissions.SharedAccessPolicies.TakeWhile(x => x.Value.SharedAccessExpiryTime < DateTime.UtcNow).Select(x => x.Key).ToList(); foreach (var policy in policiesToDelete) { permissions.SharedAccessPolicies.Remove(policy); } string policyNameToUse = permissions.SharedAccessPolicies.Where(x => x.Value.SharedAccessExpiryTime > DateTime.UtcNow.AddSeconds(10)).Select(x => x.Key).FirstOrDefault(); if (policyNameToUse == null) { // Create a new shared access policy and define its constraints. SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1), Permissions = SharedAccessFilePermissions.Read }; policyNameToUse = "UniquePolicy" + DateTime.UtcNow.Ticks; permissions.SharedAccessPolicies.Add(policyNameToUse, sharedPolicy); } await share.SetPermissionsAsync(permissions); return(policyNameToUse); }
/// <summary> /// Validate the file share access policy /// </summary> /// <param name="policy">SharedAccessFilePolicy object</param> /// <param name="policyIdentifier">The policy identifier which need to be checked.</param> public static bool ValidateShareAccessPolicy(IStorageFileManagement channel, string shareName, string policyIdentifier, bool shouldNoPermission, bool shouldNoStartTime, bool shouldNoExpiryTime) { if (string.IsNullOrEmpty(policyIdentifier)) { return(true); } CloudFileShare fileShare = channel.GetShareReference(shareName); FileSharePermissions permission = fileShare.GetPermissionsAsync().Result; SharedAccessFilePolicy sharedAccessPolicy = GetExistingPolicy <SharedAccessFilePolicy>(permission.SharedAccessPolicies, policyIdentifier); if (shouldNoPermission && sharedAccessPolicy.Permissions != SharedAccessFilePermissions.None) { throw new InvalidOperationException(Resources.SignedPermissionsMustBeOmitted); } if (shouldNoStartTime && sharedAccessPolicy.SharedAccessStartTime.HasValue) { throw new InvalidOperationException(Resources.SignedStartTimeMustBeOmitted); } if (shouldNoExpiryTime && sharedAccessPolicy.SharedAccessExpiryTime.HasValue) { throw new InvalidOperationException(Resources.SignedExpiryTimeMustBeOmitted); } return(!sharedAccessPolicy.SharedAccessExpiryTime.HasValue); }
internal async Task <SharedAccessFilePolicies> GetPoliciesAsync(IStorageFileManagement localChannel, string shareName, string policyName) { CloudFileShare share = localChannel.GetShareReference(shareName); FileSharePermissions permissions = await localChannel.GetSharePermissionsAsync(share, null, null, null, CmdletCancellationToken); return(permissions.SharedAccessPolicies); }
public override void ExecuteCmdlet() { if (String.IsNullOrEmpty(ShareName) || String.IsNullOrEmpty(Policy)) { return; } NamingUtil.ValidateShareName(this.ShareName, false); if (!NameUtil.IsValidStoredAccessPolicyName(this.Policy)) { throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Resources.InvalidAccessPolicyName, this.Policy)); } //Get existing permissions CloudFileShare fileShare = this.Channel.GetShareReference(this.ShareName); FileSharePermissions fileSharePermissions = fileShare.GetPermissions(); //Add new policy if (fileSharePermissions.SharedAccessPolicies.Keys.Contains(this.Policy)) { throw new ResourceAlreadyExistException(String.Format(CultureInfo.CurrentCulture, Resources.PolicyAlreadyExists, this.Policy)); } SharedAccessFilePolicy policy = new SharedAccessFilePolicy(); AccessPolicyHelper.SetupAccessPolicy <SharedAccessFilePolicy>(policy, this.StartTime, this.ExpiryTime, this.Permission); fileSharePermissions.SharedAccessPolicies.Add(this.Policy, policy); //Set permissions back to container fileShare.SetPermissions(fileSharePermissions); WriteObject(Policy); }
static void CreateShareFile() { try { #region Creating the Shared Files in Azure _storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnection")); _share = _storageAccount.CreateCloudFileClient().GetShareReference("documentos"); if (_share.Exists()) { //Console.Clear(); // Check current usage stats for the share. // Note that the ShareStats object is part of the protocol layer for the File service. ShareStats stats = _share.GetStats(); //Console.WriteLine("Current share usage: {0} GB", stats.Usage.ToString()); // Specify the maximum size of the share, in GB. // This line sets the quota to be 10 GB greater than the current usage of the share. _share.Properties.Quota = 10 + stats.Usage; _share.SetProperties(); // Now check the quota for the share. Call FetchAttributes() to populate the share's properties. _share.FetchAttributes(); //Console.WriteLine("Current share quota: {0} GB", _share.Properties.Quota); // Create a new shared access policy and define its constraints. SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24), Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write }; // Get existing permissions for the share. FileSharePermissions permissions = _share.GetPermissions(); if (!permissions.SharedAccessPolicies.ContainsKey("sampleSharePolicy")) { // Add the shared access policy to the share's policies. Note that each policy must have a unique name. permissions.SharedAccessPolicies.Add("sampleSharePolicy", sharedPolicy); _share.SetPermissions(permissions); } //Console.ReadKey(); } else { _share.CreateIfNotExists(); } #endregion } catch (Exception ex) { Console.WriteLine(ex); Console.ReadKey(); } }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { try { Task.Run(() => share.SetPermissionsAsync(permissions, accessCondition, options, operationContext)).Wait(); } catch (AggregateException e) when(e.InnerException is StorageException) { throw e.InnerException; } }
public void UploadFileStream(Stream stream, string connectionString, FileInfo outputFile) { connectionString.ThrowExceptionIfNullOrEmpty(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare fileShare = fileClient.GetShareReference("h2h"); if (Task.Run(async() => await fileShare.ExistsAsync()).Result) { string policyName = "DemoPolicy" + new Random().Next(50); FileSharePermissions fileSharePermissions = Task.Run(async() => await fileShare.GetPermissionsAsync()).Result; // define policy SharedAccessFilePolicy sharedAccessFilePolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1), //Permissions = SharedAccessFilePermissions.Read Permissions = SharedAccessFilePermissions.Write }; fileSharePermissions.SharedAccessPolicies.Add(policyName, sharedAccessFilePolicy); // set permissions of file share Task.Run(async() => await fileShare.SetPermissionsAsync(fileSharePermissions)); // generate SAS token based on policy and use to create a new file CloudFileDirectory rootDirectory = fileShare.GetRootDirectoryReference(); if (Task.Run(async() => await rootDirectory.ExistsAsync()).Result) { CloudFileDirectory customDirectory = rootDirectory.GetDirectoryReference("HyperArchive"); if (Task.Run(async() => await customDirectory.ExistsAsync()).Result) { CloudFile file = customDirectory.GetFileReference(outputFile.Name); string sasToken = file.GetSharedAccessSignature(null, policyName); //generate URL of file with SAS token Uri fileSASUrl = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken); CloudFile newFile = new CloudFile(fileSASUrl); var taskResult = Task.Run(async() => await newFile.UploadFromStreamAsync(stream)); } } } }
public void WriteFilesIntoFileService() { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_configuration.ReadKeyFromFilePath(Constants.ConnectionStringPathKey)); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare fileShare = fileClient.GetShareReference("h2h"); if (Task.Run(async() => await fileShare.ExistsAsync()).Result) { string policyName = "DemoPolicy" + new Random().Next(50); FileSharePermissions fileSharePermissions = Task.Run(async() => await fileShare.GetPermissionsAsync()).Result; // define policy SharedAccessFilePolicy sharedAccessFilePolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1), //Permissions = SharedAccessFilePermissions.Read Permissions = SharedAccessFilePermissions.Write }; fileSharePermissions.SharedAccessPolicies.Add(policyName, sharedAccessFilePolicy); // set permissions of file share Task.Run(async() => await fileShare.SetPermissionsAsync(fileSharePermissions)); // generate SAS token based on policy and use to create a new file CloudFileDirectory rootDirectory = fileShare.GetRootDirectoryReference(); if (Task.Run(async() => await rootDirectory.ExistsAsync()).Result) { CloudFileDirectory customDirectory = rootDirectory.GetDirectoryReference("Output"); if (Task.Run(async() => await customDirectory.ExistsAsync()).Result) { CloudFile file = customDirectory.GetFileReference(_globalNotesPdf.Name); string sasToken = file.GetSharedAccessSignature(null, policyName); //generate URL of file with SAS token Uri fileSASUrl = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken); CloudFile newFile = new CloudFile(fileSASUrl); Task.Run(async() => await newFile.UploadFromFileAsync(_globalNotesPdf.FullName)); } } } }
public async Task <List <IListFileItem> > getFilesFromAzure() { FileSharePermissions permissions = await share.GetPermissionsAsync(); // List all files/directories under the root directory Console.WriteLine("4. List Files/Directories in root directory"); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().GetDirectoryReference(directoryName).ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); return(results); }
public void Generate_a_shared_access_signature_for_a_file_or_file_share() { // Parse the connection string for the storage account. StorageCredentials Credentials = new StorageCredentials(this.Account, this.Key); CloudStorageAccount storageAccount = new CloudStorageAccount(Credentials, false); // Create a CloudFileClient object for credentialed access to File storage. CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); // Get a reference to the file share we created previously. CloudFileShare share = fileClient.GetShareReference("logs"); // Ensure that the share exists. if (share.Exists()) { string policyName = "sampleSharePolicy" + DateTime.UtcNow.Ticks; // Create a new shared access policy and define its constraints. SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24), Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write }; // Get existing permissions for the share. FileSharePermissions permissions = share.GetPermissions(); // Add the shared access policy to the share's policies. Note that each policy must have a unique name. permissions.SharedAccessPolicies.Add(policyName, sharedPolicy); share.SetPermissions(permissions); // Generate a SAS for a file in the share and associate this access policy with it. CloudFileDirectory rootDir = share.GetRootDirectoryReference(); CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs"); CloudFile file = sampleDir.GetFileReference("Log1.txt"); string sasToken = file.GetSharedAccessSignature(null, policyName); Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken); // Create a new CloudFile object from the SAS, and write some text to the file. CloudFile fileSas = new CloudFile(fileSasUri); fileSas.UploadText("This write operation is authenticated via SAS."); Console.WriteLine(fileSas.DownloadText()); } }
public static void SetSharePermissions() { CloudFileShare share = GetShare(SHARE); if (share.Exists()) { string policyName = "SharePolicy"; SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24), Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write }; FileSharePermissions permissions = share.GetPermissions(); permissions.SharedAccessPolicies.Add(policyName, sharedPolicy); share.SetPermissions(permissions); } }
internal string SetAzureShareStoredAccessPolicy(IStorageFileManagement localChannel, string shareName, string policyName, DateTime?startTime, DateTime?expiryTime, string permission, bool noStartTime, bool noExpiryTime) { //Get existing permissions CloudFileShare share = localChannel.GetShareReference(shareName); FileSharePermissions permissions = localChannel.GetSharePermissions(share); //Set the policy with new value if (!permissions.SharedAccessPolicies.Keys.Contains(policyName)) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.PolicyNotFound, policyName)); } SharedAccessFilePolicy policy = permissions.SharedAccessPolicies[policyName]; AccessPolicyHelper.SetupAccessPolicy <SharedAccessFilePolicy>(policy, startTime, expiryTime, permission, noStartTime, noExpiryTime); permissions.SharedAccessPolicies[policyName] = policy; //Set permission back to share localChannel.SetSharePermissions(share, permissions, null, null, OperationContext); WriteObject(AccessPolicyHelper.ConstructPolicyOutputPSObject <SharedAccessFilePolicy>(permissions.SharedAccessPolicies, policyName)); return(policyName); }
public static void NewFileCreate() { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connection); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare share = fileClient.GetShareReference("doc2020"); // Ensure that the share exists. if (share.Exists()) { string policyName = "FileSharePolicy" + DateTime.UtcNow.Ticks; SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24), Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write }; FileSharePermissions permissions = share.GetPermissions(); permissions.SharedAccessPolicies.Add(policyName, sharedPolicy); share.SetPermissions(permissions); CloudFileDirectory rootDir = share.GetRootDirectoryReference(); CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("storage"); CloudFile file = sampleDir.GetFileReference("Log2.txt"); string sasToken = file.GetSharedAccessSignature(null, policyName); Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken); // Create a new CloudFile object from the SAS, and write some text to the file. CloudFile fileSas = new CloudFile(fileSasUri); fileSas.UploadText("This file created by the Console App at Runtime"); Console.WriteLine(fileSas.DownloadText()); } }
internal bool RemoveAzureShareStoredAccessPolicy(IStorageFileManagement localChannel, string shareName, string policyName) { bool success = false; string result = string.Empty; //Get existing permissions CloudFileShare share = localChannel.GetShareReference(shareName); FileSharePermissions permissions = localChannel.GetSharePermissions(share); //remove the specified policy if (!permissions.SharedAccessPolicies.Keys.Contains(policyName)) { throw new ResourceNotFoundException(String.Format(CultureInfo.CurrentCulture, Resources.PolicyNotFound, policyName)); } if (this.Force || ConfirmRemove(policyName)) { permissions.SharedAccessPolicies.Remove(policyName); localChannel.SetSharePermissions(share, permissions); success = true; } return(success); }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { share.SetPermissions(permissions, accessCondition, options, operationContext); }
/// <summary> /// Reads the share access policies from a stream in XML. /// </summary> /// <param name="inputStream">The stream of XML policies.</param> /// <param name="permissions">The permissions object to which the policies are to be written.</param> public static Task ReadSharedAccessIdentifiersAsync(Stream inputStream, FileSharePermissions permissions, CancellationToken token) { CommonUtility.AssertNotNull("permissions", permissions); return(Response.ReadSharedAccessIdentifiersAsync(permissions.SharedAccessPolicies, new FileAccessPolicyResponse(inputStream), token)); }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { Task.Run(() => share.SetPermissionsAsync(permissions, accessCondition, options, operationContext)).Wait(); }
/// <summary> /// Reads the share access policies from a stream in XML. /// </summary> /// <param name="inputStream">The stream of XML policies.</param> /// <param name="permissions">The permissions object to which the policies are to be written.</param> public static void ReadSharedAccessIdentifiers(Stream inputStream, FileSharePermissions permissions) { CommonUtility.AssertNotNull("permissions", permissions); Response.ReadSharedAccessIdentifiers(permissions.SharedAccessPolicies, new FileAccessPolicyResponse(inputStream)); }
public static void ReadSharedAccessIdentifiers(Stream inputStream, FileSharePermissions permissions) { throw new System.NotImplementedException(); }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { throw new NotImplementedException(); }
public static void SetPermissions(this CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { share.SetPermissionsAsync(permissions, accessCondition, options, operationContext).GetAwaiter().GetResult(); }