Exemple #1
0
        private void RenderStatic(Application app, UrlParse parse, Uri url)
        {
            if (parse.IsDirectory)
            {
                if (parse.Segments.Count == 0 && parse.Extension == null)
                {
                    ResourceHandler.Html.ProcessRequest(app.Context, app.Context.Server.MapPath(string.Concat(app.IsWap ? Utility.StaticWapDirF : Utility.StaticWwwDirF, Utility.DefaultController, Utility.DefaultExt)));
                }
                else
                {
                    if (parse.Segments.Count > 0 && parse.Extension == null)
                    {
                        switch (parse.SegmentType)
                        {
                        case SegmentType.Themes:
                            RenderResource(app, parse, url);
                            break;

                        case SegmentType.Resource:
                            app.Run(parse);
                            break;

                        default:
                            app.RenderError(404);
                            break;
                        }
                    }
                    else
                    {
                        app.RenderError(404);
                    }
                }
            }
            else
            {
                if (parse.Segments.Count > 0)
                {
                    if (parse.Extension != null)
                    {
                        switch (parse.SegmentType)
                        {
                        case SegmentType.Resource:
                            parse.AppendExtension();
                            app.Run(parse);
                            break;

                        case SegmentType.Themes:
                        case SegmentType.Uploads:
                            RenderResource(app, parse, url);
                            break;

                        case SegmentType.Favicon:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Ico, null);
                            }
                            break;

                        case SegmentType.Robots:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Txt, null);
                            }
                            break;

                        case SegmentType.Sitemap:
                        case SegmentType.CrossDomain:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Xml, null);
                            }
                            break;

                        case SegmentType.Caches:
                        case SegmentType.Runtime:
                        case SegmentType.Management:
                            app.RenderError(404);
                            break;

                        case SegmentType.Admin:
                            if (parse.ExtensionType != ExtensionType.Html)
                            {
                                parse.AppendExtension();
                            }
                            parse.FormatManagement();
                            app.Run(parse);
                            break;

                        case SegmentType.Install:
                            if (parse.ExtensionType != ExtensionType.Html)
                            {
                                parse.AppendExtension();
                            }
                            app.Run(parse);
                            break;

                        default:
                            if (parse.ExtensionType == ExtensionType.Html)
                            {
                                ResourceHandler.Html.ProcessRequest(app.Context, app.Context.Server.MapPath(string.Concat(app.IsWap ? Utility.StaticWapDir : Utility.StaticWwwDir, parse.Url)));
                            }
                            else
                            {
                                if (parse.Segments.Count > 3 && Utility.StaticString.Equals(parse.Segments[1], StringComparison.OrdinalIgnoreCase))
                                {
                                    parse.AppendExtension();
                                    app.Run(parse);
                                }
                                else
                                {
                                    app.RenderError(404);
                                }
                            }
                            break;
                        }
                    }
                    else
                    {
                        if (parse.SegmentType == SegmentType.Admin && parse.Segments.Count == 1)
                        {
                            parse.FormatManagement();
                            app.Run(parse);
                        }
                        else
                        {
                            app.RenderError(404);
                        }
                    }
                }
                else
                {
                    app.RenderError(404);
                }
            }
        }
Exemple #2
0
        //private void RenderResource(Application app, UrlParse parse, params ExtensionType[] types)
        //{
        //    if (Array.BinarySearch<ExtensionType>(types, parse.ExtensionType) >= 0)
        //        RenderResource(app, parse);
        //    else
        //        app.RenderError(404);
        //}

        private void RenderRewrite(Application app, UrlParse parse, Uri url)
        {
            if (parse.IsDirectory)
            {
                if (parse.Segments.Count == 0 && parse.Extension == null)
                {
                    app.Run(parse);
                }
                else
                {
                    if (parse.Segments.Count > 0 && parse.Extension == null)
                    {
                        switch (parse.SegmentType)
                        {
                        case SegmentType.Themes:
                            RenderResource(app, parse, url);
                            break;

                        case SegmentType.Resource:
                            app.Run(parse);
                            break;

                        default:
                            app.RenderError(404);
                            break;
                        }
                    }
                    else
                    {
                        app.RenderError(404);
                    }
                }
            }
            else
            {
                if (parse.Segments.Count > 0)
                {
                    if (parse.Extension != null)
                    {
                        switch (parse.SegmentType)
                        {
                        case SegmentType.Resource:
                            parse.AppendExtension();
                            app.Run(parse);
                            break;

                        case SegmentType.Themes:
                        case SegmentType.Uploads:
                            RenderResource(app, parse, url);
                            break;

                        case SegmentType.Favicon:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Ico, null);
                            }
                            break;

                        case SegmentType.Robots:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Txt, null);
                            }
                            break;

                        case SegmentType.Sitemap:
                        case SegmentType.CrossDomain:
                            if (parse.Segments.Count == 1)
                            {
                                RenderResource(app, parse, ExtensionType.Xml, null);
                            }
                            break;

                        case SegmentType.Caches:
                        case SegmentType.Runtime:
                        case SegmentType.Management:
                            app.RenderError(404);
                            break;

                        case SegmentType.Admin:
                            if (parse.ExtensionType != ExtensionType.Html)
                            {
                                parse.AppendExtension();
                            }
                            parse.FormatManagement();
                            app.Run(parse);
                            break;

                        case SegmentType.Install:
                            if (parse.ExtensionType != ExtensionType.Html)
                            {
                                parse.AppendExtension();
                            }
                            app.Run(parse);
                            break;

                        default:
                            if (parse.ExtensionType == ExtensionType.Html)
                            {
                                app.Run(parse);
                            }
                            else
                            {
                                if (parse.Segments.Count > 3 && Utility.StaticString.Equals(parse.Segments[1], StringComparison.OrdinalIgnoreCase))
                                {
                                    parse.AppendExtension();
                                    app.Run(parse);
                                }
                                else
                                {
                                    app.RenderError(404);
                                }
                            }
                            break;
                        }
                    }
                    else
                    {
                        if (parse.SegmentType == SegmentType.Admin && parse.Segments.Count == 1)
                        {
                            parse.FormatManagement();
                            app.Run(parse);
                        }
                        else
                        {
                            app.RenderError(404);
                        }
                    }
                }
                else
                {
                    app.RenderError(404);
                }
            }
        }