public static void GetUriAndPermission(string fileName, out string fileUri, out string signUriPara, out DateTime expireDateTime, int keepSeconds, string projectName, string blobPath = "source/images")
        {
            Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory =
                CloudBlobContainer.GetDirectoryReference(projectName + "/" + blobPath);

            projectName = projectName.ToUpper();
            var res = CloudBlobContainer.GetPermissionsAsync().Result;

            if (keepSeconds > 0)
            {
                expireDateTime = DateTime.UtcNow.AddSeconds(keepSeconds);
                var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy()
                {
                    SharedAccessExpiryTime = expireDateTime,
                    Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read,
                };

                signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null);
            }
            else
            {
                expireDateTime = DateTime.UtcNow.Date.AddDays(1).AddSeconds(-1);
                var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy()
                {
                    SharedAccessExpiryTime = expireDateTime,
                    Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read,
                };
                signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null);
            }

            fileUri = cloudBlobDirectory.GetBlockBlobReference(fileName).Uri.ToString();
        }
Ejemplo n.º 2
0
 public Uri GetSas(Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permission, TimeSpan expiry, string containerName)
 {
     var policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy
     {
         Permissions = permission,
         SharedAccessExpiryTime = DateTime.UtcNow.Add(expiry)
     };
     var container = this.Parent.GetContainer(containerName);
     var signature = container.GetSharedAccessSignature(policy);
     return new Uri(System.IO.Path.Combine(container.Uri.ToString(), signature));
 }
Ejemplo n.º 3
0
            public Uri GetSas(Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permission, TimeSpan expiry, string containerName)
            {
                var policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy
                {
                    Permissions            = permission,
                    SharedAccessExpiryTime = DateTime.UtcNow.Add(expiry)
                };
                var container = this.Parent.GetContainer(containerName);
                var signature = container.GetSharedAccessSignature(policy);

                return(new Uri(System.IO.Path.Combine(container.Uri.ToString(), signature)));
            }
Ejemplo n.º 4
0
        // source: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-2/
        private string GetURL(int expirySeconds, Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permissions)
        {
            var sasConstraints = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy();

            sasConstraints.SharedAccessStartTime  = DateTimeOffset.Now.AddMinutes(-1);
            sasConstraints.SharedAccessExpiryTime = DateTimeOffset.Now.AddSeconds(expirySeconds);
            sasConstraints.Permissions            = permissions;

            var sasToken = _delegateContent.GetSharedAccessSignature(sasConstraints);

            return(_delegateContent.Uri + sasToken);
        }
        } // Run

        private static string GetSASToken(string containerName, string customerWhitelistIPAddressMinimum, string customerWhitelistIPAddressMaximum,
                                          int tokenExpireTimeInMinutes, string cloudAccountName, string cloudKey)
        {
            Microsoft.WindowsAzure.Storage.Auth.StorageCredentials storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(cloudAccountName, cloudKey);
            Microsoft.WindowsAzure.Storage.CloudStorageAccount     storageAccount     = null;

            if (cloudAccountName == "devstoreaccount1")
            {
                storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials,
                                                                                        new Uri("http://127.0.0.1:10000/devstoreaccount1"),
                                                                                        new Uri("http://127.0.0.1:10001/devstoreaccount1"),
                                                                                        new Uri("http://127.0.0.1:10002/devstoreaccount1"),
                                                                                        new Uri("http://127.0.0.1:10003/devstoreaccount1"));
            }
            else
            {
                storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true);
            }

            Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient();
            blobStorage.DefaultRequestOptions.RetryPolicy = new Microsoft.WindowsAzure.Storage.RetryPolicies.LinearRetry(TimeSpan.FromSeconds(1), 10);
            Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer container = blobStorage.GetContainerReference(containerName);
            container.CreateIfNotExistsAsync().Wait();

            Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy();
            policy.Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Write | Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.List;
            policy.SharedAccessStartTime  = DateTimeOffset.UtcNow.AddMinutes(-5); // always do in the past to prevent errors
            policy.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddMinutes(tokenExpireTimeInMinutes);


            string sasToken = null;

            if (string.IsNullOrWhiteSpace(customerWhitelistIPAddressMinimum) ||
                string.IsNullOrWhiteSpace(customerWhitelistIPAddressMaximum) ||
                cloudAccountName == "devstoreaccount1")
            {
                sasToken = container.GetSharedAccessSignature(policy);
            }
            else
            {
                Microsoft.WindowsAzure.Storage.IPAddressOrRange iPAddressOrRange = new Microsoft.WindowsAzure.Storage.IPAddressOrRange(customerWhitelistIPAddressMinimum, customerWhitelistIPAddressMaximum);
                sasToken = container.GetSharedAccessSignature(policy, null, Microsoft.WindowsAzure.Storage.SharedAccessProtocol.HttpsOnly, iPAddressOrRange);
            }

            //  string url = "https://" + cloudAccountName + ".blob.core.windows.net" + sasToken;

            return(sasToken);
        }
        public static string GetImageInfo(string projectName, string id)
        {
            var cloudBlobDirectory =
                CloudBlobContainer.GetDirectoryReference(projectName + "/source/info");

            projectName = projectName.ToUpper();
            var res = CloudBlobContainer.GetPermissionsAsync().Result;

            var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy()
            {
                SharedAccessExpiryTime = new DateTime(2099, 12, 31),
                Permissions            = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read,
            };
            var signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null);
            var fileUri     = cloudBlobDirectory.GetBlockBlobReference(id + ".json").Uri.ToString();

            return(fileUri + signUriPara);
        }