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