public void ProcessFile(HttpRequest request, HttpResponse response) { FileContentType fct = null; FileResource fr = null; string url = request.BaseUrl; var result = MatchVirtuslFolder(request.BaseUrl); if (result != null) { FileResult fileResult = new FileResult(result); OutputFile(fileResult, request, response); return; } if (url[url.Length - 1] == '/') { for (int i = 0; i < mDefaultPages.Count; i++) { string defaultpage = url + mDefaultPages[i]; string ext = HttpParse.GetBaseUrlExt(defaultpage); if (!mExts.TryGetValue(ext, out fct)) { continue; } fr = GetFileResource(defaultpage); if (fr != null) { OutputFileResource(fct, fr, response); return; } } if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, null, $"HTTP {request.ID} {request.RemoteIPAddress} get {request.Url} file not found"); } if (!Server.OnHttpRequesNotfound(request, response).Cancel) { NotFoundResult notFound = new NotFoundResult("{0} file not found", request.Url); response.Result(notFound); } return; } if (ExtSupport(request.Ext)) { url = System.Net.WebUtility.UrlDecode(url); fct = mExts[request.Ext]; fr = GetFileResource(url); if (!Server.Options.Debug && fr != null) { OutputFileResource(fct, fr, response); } else { string file; string fileurl = HttpParse.GetBaseUrl(request.Url); fileurl = System.Net.WebUtility.UrlDecode(fileurl); if (ExistsFile(request, fileurl, out file)) { fr = CreateResource(file, false); if (fr != null) { OutputFileResource(fct, fr, response); } } else { if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, null, $"HTTP {request.ID} {request.RemoteIPAddress} get {request.Url} file not found"); } if (!Server.OnHttpRequesNotfound(request, response).Cancel) { NotFoundResult notFound = new NotFoundResult("{0} file not found", request.Url); response.Result(notFound); } } } } else { if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, null, $"HTTP {request.ID} {request.RemoteIPAddress} get { request.BaseUrl} file ext not support"); } NotSupportResult notSupport = new NotSupportResult("get {0} file {1} ext not support", request.Url, request.Ext); response.Result(notSupport); } }
public void ProcessFile(HttpRequest request, HttpResponse response) { string url = HttpParse.CharToLower(request.BaseUrl); if (url == "/") { for (int i = 0; i < mDefaultPages.Count; i++) { string defaultpage = url + mDefaultPages[i]; string ext = HttpParse.GetBaseUrlExt(defaultpage); FileContentType fct = null; if (!mExts.TryGetValue(ext, out fct)) { continue; } FileResource fr = GetFileResource(defaultpage); if (fr != null) { OutputFileResource(fct, fr, response); return; } } if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "{0} get {1} file not found", request.ClientIPAddress, request.BaseUrl); } if (!Server.OnHttpRequesNotfound(request, response).Cancel) { NotFoundResult notFound = new NotFoundResult("{0} file not found", request.Url); response.Result(notFound); } return; } if (ExtSupport(request.Ext)) { FileContentType fct = mExts[request.Ext]; FileResource fr = GetFileResource(url); if (fr != null) { OutputFileResource(fct, fr, response); } else { string file; string fileurl = HttpParse.GetBaseUrl(request.Url); if (ExistsFile(request, fileurl, out file)) { fr = CreateResource(file, false); if (fr != null) { OutputFileResource(fct, fr, response); } } else { if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "{0} get {1} file not found", request.ClientIPAddress, request.BaseUrl); } if (!Server.OnHttpRequesNotfound(request, response).Cancel) { NotFoundResult notFound = new NotFoundResult("{0} file not found", request.Url); response.Result(notFound); } } } } else { if (Server.EnableLog(EventArgs.LogType.Warring)) { Server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "{0} get {1} file ext not support", request.ClientIPAddress, request.BaseUrl); } NotSupportResult notSupport = new NotSupportResult("get {0} file {1} ext not support", request.Url, request.Ext); response.Result(notSupport); } }