Beispiel #1
0
 public void Execute(HtcHttpContext context)
 {
     foreach (var i in _indexes)
     {
         var index = HttpIoUtils.ReplaceVars(context, i);
         if (index.Equals("$internal_indexes"))
         {
             foreach (var j in UrlMapper.IndexFiles)
             {
                 var indexPath = Path.Combine(context.ServerInfo.RootPath, j[0].Equals('/') ? j.Remove(0, 1) : Path.Combine(context.Request.Path, j).Remove(0, 1));
                 if (!File.Exists(indexPath))
                 {
                     continue;
                 }
                 var extension = Path.GetExtension(indexPath);
                 context.Request.RequestFilePath = indexPath;
                 if (UrlMapper.ExtensionPlugins.TryGetValue(extension.ToLower(), out var plugin))
                 {
                     if (!plugin.OnHttpExtensionRequest(context, indexPath, extension.ToLower()))
                     {
                         continue;
                     }
                     context.ErrorMessageManager.SendError(context, 500);
                     return;
                 }
                 try {
                     HttpIoUtils.CallFile(context, indexPath);
                 } catch {
                     context.ErrorMessageManager.SendError(context, 500);
                 }
                 return;
             }
         }
         else
         {
             var indexPath = Path.Combine(context.ServerInfo.RootPath, index[0].Equals('/') ? index.Remove(0, 1) : Path.Combine(context.Request.Path, index).Remove(0, 1));
             if (!File.Exists(indexPath))
             {
                 continue;
             }
             var extension = Path.GetExtension(indexPath);
             context.Request.RequestFilePath = indexPath;
             if (UrlMapper.ExtensionPlugins.TryGetValue(extension.ToLower(), out var plugin))
             {
                 if (!plugin.OnHttpExtensionRequest(context, indexPath, extension.ToLower()))
                 {
                     continue;
                 }
                 context.ErrorMessageManager.SendError(context, 500);
                 return;
             }
             try {
                 HttpIoUtils.CallFile(context, indexPath);
             } catch {
                 context.ErrorMessageManager.SendError(context, 500);
             }
             return;
         }
     }
 }
Beispiel #2
0
 public void Execute(HtcHttpContext context)
 {
     foreach (var file in _files)
     {
         var tempPath = HttpIoUtils.ReplaceVars(context, file);
         if (tempPath[0].Equals('='))
         {
             if (int.TryParse(tempPath.Remove(0, 1), out var statusCode))
             {
                 context.ErrorMessageManager.SendError(context, statusCode);
                 return;
             }
             context.ErrorMessageManager.SendError(context, 500);
             return;
         }
         if (tempPath[0].Equals('@'))
         {
             foreach (var location in _httpLocationManager.Locations)
             {
                 if (!location.Key.Equals(tempPath, StringComparison.CurrentCultureIgnoreCase))
                 {
                     continue;
                 }
                 location.Execute(context);
                 return;
             }
         }
         context.Request.TranslatedPath = Path.GetFullPath(Path.Combine(context.ServerInfo.RootPath, tempPath.Remove(0, 1)));
         if (File.Exists(context.Request.TranslatedPath))
         {
             var extension = Path.GetExtension(context.Request.TranslatedPath);
             if (UrlMapper.ExtensionPlugins.ContainsKey(extension.ToLower()))
             {
                 if (UrlMapper.ExtensionPlugins[extension.ToLower()].OnHttpExtensionRequest(context, context.Request.TranslatedPath, extension.ToLower()))
                 {
                     context.ErrorMessageManager.SendError(context, 500);
                 }
             }
             else
             {
                 try {
                     HttpIoUtils.CallFile(context, context.Request.TranslatedPath);
                 } catch {
                     context.ErrorMessageManager.SendError(context, 500);
                 }
             }
         }
         else if (Directory.Exists(context.Request.TranslatedPath))
         {
             if (!context.Request.RequestPath.EndsWith('/'))
             {
                 context.Response.Redirect(context.Request.RequestPath + "/");
             }
             //context.ErrorMessageManager.SendError(context, 404);
             // Do indexer
         }
     }
 }