Beispiel #1
0
        private void StorageTest()
        {
            try
            {
                _outputMessage.Append("Testing Storage Account ");
                var acct = WutStorage.GetStorageAccount();
                _outputMessage.AppendFormat("\"{0}\"", acct.Credentials.AccountName).AppendLine();

                var blobClient = acct.CreateCloudBlobClient();

                var qClient = WutQueue.GetQueueClient();
                var q       = WutQueue.GetQueue(qClient, Settings.AuditQueueName);
                var props   = WutStorage.GetCurrentProperties(blobClient);

                _outputMessage.AppendFormat("     Current Queue Count: {0}", q.ApproximateMessageCount).AppendLine();
                _outputMessage.AppendFormat("<blockquote>{0}</blockquote>", WutStorage.GetFormattedServiceProperties(props)).AppendLine();
            }
            catch (Exception ex)
            {
                _bOk = false;
                AppendError("     Azure Storage: unknown error - ", _outputMessage, ex);
            }

            _outputMessage.AppendLine("");
        }
Beispiel #2
0
        //public CopyUtilController(WutCache cache, WutNuContext models)
        //{
        //}

        private CloudBlobContainer GetContainer()
        {
            //I don't like this but I couldn't assign in ctor because the filter is authenticating me
            var sContainer = User.Identity.GetClaim(CustomClaimTypes.ObjectIdentifier);

            return(WutStorage.GetContainer(sContainer));
        }
Beispiel #3
0
        /// <summary>
        /// Processes the request.
        /// </summary>
        /// <param name="context">The context.</param>
        public void ProcessRequest(HttpContext context)
        {
            string contentType;
            string name = context.Request.Url.AbsolutePath.Replace("/reportengine/", "");

            Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(Settings.StorageConnectionString);
            byte[] data;
            if (!Settings.LocalReports)
            {
                //BlobBusinessLayer blobBusinessLayer = new BlobBusinessLayer(new HttpContextWrapper(context));
                var container = WutStorage.GetContainer("reports");
                var blobFile  = WutStorage.GetBlob(container, name);
                data        = new byte[blobFile.Properties.Length];
                contentType = blobFile.Properties.ContentType;
                blobFile.DownloadToByteArray(data, 0);
            }
            else
            {
                var filepath = context.Server.MapPath("/reportslocal/") + name;
                var file     = File.Open(filepath, FileMode.Open);
                data = new byte[file.Length];
                file.Read(data, 0, (int)file.Length);
                contentType = (Path.GetExtension(filepath) == ".cshtml") ? "text/html" : "application/octet-stream";
            }
            context.Response.ContentType = contentType;
            context.Response.BinaryWrite(data);
            context.Response.Flush();
        }
        /// <summary>
        /// When overridden in a derived class, returns a read-only stream to the virtual resource.
        /// </summary>
        /// <returns>A read-only stream to the virtual file.</returns>
        public override Stream Open()
        {
            byte[] data;

            var fileName = VirtualPathUtility.GetFileName(_path);

            try
            {
                var context = HttpContext.Current;
                if (!Settings.LocalReports)
                {
                    var container = WutStorage.GetContainer("reports");
                    var blobFile  = (CloudBlockBlob)WutStorage.GetBlob(container, fileName);
                    blobFile.FetchAttributes();
                    data = new byte[blobFile.Properties.Length];
                    blobFile.DownloadToByteArray(data, 0);
                }
                else
                {
                    var filepath = context.Server.MapPath("/reportslocal/") + fileName;
                    using (var file = File.Open(filepath, FileMode.Open))
                    {
                        data = new byte[file.Length];
                        file.Read(data, 0, (int)file.Length);
                        file.Close();
                    }
                }
                return(new MemoryStream(data));
            }
            catch (Exception ex)
            {
                var msg = String.Format("Error retrieving {0} from {1}", fileName, ((!Settings.LocalReports) ? "blob" : "local storage"));
                throw new Exception(msg, ex);
            }
        }
Beispiel #5
0
        private WutLinkPoco GenToken(WutLinkPoco res)
        {
            var containerName = GetContainerFromUri(res.RealUrl);
            var container     = WutStorage.GetContainer(containerName);

            res.RealUrl = WutStorage.GetBlobReadTokenUri(container, System.IO.Path.GetFileName(res.RealUrl));
            return(res);
        }
Beispiel #6
0
        public HttpResponseMessage DeleteBlob(string path)
        {
            var deleted = WutStorage.DeleteBlob(GetContainer(), path);

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, GetList());

            response.Headers.Add("FileDeleted", deleted.ToString());

            return(response);
        }
Beispiel #7
0
        public HttpResponseMessage GetDownloadToken(string path)
        {
            var uri = WutStorage.GetBlobReadTokenUri(GetContainer(), path);

            //creating implicit response object to force returning a plain string
            var res = new HttpResponseMessage(HttpStatusCode.OK);

            res.Content = new StringContent(uri, System.Text.Encoding.UTF8, "text/plain");
            return(res);
        }
Beispiel #8
0
        //public string GetUploadSAS(FilePoco poco)
        public HttpResponseMessage GetUploadSAS(string bloburi, string _method, string qqtimestamp)
        {
            var container = WutStorage.GetContainer(containerName);
            var uri       = WutStorage.GetBlobWriteTokenUri(container, bloburi);

            //creating implicit response object to force returning a plain string
            var res = new HttpResponseMessage(HttpStatusCode.OK);

            res.Content = new StringContent(uri, System.Text.Encoding.UTF8, "text/plain");
            return(res);
        }
Beispiel #9
0
        public HttpResponseMessage DeleteBlob(FilePoco file)
        {
            var container = WutStorage.GetContainer(containerName);
            var filePart  = file.bloburi.Split(new string[] { containerName }, StringSplitOptions.None);

            if (filePart.Length != 2)
            {
                throw new Exception("File not found or access denied.");
            }

            var deleted = WutStorage.DeleteBlob(container, HttpUtility.UrlDecode(filePart[1]));
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, WutStorage.GetBlobs(container));

            response.Headers.Add("FileDeleted", deleted.ToString());

            return(response);
        }
Beispiel #10
0
        public static void InitBlobReports()
        {
            if (!Settings.LocalReports)
            {
                //running in Azure, confirm blob reports have been
                //initialized
                var container = WutStorage.GetContainer("reports");

                if (container.ListBlobs().Count() > 0)
                {
                    return;
                }

                //file wasn't there, need to copy them all up
                var filepath = Settings.AppRootPath + "/reportslocal/";
                var files    = Directory.EnumerateFiles(filepath);
                foreach (var file in files)
                {
                    WutStorage.AddBlob(container, file);
                }
            }
        }
Beispiel #11
0
        public IEnumerable <IListBlobItem> GetFiles()
        {
            var container = WutStorage.GetContainer(containerName);

            return(WutStorage.GetBlobs(container));
        }
Beispiel #12
0
        protected void Application_Start()
        {
            try
            {
                SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

                //Registration
                ControllerBuilder.Current.DefaultNamespaces.Add("Wutnu.Controllers");
                AreaRegistration.RegisterAllAreas();

                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                GlobalConfiguration.Configure(WebApiConfig.Register);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                AntiForgeryConfig.UniqueClaimTypeIdentifier = CustomClaimTypes.ObjectIdentifier;

                Cache.RedisConnectionString = ConfigurationManager.AppSettings["RedisConnection"];
                Cache.RedisUrlDBNum         = Convert.ToInt32(ConfigurationManager.AppSettings["RedisUrlDBNum"]);
                Cache.RedisUserDBNum        = Convert.ToInt32(ConfigurationManager.AppSettings["RedisUserDBNum"]);

                //IoC
                var builder = new ContainerBuilder();
                builder.Register(c => new WutNuContext())
                .AsSelf()
                .InstancePerRequest();
                builder.Register(c => new WutCache(c.Resolve <WutNuContext>()))
                .AsSelf()
                .InstancePerRequest();

                builder.RegisterControllers(typeof(MvcApplication).Assembly);
                builder.RegisterApiControllers(typeof(MvcApplication).Assembly);

                var container = builder.Build();
                DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
                GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);

                //Settings
                Settings.Setup(ConfigurationManager.AppSettings);
                var domainName = ConfigurationManager.AppSettings["ida:RedirectUri"] + "/";
                Startup.RedirectUri = domainName;

                WutStorage.ALLOWED_CORS_ORIGINS = new List <string> {
                    ConfigurationManager.AppSettings["ida:RedirectUri"]
                };

                var  ConfigStorageCors = Convert.ToBoolean(ConfigurationManager.AppSettings["ConfigStorageCors"]);
                bool forceConfig       = true;

                if (ConfigStorageCors)
                {
                    WutStorage.ConfigureCors(forceConfig);
                }

                Utils.ApplicationName = "Wut?";

                AADGraph.GraphToken = ConfigurationManager.AppSettings["B2BGraphKey"];
                AADGraph.ClientId   = ConfigurationManager.AppSettings["ida:ClientIdB2B"];
                AADGraph.TenantName = ConfigurationManager.AppSettings["ida:TenantB2B"];
                AADGraph.LoadGroups();

                //BlobCopy zip init
                BlobCopyZip.InitZip(Settings.AppRootPath);

                //Ensure cloud reports have initialized in blob storage
                ReportManager.InitBlobReports();

                //VPP
                System.Web.Hosting.HostingEnvironment.RegisterVirtualPathProvider(new WutVirtualPathProvider());
            }
            catch (Exception ex)
            {
                Logging.WriteToAppLog("Error during application startup", System.Diagnostics.EventLogEntryType.Error, ex);
            }
        }
Beispiel #13
0
 public IEnumerable <IListBlobItem> GetList()
 {
     return(WutStorage.GetBlobs(GetContainer()));
 }