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); } } }
//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); } } }