예제 #1
0
        public PipelineData Process(PipelineData Input)
        {
            //if (((HttpPipelineArguments)Input.SecondaryData).isHandled == true) return Input;
            HttpListenerRoutedContext context = Input.PrimaryData as HttpListenerRoutedContext;

            Trace.WriteLine(Language.Query("LWMS.ErrorResponseUnit.UnhandledRequest", "Unhandled Http Pipeline. Request: {0}", HttpUtility.UrlDecode((context).Request.RawUrl)));


            if (context.Request.HttpMethod == HttpMethod.Get.Method)
            {
                var _404 = GlobalConfiguration.GetPage404(LWMSCoreServer.TrustedInstallerAuth);
                if (File.Exists(_404))
                {
                    Tools00.SendFile(context, new FileInfo(_404), HttpStatusCode.NotFound);
                }
                else
                {
                    Tools00.SendMessage(context, "<html><body><h1>404 File Not Found</h1><hr/><p>Hosted with LWMS.</p></body></html>", HttpStatusCode.NotFound);
                }
            }
            else
            {
                Tools00.SendMessage(context, "<html><body><h1>Error 501</h1><hr/><p>Your request is not support yet by the server.</p></body></html>", HttpStatusCode.NotImplemented);
            }
            (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
            return(Input);
        }
예제 #2
0
        public PipelineData Process(PipelineData Input)
        {
            HttpListenerRoutedContext context = Input.PrimaryData as HttpListenerRoutedContext;
            var         path0 = context.Request.Url.LocalPath.Substring(1);
            StorageItem Result;

            if (context.Request.HttpMethod == HttpMethod.Get.Method)
            {
                if (ApplicationStorage.ObtainItemFromRelativeURL(path0, out Result, false))
                {
                    if (Result.StorageItemType == StorageItemType.Folder)
                    {
                        StorageFile DefaultPage;
                        if (((StorageFolder)Result).GetFile(GlobalConfiguration.GetDefaultPage(LWMSCoreServer.TrustedInstallerAuth), out DefaultPage, false))
                        {
                            Tools00.SendFile(context, DefaultPage);
                            (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
                            return(Input);
                        }
                    }
                    else
                    {
                        Tools00.SendFile(context, Result.ToStorageFile());
                        (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
                        return(Input);
                    }
                }
            }
            return(Input);
        }
예제 #3
0
파일: BlogMain.cs 프로젝트: creeperlv/LWMS
        public PipelineData Process(PipelineData Input)
        {
            {
                HttpListenerRoutedContext context = Input.PrimaryData as HttpListenerRoutedContext;
                var path0 = context.Request.Url.LocalPath.Substring(1);
                if (path0.ToUpper().StartsWith("BLOGS"))
                {
                    var         path1 = path0.Substring(path0.IndexOf("/") + 1);
                    StorageFile f;
                    if (path1.ToUpper().EndsWith(".INFO"))
                    {
                    }
                    else
                    {
                        if (SharedResources.Articles.GetFile(path1, out f, false))
                        {
                            Trace.WriteLine("MDBlog>>Article:" + f.Name); if (!f.ItemPath.ToUpper().EndsWith(".MD"))
                            {
                                Tools00.SendFile(context, f);
                                (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
                                return(Input);
                            }
                            var MDContnet = File.ReadAllText(f.ItemPath);
                            if (SharedResources.isMarkdownUnavailable is false)
                            {
                                MDContnet = Markdown.ToHtml(MDContnet);
                                Trace.WriteLine("MDBlog>>Article>>MD");
                            }
                            string      Title = f.Name;
                            StorageFile info;
                            if (SharedResources.Articles.GetFile(path1 + ".info", out info, false))
                            {
                                var infos = File.ReadAllLines(info.ItemPath);
                                if (infos.Length > 0)
                                {
                                    Title = infos[0];
                                }
                            }

                            var FinalContent = SharedResources.ArticleTemplate_.Replace("%Content%", MDContnet).Replace("%Title%", Title);
                            context.Response.OutputStream.Write(Encoding.UTF8.GetBytes(FinalContent));
                            (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
                            return(Input);
                        }
                    }
                    {
                        Trace.WriteLine("MDBlog>>MainPage");
                        var    list         = SharedResources.Articles.GetFiles();
                        var    MainContent  = SharedResources.ArticleListTemplate_;
                        var    ItemTemplate = SharedResources.ArticleListItemTemplate_;
                        var    ItemList     = "";
                        string LinkPrefix   = "./Blogs/";
                        if (path0.ToUpper().StartsWith("BLOGS/"))
                        {
                            LinkPrefix = "./";
                        }
                        foreach (var item in list)
                        {
                            if (item.Name.ToUpper().EndsWith(".INFO"))
                            {
                                var infos = File.ReadAllLines(item.ItemPath);
                                if (infos.Length > 0)
                                {
                                    ItemList += ItemTemplate.Replace("%Title%", infos[0]).Replace("%Link%", LinkPrefix + item.Name.Substring(0, item.Name.Length - 5));
                                }
                            }
                        }
                        var FinalContent = MainContent.Replace("%Content%", ItemList).Replace("%Title%", ApplicationConfiguration.Current.GetValue("BlogTitle", "LWMS Blog"));
                        Tools00.SendMessage(context, FinalContent);
                        (Input.SecondaryData as HttpPipelineArguments).isHandled = true;
                        return(Input);
                    }
                }
                (Input.SecondaryData as HttpPipelineArguments).isHandled = false;
                return(Input);
            }
        }
예제 #4
0
        public bool Handle(HttpListenerRoutedContext context, string HttpPrefix)
        {
            var MappedDirectory = ApplicationConfiguration.Current.GetValue(HttpPrefix, null);

            if (MappedDirectory == null)
            {
                MappedDirectory = ApplicationConfiguration.Current.GetValue("*");
                if (MappedDirectory == null)
                {
                    MappedDirectory = GlobalConfiguration.GetWebSiteContentRoot(context.PipelineAuth);
                }
            }
            string CutPath = context.Request.Url.LocalPath.Substring(1).Substring(HttpPrefix.Length);
            var    path    = Path.Combine(MappedDirectory, CutPath);

            Trace.WriteLine($"Final:{CutPath}");
            if (Directory.Exists(path))
            {
                //Visit Directory
                DirectoryInfo directoryInfo = new DirectoryInfo(path);
                StringBuilder folders       = new StringBuilder();
                StringBuilder files         = new StringBuilder();
                string        Readme        = "";
                {
                    if (CutPath != "")
                    {
                        folders.Append(SharedResources.DirectoryItemFolderTemplate.Replace("%Name%", "..").Replace("%Date%", "")).Replace("%Link%", "./../");
                    }
                    foreach (var item in directoryInfo.EnumerateDirectories())
                    {
                        folders.Append(SharedResources.DirectoryItemFolderTemplate.Replace("%Name%", item.Name).Replace("%Date%", item.LastWriteTimeUtc + "")).Replace("%Link%", "./" + item.Name + "/");
                    }
                    foreach (var item in directoryInfo.EnumerateFiles())
                    {
                        if (item.Name.ToUpper() == "README")
                        {
                            Readme = File.ReadAllText(item.FullName);
                        }
                        files.Append(SharedResources.DirectoryItemFileTemplate.Replace("%Name%", item.Name).Replace("%Date%", item.LastWriteTimeUtc + "").Replace("%Size%", Math.Round(((double)item.Length) / 1024.0) + " KB")).Replace("%Link%", "./" + item.Name);
                    }
                }
                var content = SharedResources.DirectoryTemplate.Replace("%Folders%", folders.ToString()).Replace("%Files%", files.ToString()).Replace("%Address%", ToHTMLString(context.Request.Url.LocalPath)).Replace("%Readme%", Readme);
                Tools00.SendMessage(context, content);
                return(true);
            }
            else
            {
                //Visit File
                if (File.Exists(path))
                {
                    FileInfo fi = new FileInfo(path);
                    if (Tools00.ObtainMimeType(fi.Extension).StartsWith("text"))
                    {
                        var content = SharedResources.TextViewerTemplate.Replace("%Content%", ToHTMLString(File.ReadAllText(fi.FullName))).Replace("%Address%", ToHTMLString(context.Request.Url.LocalPath));
                        Tools00.SendMessage(context, content);
                        return(true);
                    }
                    else
                    {
                        Tools00.SendFile(context, fi);
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #5
0
        public bool Handle(HttpListenerRoutedContext context, string HttpPrefix)
        {
            {
                var path0 = context.Request.Url.LocalPath.Substring(1);
                if (path0.ToUpper().StartsWith(HttpPrefix.ToUpper()))
                {
                    var path1 = path0.Substring(HttpPrefix.Length);
                    //path1 = path1.Substring(path1.IndexOf("/") + 1);
                    StorageFile f;
                    if (path1.ToUpper().EndsWith(".INFO"))
                    {
                    }
                    else
                    {
                        if (SharedResources.Articles.GetFile(path1, out f, false))
                        {
                            Trace.WriteLine("MDBlog>>Article:" + f.Name);
                            if (!f.ItemPath.ToUpper().EndsWith(".MD"))
                            {
                                Tools00.SendFile(context, f);
                                return(true);
                            }
                            var MDContnet = File.ReadAllText(f.ItemPath);
                            if (SharedResources.isMarkdownUnavailable is false)
                            {
                                MDContnet = Markdown.ToHtml(MDContnet);
                            }
                            string      Title = f.Name;
                            StorageFile info;
                            if (SharedResources.Articles.GetFile(path1 + ".info", out info, false))
                            {
                                var infos = File.ReadAllLines(info.ItemPath);
                                if (infos.Length > 0)
                                {
                                    Title = infos[0];
                                }
                            }

                            var FinalContent = SharedResources.ArticleTemplate_.Replace("%Content%", MDContnet).Replace("%Title%", Title);
                            context.Response.OutputStream.Write(Encoding.UTF8.GetBytes(FinalContent));
                            return(true);
                        }
                    }
                    {
                        Trace.WriteLine("MDBlog>>MainPage");
                        try
                        {
                            var list = SharedResources.Articles.GetFiles();

                            var MainContent  = SharedResources.ArticleListTemplate_;
                            var ItemTemplate = SharedResources.ArticleListItemTemplate_;
                            var ItemList     = "";
                            //string LinkPrefix = "./" + (HttpPrefix.Split("/").Last()) + "/";

                            //if (path0.ToUpper().StartsWith(HttpPrefix.ToUpper()))
                            var LinkPrefix = "./";
                            foreach (var item in list)
                            {
                                if (item.Name.ToUpper().EndsWith(".INFO"))
                                {
                                    var infos = File.ReadAllLines(item.ItemPath);
                                    if (infos.Length > 0)
                                    {
                                        ItemList += ItemTemplate.Replace("%Title%", infos[0]).Replace("%Link%", LinkPrefix + item.Name.Substring(0, item.Name.Length - 5));
                                    }
                                }
                            }
                            var FinalContent = MainContent.Replace("%Content%", ItemList).Replace("%Title%", ApplicationConfiguration.Current.GetValue("BlogTitle", "LWMS Blog"));
                            Tools00.SendMessage(context, FinalContent);
                            //context.Response.OutputStream.Write(Encoding.UTF8.GetBytes(FinalContent));

                            return(true);
                        }
                        catch (Exception e)
                        {
                            Trace.WriteLine(e);
                        }
                    }
                }
                return(false);
            }
        }