gitextract_y4symcy7/ ├── .azuredevops/ │ └── dependabot.yml ├── .config/ │ ├── CredScanSuppressions.json │ └── tsaoptions.json ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.md │ │ ├── feedback.md │ │ └── idea.md │ ├── policies/ │ │ └── resourceManagement.yml │ └── workflows/ │ ├── docker_build.yml │ ├── markdownlint-problem-matcher.json │ ├── markdownlint.yml │ └── markdownlintignore ├── .gitignore ├── .markdownlint.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Directory.Build.props ├── Directory.Build.targets ├── LICENSE.txt ├── NuGet.config ├── README.md ├── SECURITY.md ├── TFMs.props ├── THIRD-PARTY-NOTICES.TXT ├── YARP.slnx ├── activate.ps1 ├── activate.sh ├── azure-pipelines-nonprod.yml ├── azure-pipelines-pr.yml ├── azure-pipelines.yml ├── build.cmd ├── build.sh ├── docs/ │ ├── DailyBuilds.md │ ├── README.md │ ├── designs/ │ │ ├── README.md │ │ ├── config.md │ │ ├── route-extensibility.md │ │ └── yarp-tunneling.md │ ├── operations/ │ │ ├── BackportingToPreview.md │ │ ├── Branching.md │ │ ├── DependencyFlow.md │ │ ├── README.md │ │ └── Release.md │ └── roadmap.md ├── dotnet-yarp-release.yml ├── eng/ │ ├── Build.props │ ├── CodeAnalysis.src.globalconfig │ ├── CodeAnalysis.test.globalconfig │ ├── PoliCheckExclusions.xml │ ├── Publishing.props │ ├── Signing.props │ ├── Version.Details.xml │ ├── Versions.props │ ├── common/ │ │ ├── BuildConfiguration/ │ │ │ └── build-configuration.json │ │ ├── CIBuild.cmd │ │ ├── PSScriptAnalyzerSettings.psd1 │ │ ├── README.md │ │ ├── SetupNugetSources.ps1 │ │ ├── SetupNugetSources.sh │ │ ├── build.cmd │ │ ├── build.ps1 │ │ ├── build.sh │ │ ├── cibuild.sh │ │ ├── core-templates/ │ │ │ ├── job/ │ │ │ │ ├── job.yml │ │ │ │ ├── onelocbuild.yml │ │ │ │ ├── publish-build-assets.yml │ │ │ │ ├── source-build.yml │ │ │ │ └── source-index-stage1.yml │ │ │ ├── jobs/ │ │ │ │ ├── codeql-build.yml │ │ │ │ ├── jobs.yml │ │ │ │ └── source-build.yml │ │ │ ├── post-build/ │ │ │ │ ├── common-variables.yml │ │ │ │ ├── post-build.yml │ │ │ │ └── setup-maestro-vars.yml │ │ │ ├── steps/ │ │ │ │ ├── cleanup-microbuild.yml │ │ │ │ ├── component-governance.yml │ │ │ │ ├── enable-internal-runtimes.yml │ │ │ │ ├── enable-internal-sources.yml │ │ │ │ ├── generate-sbom.yml │ │ │ │ ├── get-delegation-sas.yml │ │ │ │ ├── get-federated-access-token.yml │ │ │ │ ├── install-microbuild-impl.yml │ │ │ │ ├── install-microbuild.yml │ │ │ │ ├── publish-build-artifacts.yml │ │ │ │ ├── publish-logs.yml │ │ │ │ ├── publish-pipeline-artifacts.yml │ │ │ │ ├── retain-build.yml │ │ │ │ ├── send-to-helix.yml │ │ │ │ ├── source-build.yml │ │ │ │ └── source-index-stage1-publish.yml │ │ │ └── variables/ │ │ │ └── pool-providers.yml │ │ ├── cross/ │ │ │ ├── armel/ │ │ │ │ └── tizen/ │ │ │ │ └── tizen.patch │ │ │ ├── build-android-rootfs.sh │ │ │ ├── build-rootfs.sh │ │ │ ├── install-debs.py │ │ │ ├── riscv64/ │ │ │ │ └── tizen/ │ │ │ │ └── tizen.patch │ │ │ ├── tizen-build-rootfs.sh │ │ │ ├── tizen-fetch.sh │ │ │ └── toolchain.cmake │ │ ├── darc-init.ps1 │ │ ├── darc-init.sh │ │ ├── dotnet-install.cmd │ │ ├── dotnet-install.ps1 │ │ ├── dotnet-install.sh │ │ ├── dotnet.cmd │ │ ├── dotnet.ps1 │ │ ├── dotnet.sh │ │ ├── enable-cross-org-publishing.ps1 │ │ ├── generate-locproject.ps1 │ │ ├── generate-sbom-prep.ps1 │ │ ├── generate-sbom-prep.sh │ │ ├── helixpublish.proj │ │ ├── init-tools-native.cmd │ │ ├── init-tools-native.ps1 │ │ ├── init-tools-native.sh │ │ ├── internal/ │ │ │ ├── Directory.Build.props │ │ │ ├── NuGet.config │ │ │ └── Tools.csproj │ │ ├── internal-feed-operations.ps1 │ │ ├── internal-feed-operations.sh │ │ ├── loc/ │ │ │ └── P22DotNetHtmlLocalization.lss │ │ ├── msbuild.ps1 │ │ ├── msbuild.sh │ │ ├── native/ │ │ │ ├── CommonLibrary.psm1 │ │ │ ├── common-library.sh │ │ │ ├── init-compiler.sh │ │ │ ├── init-distro-rid.sh │ │ │ ├── init-os-and-arch.sh │ │ │ ├── install-cmake-test.sh │ │ │ ├── install-cmake.sh │ │ │ ├── install-dependencies.sh │ │ │ └── install-tool.ps1 │ │ ├── pipeline-logging-functions.ps1 │ │ ├── pipeline-logging-functions.sh │ │ ├── post-build/ │ │ │ ├── check-channel-consistency.ps1 │ │ │ ├── nuget-validation.ps1 │ │ │ ├── nuget-verification.ps1 │ │ │ ├── publish-using-darc.ps1 │ │ │ ├── redact-logs.ps1 │ │ │ ├── sourcelink-validation.ps1 │ │ │ └── symbols-validation.ps1 │ │ ├── retain-build.ps1 │ │ ├── sdk-task.ps1 │ │ ├── sdk-task.sh │ │ ├── sdl/ │ │ │ ├── NuGet.config │ │ │ ├── configure-sdl-tool.ps1 │ │ │ ├── execute-all-sdl-tools.ps1 │ │ │ ├── extract-artifact-archives.ps1 │ │ │ ├── extract-artifact-packages.ps1 │ │ │ ├── init-sdl.ps1 │ │ │ ├── packages.config │ │ │ ├── run-sdl.ps1 │ │ │ ├── sdl.ps1 │ │ │ └── trim-assets-version.ps1 │ │ ├── template-guidance.md │ │ ├── templates/ │ │ │ ├── job/ │ │ │ │ ├── job.yml │ │ │ │ ├── onelocbuild.yml │ │ │ │ ├── publish-build-assets.yml │ │ │ │ ├── source-build.yml │ │ │ │ └── source-index-stage1.yml │ │ │ ├── jobs/ │ │ │ │ ├── codeql-build.yml │ │ │ │ ├── jobs.yml │ │ │ │ └── source-build.yml │ │ │ ├── post-build/ │ │ │ │ ├── common-variables.yml │ │ │ │ ├── post-build.yml │ │ │ │ └── setup-maestro-vars.yml │ │ │ ├── steps/ │ │ │ │ ├── component-governance.yml │ │ │ │ ├── enable-internal-runtimes.yml │ │ │ │ ├── enable-internal-sources.yml │ │ │ │ ├── generate-sbom.yml │ │ │ │ ├── get-delegation-sas.yml │ │ │ │ ├── get-federated-access-token.yml │ │ │ │ ├── publish-build-artifacts.yml │ │ │ │ ├── publish-logs.yml │ │ │ │ ├── publish-pipeline-artifacts.yml │ │ │ │ ├── retain-build.yml │ │ │ │ ├── send-to-helix.yml │ │ │ │ ├── source-build.yml │ │ │ │ ├── source-index-stage1-publish.yml │ │ │ │ └── vmr-sync.yml │ │ │ ├── variables/ │ │ │ │ └── pool-providers.yml │ │ │ └── vmr-build-pr.yml │ │ ├── templates-official/ │ │ │ ├── job/ │ │ │ │ ├── job.yml │ │ │ │ ├── onelocbuild.yml │ │ │ │ ├── publish-build-assets.yml │ │ │ │ ├── source-build.yml │ │ │ │ └── source-index-stage1.yml │ │ │ ├── jobs/ │ │ │ │ ├── codeql-build.yml │ │ │ │ ├── jobs.yml │ │ │ │ └── source-build.yml │ │ │ ├── post-build/ │ │ │ │ ├── common-variables.yml │ │ │ │ ├── post-build.yml │ │ │ │ └── setup-maestro-vars.yml │ │ │ ├── steps/ │ │ │ │ ├── component-governance.yml │ │ │ │ ├── enable-internal-runtimes.yml │ │ │ │ ├── enable-internal-sources.yml │ │ │ │ ├── generate-sbom.yml │ │ │ │ ├── get-delegation-sas.yml │ │ │ │ ├── get-federated-access-token.yml │ │ │ │ ├── publish-build-artifacts.yml │ │ │ │ ├── publish-logs.yml │ │ │ │ ├── publish-pipeline-artifacts.yml │ │ │ │ ├── retain-build.yml │ │ │ │ ├── send-to-helix.yml │ │ │ │ ├── source-build.yml │ │ │ │ └── source-index-stage1-publish.yml │ │ │ └── variables/ │ │ │ ├── pool-providers.yml │ │ │ └── sdl-variables.yml │ │ ├── tools.ps1 │ │ ├── tools.sh │ │ ├── vmr-sync.ps1 │ │ └── vmr-sync.sh │ ├── sdl-tsa-vars.config │ └── yarpapppack/ │ ├── Common.projitems │ ├── yarpapppack-linux-arm64.csproj │ └── yarpapppack-linux-x64.csproj ├── es-metadata.yml ├── global.json ├── pack.cmd ├── pack.sh ├── restore.cmd ├── restore.sh ├── samples/ │ ├── BasicYarpSample/ │ │ ├── BasicYarpSample.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ └── appsettings.json │ ├── Directory.Build.props │ ├── KubernetesIngress.Sample/ │ │ ├── Combined/ │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── README.md │ │ │ ├── Yarp.Kubernetes.IngressController.csproj │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ingress-controller.yaml │ │ ├── Ingress/ │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── README.md │ │ │ ├── Yarp.Kubernetes.Ingress.csproj │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ingress.yaml │ │ ├── Monitor/ │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── README.md │ │ │ ├── Yarp.Kubernetes.Monitor.csproj │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ingress-monitor.yaml │ │ ├── README.md │ │ └── backend/ │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── backend.csproj │ │ ├── backend.yaml │ │ └── ingress-sample.yaml │ ├── Prometheus/ │ │ ├── HttpLoadApp/ │ │ │ ├── HttpLoadApp.csproj │ │ │ └── Program.cs │ │ ├── README.md │ │ ├── ReverseProxy.Metrics-Prometheus.Sample/ │ │ │ ├── Program.cs │ │ │ ├── PrometheusDnsMetrics.cs │ │ │ ├── PrometheusForwarderMetrics.cs │ │ │ ├── PrometheusKestrelMetrics.cs │ │ │ ├── PrometheusOutboundHttpMetrics.cs │ │ │ ├── PrometheusServiceExtensions.cs │ │ │ ├── PrometheusSocketMetrics.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── ReverseProxy.Metrics.Prometheus.Sample.csproj │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── prometheus.yml │ │ ├── run10destinations.cmd │ │ └── run10destinations.sh │ ├── README.md │ ├── ReverseProxy.Auth.Sample/ │ │ ├── Controllers/ │ │ │ └── AccountController.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.Auth.Sample.csproj │ │ ├── TokenService.cs │ │ ├── Views/ │ │ │ └── Account/ │ │ │ ├── AccessDenied.cshtml │ │ │ ├── LoggedOut.cshtml │ │ │ └── Login.cshtml │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.Code.Sample/ │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.Code.Sample.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.Config.Sample/ │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.Config.Sample.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.ConfigFilter.Sample/ │ │ ├── CustomConfigFilter.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.ConfigFilter.Sample.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.Direct.Sample/ │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.Direct.Sample.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.HttpSysDelegation.Sample/ │ │ ├── README.md │ │ ├── ReverseProxy/ │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── ReverseProxy.HttpSysDelegation.Sample.csproj │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── SampleHttpSysServer/ │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── SampleHttpSysServer.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.LetsEncrypt.Sample/ │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.LetsEncrypt.Sample.csproj │ │ └── appsettings.json │ ├── ReverseProxy.Metrics.Sample/ │ │ ├── ForwarderMetricsConsumer.cs │ │ ├── ForwarderTelemetryConsumer.cs │ │ ├── HttpClientTelemetryConsumer.cs │ │ ├── PerRequestMetrics.cs │ │ ├── PerRequestYarpMetricCollectionMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── ReverseProxy.Metrics.Sample.csproj │ │ ├── WebSocketsTelemetryConsumer.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ReverseProxy.Transforms.Sample/ │ │ ├── MyTransformFactory.cs │ │ ├── MyTransformProvider.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── ReverseProxy.Transforms.Sample.csproj │ │ ├── TokenService.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── SampleServer/ │ ├── Controllers/ │ │ ├── HealthController.cs │ │ ├── HttpController.cs │ │ └── WebSocketsController.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── README.md │ ├── SampleServer.csproj │ ├── appsettings.Development.json │ ├── appsettings.json │ └── wwwroot/ │ └── index.html ├── src/ │ ├── Application/ │ │ ├── Extensions.cs │ │ ├── Program.cs │ │ └── Yarp.Application.csproj │ ├── Common/ │ │ └── Package.targets │ ├── Directory.Build.props │ ├── Kubernetes.Controller/ │ │ ├── Caching/ │ │ │ ├── Endpoints.cs │ │ │ ├── ICache.cs │ │ │ ├── IngressCache.cs │ │ │ ├── IngressClassData.cs │ │ │ ├── IngressData.cs │ │ │ ├── NamespaceCache.cs │ │ │ └── ServiceData.cs │ │ ├── Certificates/ │ │ │ ├── CertificateHelper.cs │ │ │ ├── ICertificateHelper.cs │ │ │ ├── IServerCertificateSelector.cs │ │ │ └── ServerCertificateSelector.cs │ │ ├── Client/ │ │ │ ├── GroupApiVersionKind.cs │ │ │ ├── IIngressResourceStatusUpdater.cs │ │ │ ├── IResourceInformer.cs │ │ │ ├── IResourceInformerRegistration.cs │ │ │ ├── KubernetesClientOptions.cs │ │ │ ├── ResourceInformer.cs │ │ │ ├── ResourceSelector.cs │ │ │ ├── V1EndpointsResourceInformer.cs │ │ │ ├── V1IngressClassResourceInformer.cs │ │ │ ├── V1IngressResourceInformer.cs │ │ │ ├── V1IngressResourceStatusUpdater.cs │ │ │ ├── V1SecretResourceInformer.cs │ │ │ └── V1ServiceResourceInformer.cs │ │ ├── ConfigProvider/ │ │ │ ├── IUpdateConfig.cs │ │ │ └── KubernetesConfigProvider.cs │ │ ├── Converters/ │ │ │ ├── ClusterTransfer.cs │ │ │ ├── YarpConfigContext.cs │ │ │ ├── YarpIngressContext.cs │ │ │ ├── YarpIngressOptions.cs │ │ │ └── YarpParser.cs │ │ ├── Hosting/ │ │ │ ├── BackgroundHostedService.cs │ │ │ ├── HostedServiceAdapter.cs │ │ │ └── ServiceCollectionHostedServiceAdapterExtensions.cs │ │ ├── Management/ │ │ │ ├── KubernetesCoreExtensions.cs │ │ │ ├── KubernetesReverseProxyServiceCollectionExtensions.cs │ │ │ └── KubernetesReverseProxyWebHostBuilderExtensions.cs │ │ ├── NamespacedName.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Protocol/ │ │ │ ├── DispatchActionResult.cs │ │ │ ├── DispatchConfigProvider.cs │ │ │ ├── DispatchController.cs │ │ │ ├── Dispatcher.cs │ │ │ ├── IDispatchTarget.cs │ │ │ ├── IDispatcher.cs │ │ │ ├── Message.cs │ │ │ ├── MessageConfigProviderExtensions.cs │ │ │ ├── Receiver.cs │ │ │ └── ReceiverOptions.cs │ │ ├── Queues/ │ │ │ ├── IWorkQueue.cs │ │ │ ├── ProcessingRateLimitedQueue.cs │ │ │ └── WorkQueue.cs │ │ ├── Rate/ │ │ │ ├── Limit.cs │ │ │ ├── Limiter.cs │ │ │ └── Reservation.cs │ │ ├── Services/ │ │ │ ├── IReconciler.cs │ │ │ ├── IngressController.cs │ │ │ ├── QueueItem.cs │ │ │ ├── ReconcileData.cs │ │ │ └── Reconciler.cs │ │ ├── Yarp.Kubernetes.Controller.csproj │ │ └── YarpOptions.cs │ ├── ReverseProxy/ │ │ ├── Configuration/ │ │ │ ├── ActiveHealthCheckConfig.cs │ │ │ ├── AuthorizationConstants.cs │ │ │ ├── ClusterConfig.cs │ │ │ ├── ClusterValidators/ │ │ │ │ ├── DestinationValidator.cs │ │ │ │ ├── HealthCheckValidator.cs │ │ │ │ ├── IClusterValidator.cs │ │ │ │ ├── LoadBalancingValidator.cs │ │ │ │ ├── ProxyHttpClientValidator.cs │ │ │ │ ├── ProxyHttpRequestValidator.cs │ │ │ │ └── SessionAffinityValidator.cs │ │ │ ├── ConfigProvider/ │ │ │ │ ├── ConfigurationConfigProvider.cs │ │ │ │ ├── ConfigurationReadingExtensions.cs │ │ │ │ └── ConfigurationSnapshot.cs │ │ │ ├── ConfigValidator.cs │ │ │ ├── CorsConstants.cs │ │ │ ├── DestinationConfig.cs │ │ │ ├── HeaderMatchMode.cs │ │ │ ├── HealthCheckConfig.cs │ │ │ ├── HttpClientConfig.cs │ │ │ ├── IConfigChangeListener.cs │ │ │ ├── IConfigValidator.cs │ │ │ ├── IProxyConfig.cs │ │ │ ├── IProxyConfigFilter.cs │ │ │ ├── IProxyConfigProvider.cs │ │ │ ├── IYarpOutputCachePolicyProvider.cs │ │ │ ├── IYarpRateLimiterPolicyProvider.cs │ │ │ ├── InMemoryConfigProvider.cs │ │ │ ├── InMemoryConfigProviderExtensions.cs │ │ │ ├── PassiveHealthCheckConfig.cs │ │ │ ├── QueryParameterMatchMode.cs │ │ │ ├── RateLimitingConstants.cs │ │ │ ├── RouteConfig.cs │ │ │ ├── RouteHeader.cs │ │ │ ├── RouteMatch.cs │ │ │ ├── RouteQueryParameter.cs │ │ │ ├── RouteValidators/ │ │ │ │ ├── AuthorizationPolicyValidator.cs │ │ │ │ ├── CorsPolicyValidator.cs │ │ │ │ ├── HeadersValidator.cs │ │ │ │ ├── HostValidator.cs │ │ │ │ ├── IRouteValidator.cs │ │ │ │ ├── MethodsValidator.cs │ │ │ │ ├── OutputCachePolicyValidator.cs │ │ │ │ ├── PathValidator.cs │ │ │ │ ├── QueryParametersValidator.cs │ │ │ │ ├── RateLimitPolicyValidator.cs │ │ │ │ └── TimeoutPolicyValidator.cs │ │ │ ├── SessionAffinityConfig.cs │ │ │ ├── SessionAffinityCookieConfig.cs │ │ │ ├── TimeoutPolicyConstants.cs │ │ │ └── WebProxyConfig.cs │ │ ├── ConfigurationSchema.json │ │ ├── Delegation/ │ │ │ ├── AppBuilderDelegationExtensions.cs │ │ │ ├── DelegationExtensions.cs │ │ │ ├── DummyHttpSysDelegator.cs │ │ │ ├── HttpSysDelegator.cs │ │ │ ├── HttpSysDelegatorMiddleware.cs │ │ │ └── IHttpSysDelegator.cs │ │ ├── Forwarder/ │ │ │ ├── CallbackHttpClientFactory.cs │ │ │ ├── DirectForwardingHttpClientProvider.cs │ │ │ ├── EmptyHttpContent.cs │ │ │ ├── ForwarderError.cs │ │ │ ├── ForwarderErrorFeature.cs │ │ │ ├── ForwarderHttpClientContext.cs │ │ │ ├── ForwarderHttpClientFactory.cs │ │ │ ├── ForwarderMiddleware.cs │ │ │ ├── ForwarderRequestConfig.cs │ │ │ ├── ForwarderStage.cs │ │ │ ├── ForwarderTelemetry.cs │ │ │ ├── HttpForwarder.cs │ │ │ ├── HttpTransformer.cs │ │ │ ├── IForwarderErrorFeature.cs │ │ │ ├── IForwarderHttpClientFactory.cs │ │ │ ├── IHttpForwarder.cs │ │ │ ├── IHttpForwarderExtensions.cs │ │ │ ├── ProtocolHelper.cs │ │ │ ├── RequestTransformer.cs │ │ │ ├── RequestUtilities.cs │ │ │ ├── ReverseProxyPropagator.cs │ │ │ ├── StreamCopier.cs │ │ │ ├── StreamCopyHttpContent.cs │ │ │ └── StreamCopyResult.cs │ │ ├── Health/ │ │ │ ├── ActiveHealthCheckMonitor.Log.cs │ │ │ ├── ActiveHealthCheckMonitor.cs │ │ │ ├── ActiveHealthCheckMonitorOptions.cs │ │ │ ├── AppBuilderHealthExtensions.cs │ │ │ ├── ClusterDestinationsUpdater.cs │ │ │ ├── ConsecutiveFailuresHealthPolicy.cs │ │ │ ├── ConsecutiveFailuresHealthPolicyOptions.cs │ │ │ ├── DefaultProbingRequestFactory.cs │ │ │ ├── DestinationHealthUpdater.cs │ │ │ ├── DestinationProbingResult.cs │ │ │ ├── EntityActionScheduler.cs │ │ │ ├── HealthCheckConstants.cs │ │ │ ├── HealthyAndUnknownDestinationsPolicy.cs │ │ │ ├── HealthyOrPanicDestinationsPolicy.cs │ │ │ ├── IActiveHealthCheckMonitor.cs │ │ │ ├── IActiveHealthCheckPolicy.cs │ │ │ ├── IAvailableDestinationsPolicy.cs │ │ │ ├── IClusterDestinationsUpdater.cs │ │ │ ├── IDestinationHealthUpdater.cs │ │ │ ├── IPassiveHealthCheckPolicy.cs │ │ │ ├── IProbingRequestFactory.cs │ │ │ ├── NewActiveDestinationHealth.cs │ │ │ ├── PassiveHealthCheckMiddleware.cs │ │ │ ├── TransportFailureRateHealthPolicy.cs │ │ │ └── TransportFailureRateHealthPolicyOptions.cs │ │ ├── Limits/ │ │ │ └── LimitsMiddleware.cs │ │ ├── LoadBalancing/ │ │ │ ├── AppBuilderLoadBalancingExtensions.cs │ │ │ ├── FirstLoadBalancingPolicy.cs │ │ │ ├── ILoadBalancingPolicy.cs │ │ │ ├── LeastRequestsLoadBalancingPolicy.cs │ │ │ ├── LoadBalancingMiddleware.cs │ │ │ ├── LoadBalancingPolicies.cs │ │ │ ├── PowerOfTwoChoicesLoadBalancingPolicy.cs │ │ │ ├── RandomLoadBalancingPolicy.cs │ │ │ └── RoundRobinLoadBalancingPolicy.cs │ │ ├── Management/ │ │ │ ├── IProxyStateLookup.cs │ │ │ ├── IReverseProxyBuilder.cs │ │ │ ├── IReverseProxyBuilderExtensions.cs │ │ │ ├── ProxyConfigManager.cs │ │ │ ├── ReverseProxyBuilder.cs │ │ │ └── ReverseProxyServiceCollectionExtensions.cs │ │ ├── Model/ │ │ │ ├── ClusterDestinationsState.cs │ │ │ ├── ClusterModel.cs │ │ │ ├── ClusterState.cs │ │ │ ├── DestinationHealth.cs │ │ │ ├── DestinationHealthState.cs │ │ │ ├── DestinationModel.cs │ │ │ ├── DestinationState.cs │ │ │ ├── HttpContextFeaturesExtensions.cs │ │ │ ├── IClusterChangeListener.cs │ │ │ ├── IReverseProxyApplicationBuilder.cs │ │ │ ├── IReverseProxyFeature.cs │ │ │ ├── ProxyPipelineInitializerMiddleware.cs │ │ │ ├── README.md │ │ │ ├── ReverseProxyApplicationBuilder.cs │ │ │ ├── ReverseProxyFeature.cs │ │ │ ├── RouteModel.cs │ │ │ └── RouteState.cs │ │ ├── README.md │ │ ├── Routing/ │ │ │ ├── DirectForwardingIEndpointRouteBuilderExtensions.cs │ │ │ ├── HeaderMatcher.cs │ │ │ ├── HeaderMatcherPolicy.cs │ │ │ ├── HeaderMetadata.cs │ │ │ ├── IHeaderMetadata.cs │ │ │ ├── IQueryParameterMetadata.cs │ │ │ ├── ProxyEndpointFactory.cs │ │ │ ├── QueryParameterMatcher.cs │ │ │ ├── QueryParameterMatcherPolicy.cs │ │ │ ├── QueryParameterMetadata.cs │ │ │ ├── ReverseProxyConventionBuilder.cs │ │ │ └── ReverseProxyIEndpointRouteBuilderExtensions.cs │ │ ├── ServiceDiscovery/ │ │ │ ├── DnsDestinationResolver.cs │ │ │ ├── DnsDestinationResolverOptions.cs │ │ │ ├── IDestinationResolver.cs │ │ │ ├── NoOpDestinationResolver.cs │ │ │ └── ResolvedDestinationCollection.cs │ │ ├── SessionAffinity/ │ │ │ ├── AffinitizeTransform.cs │ │ │ ├── AffinitizeTransformProvider.cs │ │ │ ├── AffinityHelpers.cs │ │ │ ├── AffinityResult.cs │ │ │ ├── AffinityStatus.cs │ │ │ ├── AppBuilderSessionAffinityExtensions.cs │ │ │ ├── ArrCookieSessionAffinityPolicy.cs │ │ │ ├── BaseEncryptedSessionAffinityPolicy.cs │ │ │ ├── BaseHashCookieSessionAffinityPolicy.cs │ │ │ ├── CookieSessionAffinityPolicy.cs │ │ │ ├── CustomHeaderSessionAffinityPolicy.cs │ │ │ ├── HashCookieSessionAffinityPolicy.cs │ │ │ ├── IAffinityFailurePolicy.cs │ │ │ ├── ISessionAffinityPolicy.cs │ │ │ ├── Log.cs │ │ │ ├── RedistributeAffinityFailurePolicy.cs │ │ │ ├── Return503ErrorAffinityFailurePolicy.cs │ │ │ ├── SessionAffinityConstants.cs │ │ │ └── SessionAffinityMiddleware.cs │ │ ├── Transforms/ │ │ │ ├── Builder/ │ │ │ │ ├── ActionTransformProvider.cs │ │ │ │ ├── ITransformBuilder.cs │ │ │ │ ├── ITransformFactory.cs │ │ │ │ ├── ITransformProvider.cs │ │ │ │ ├── StructuredTransformer.cs │ │ │ │ ├── TransformBuilder.cs │ │ │ │ ├── TransformBuilderContext.cs │ │ │ │ ├── TransformClusterValidationContext.cs │ │ │ │ ├── TransformHelpers.cs │ │ │ │ └── TransformRouteValidationContext.cs │ │ │ ├── ForwardedTransformActions.cs │ │ │ ├── ForwardedTransformExtensions.cs │ │ │ ├── ForwardedTransformFactory.cs │ │ │ ├── HttpMethodChangeTransform.cs │ │ │ ├── HttpMethodTransformExtensions.cs │ │ │ ├── HttpMethodTransformFactory.cs │ │ │ ├── NodeFormat.cs │ │ │ ├── PathRouteValuesTransform.cs │ │ │ ├── PathStringTransform.cs │ │ │ ├── PathTransformExtensions.cs │ │ │ ├── PathTransformFactory.cs │ │ │ ├── QueryParameterFromRouteTransform.cs │ │ │ ├── QueryParameterFromStaticTransform.cs │ │ │ ├── QueryParameterRemoveTransform.cs │ │ │ ├── QueryParameterTransform.cs │ │ │ ├── QueryTransformContext.cs │ │ │ ├── QueryTransformExtensions.cs │ │ │ ├── QueryTransformFactory.cs │ │ │ ├── RequestFuncTransform.cs │ │ │ ├── RequestHeaderClientCertTransform.cs │ │ │ ├── RequestHeaderForwardedTransform.cs │ │ │ ├── RequestHeaderOriginalHostTransform.cs │ │ │ ├── RequestHeaderRemoveTransform.cs │ │ │ ├── RequestHeaderRouteValueTransform.cs │ │ │ ├── RequestHeaderTransform.cs │ │ │ ├── RequestHeaderValueTransform.cs │ │ │ ├── RequestHeaderXForwardedForTransform.cs │ │ │ ├── RequestHeaderXForwardedHostTransform.cs │ │ │ ├── RequestHeaderXForwardedPrefixTransform.cs │ │ │ ├── RequestHeaderXForwardedProtoTransform.cs │ │ │ ├── RequestHeadersAllowedTransform.cs │ │ │ ├── RequestHeadersTransformExtensions.cs │ │ │ ├── RequestHeadersTransformFactory.cs │ │ │ ├── RequestTransform.cs │ │ │ ├── RequestTransformContext.cs │ │ │ ├── ResponseCondition.cs │ │ │ ├── ResponseFuncTransform.cs │ │ │ ├── ResponseHeaderRemoveTransform.cs │ │ │ ├── ResponseHeaderValueTransform.cs │ │ │ ├── ResponseHeadersAllowedTransform.cs │ │ │ ├── ResponseTrailerRemoveTransform.cs │ │ │ ├── ResponseTrailerValueTransform.cs │ │ │ ├── ResponseTrailersAllowedTransform.cs │ │ │ ├── ResponseTrailersFuncTransform.cs │ │ │ ├── ResponseTrailersTransform.cs │ │ │ ├── ResponseTrailersTransformContext.cs │ │ │ ├── ResponseTransform.cs │ │ │ ├── ResponseTransformContext.cs │ │ │ ├── ResponseTransformExtensions.cs │ │ │ ├── ResponseTransformFactory.cs │ │ │ ├── RouteConfigTransformExtensions.cs │ │ │ └── TransformBuilderContextFuncExtensions.cs │ │ ├── Utilities/ │ │ │ ├── ActivityCancellationTokenSource.cs │ │ │ ├── AtomicCounter.cs │ │ │ ├── CaseInsensitiveEqualHelper.cs │ │ │ ├── CaseSensitiveEqualHelper.cs │ │ │ ├── CollectionEqualityHelper.cs │ │ │ ├── ConcurrentDictionaryExtensions.cs │ │ │ ├── DelegatingStream.cs │ │ │ ├── EventIds.cs │ │ │ ├── IClock.cs │ │ │ ├── IRandomFactory.cs │ │ │ ├── NullRandomFactory.cs │ │ │ ├── Observability.cs │ │ │ ├── ParsedMetadataEntry.cs │ │ │ ├── RandomFactory.cs │ │ │ ├── ServiceLookupHelper.cs │ │ │ ├── SkipLocalsInit.cs │ │ │ ├── TaskUtilities.cs │ │ │ ├── TlsFrameHelper.cs │ │ │ ├── ValueStopwatch.cs │ │ │ └── ValueStringBuilder.cs │ │ ├── WebSocketsTelemetry/ │ │ │ ├── HttpConnectFeatureWrapper.cs │ │ │ ├── HttpUpgradeFeatureWrapper.cs │ │ │ ├── WebSocketCloseReason.cs │ │ │ ├── WebSocketsParser.cs │ │ │ ├── WebSocketsTelemetry.cs │ │ │ ├── WebSocketsTelemetryExtensions.cs │ │ │ ├── WebSocketsTelemetryMiddleware.cs │ │ │ └── WebSocketsTelemetryStream.cs │ │ └── Yarp.ReverseProxy.csproj │ └── TelemetryConsumption/ │ ├── EventListenerService.cs │ ├── Forwarder/ │ │ ├── ForwarderEventListenerService.cs │ │ ├── ForwarderMetrics.cs │ │ ├── ForwarderStage.cs │ │ └── IForwarderTelemetryConsumer.cs │ ├── Http/ │ │ ├── HttpEventListenerService.cs │ │ ├── HttpMetrics.cs │ │ └── IHttpTelemetryConsumer.cs │ ├── IMetricsConsumer.cs │ ├── Kestrel/ │ │ ├── IKestrelTelemetryConsumer.cs │ │ ├── KestrelEventListenerService.cs │ │ └── KestrelMetrics.cs │ ├── MetricsOptions.cs │ ├── NameResolution/ │ │ ├── INameResolutionTelemetryConsumer.cs │ │ ├── NameResolutionEventListenerService.cs │ │ └── NameResolutionMetrics.cs │ ├── NetSecurity/ │ │ ├── INetSecurityTelemetryConsumer.cs │ │ ├── NetSecurityEventListenerService.cs │ │ └── NetSecurityMetrics.cs │ ├── README.md │ ├── Sockets/ │ │ ├── ISocketsTelemetryConsumer.cs │ │ ├── SocketsEventListenerService.cs │ │ └── SocketsMetrics.cs │ ├── TelemetryConsumptionExtensions.cs │ ├── WebSockets/ │ │ ├── IWebSocketsTelemetryConsumer.cs │ │ ├── WebSocketCloseReason.cs │ │ └── WebSocketsEventListenerService.cs │ └── Yarp.Telemetry.Consumption.csproj ├── startvs.cmd ├── test/ │ ├── Directory.Build.props │ ├── Kubernetes.Tests/ │ │ ├── Certificates/ │ │ │ ├── CertificateHelperTests.cs │ │ │ ├── cert.der │ │ │ ├── cert.pem │ │ │ ├── key.der │ │ │ └── key.pem │ │ ├── Client/ │ │ │ ├── ResourceInformerTests.cs │ │ │ ├── SyncResourceInformer.cs │ │ │ ├── V1DeploymentResourceInformer.cs │ │ │ └── V1PodResourceInformer.cs │ │ ├── Hosting/ │ │ │ ├── BackgroundHostedServiceTests.cs │ │ │ └── Fakes/ │ │ │ ├── FakeBackgroundHostedService.cs │ │ │ ├── FakeServer.cs │ │ │ ├── TestLatch.cs │ │ │ └── TestLatches.cs │ │ ├── IngressCacheTests.cs │ │ ├── IngressControllerTests.cs │ │ ├── IngressConversionTests.cs │ │ ├── KubeResourceGenerator.cs │ │ ├── Management/ │ │ │ └── KubernetesCoreExtensionsTests.cs │ │ ├── NamespacedNameTests.cs │ │ ├── Queues/ │ │ │ └── WorkQueueTests.cs │ │ ├── Rate/ │ │ │ ├── LimitTests.cs │ │ │ ├── LimiterTests.cs │ │ │ └── ReservationTests.cs │ │ ├── ReconcilerTests.cs │ │ ├── TestCluster/ │ │ │ ├── Controllers/ │ │ │ │ ├── ResourceApiController.cs │ │ │ │ └── ResourceApiGroupController.cs │ │ │ ├── ITestCluster.cs │ │ │ ├── ITestClusterHost.cs │ │ │ ├── Models/ │ │ │ │ ├── ListParameters.cs │ │ │ │ ├── ListResult.cs │ │ │ │ └── ResourceObject.cs │ │ │ ├── TestCluster.cs │ │ │ ├── TestClusterHost.cs │ │ │ ├── TestClusterHostBuilder.cs │ │ │ ├── TestClusterOptions.cs │ │ │ └── TestClusterStartup.cs │ │ ├── Utils/ │ │ │ ├── ResourceSerializers.cs │ │ │ └── TestLogger.cs │ │ ├── Yarp.Kubernetes.Tests.csproj │ │ └── testassets/ │ │ ├── annotations/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── basic-ingress/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── exact-match/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── external-name-ingress/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── hostname-routing/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── https/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── https-service-port-protocol/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── ingress-class-not-set/ │ │ │ └── ingress.yaml │ │ ├── ingress-class-set/ │ │ │ └── ingress.yaml │ │ ├── mapped-port/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── missing-svc/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-endpoints-ports/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-endpoints-same-port/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-hosts/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-ingresses/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-ingresses-one-svc/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── multiple-namespaces/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── port-diff-name/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── port-mismatch/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── resource-informer/ │ │ │ ├── ResourcesAreListedWhenReadyAsyncIsComplete/ │ │ │ │ ├── resources.yaml │ │ │ │ └── shouldbe.yaml │ │ │ └── ResourcesWithApiGroupAreListed/ │ │ │ ├── resources.yaml │ │ │ └── shouldbe.yaml │ │ ├── route-headers/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── route-metadata/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── route-methods/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ ├── route-order/ │ │ │ ├── clusters.json │ │ │ ├── ingress.yaml │ │ │ └── routes.json │ │ └── route-queryparameters/ │ │ ├── clusters.json │ │ ├── ingress.yaml │ │ └── routes.json │ ├── ReverseProxy.FunctionalTests/ │ │ ├── Common/ │ │ │ ├── Helpers.cs │ │ │ ├── HttpSysTestEnvironment.cs │ │ │ ├── TestEnvironment.cs │ │ │ └── TestUrlHelper.cs │ │ ├── DistributedTracingTests.cs │ │ ├── Expect100ContinueTests.cs │ │ ├── HeaderTests.cs │ │ ├── HttpForwarderCancellationTests.cs │ │ ├── HttpProxyCookieTests.cs │ │ ├── HttpSysDelegationTests.cs │ │ ├── PassiveHealthCheckTests.cs │ │ ├── TelemetryConsumptionTests.cs │ │ ├── TelemetryEnumTests.cs │ │ ├── WebSocketTests.cs │ │ ├── WebSocketsTelemetryTests.cs │ │ └── Yarp.ReverseProxy.FunctionalTests.csproj │ ├── ReverseProxy.Tests/ │ │ ├── Common/ │ │ │ ├── EventAssertExtensions.cs │ │ │ ├── HttpContentExtensions.cs │ │ │ ├── MockHttpHandler.cs │ │ │ ├── TaskExtensions.cs │ │ │ ├── TestEventListener.cs │ │ │ ├── TestResources.cs │ │ │ └── TestTrailersFeature.cs │ │ ├── Configuration/ │ │ │ ├── ActiveHealthCheckConfigTests.cs │ │ │ ├── ClusterConfigTests.cs │ │ │ ├── ConfigProvider/ │ │ │ │ ├── ConfigurationConfigProviderTests.cs │ │ │ │ └── ConfigurationReadingExtensionsTests.cs │ │ │ ├── ConfigValidatorTests.cs │ │ │ ├── DestinationConfigTests.cs │ │ │ ├── HealthCheckConfigTests.cs │ │ │ ├── HttpClientConfigTests.cs │ │ │ ├── PassiveHealthCheckConfigTests.cs │ │ │ ├── RouteConfigTests.cs │ │ │ ├── RouteHeaderTests.cs │ │ │ ├── RouteMatchTests.cs │ │ │ ├── RouteQueryParameterTests.cs │ │ │ ├── SessionAffinityConfigTests.cs │ │ │ ├── YarpOutputCachePolicyProviderTests.cs │ │ │ └── YarpRateLimiterPolicyProviderTests.cs │ │ ├── Delegation/ │ │ │ ├── HttpSysDelegatorMiddlewareTests.cs │ │ │ └── HttpSysDelegatorTests.cs │ │ ├── Forwarder/ │ │ │ ├── ForwarderHttpClientFactoryTests.cs │ │ │ ├── ForwarderMiddlewareTests.cs │ │ │ ├── HttpForwarderTests.cs │ │ │ ├── HttpTransformerTests.cs │ │ │ ├── RequestUtilitiesTests.cs │ │ │ ├── ReverseProxyServiceCollectionTests.cs │ │ │ ├── StreamCopierTests.cs │ │ │ └── StreamCopyHttpContentTests.cs │ │ ├── Health/ │ │ │ ├── ActiveHealthCheckMonitorTests.cs │ │ │ ├── ClusterDestinationsUpdaterTests.cs │ │ │ ├── ConsecutiveFailuresHealthPolicyTests.cs │ │ │ ├── DefaultProbingRequestFactoryTests.cs │ │ │ ├── DestinationHealthUpdaterTests.cs │ │ │ ├── EntityActionSchedulerTests.cs │ │ │ ├── HealthyAndUnknownDestinationsPolicyTests.cs │ │ │ ├── HealthyOrPanicDestinationsPolicyTests.cs │ │ │ ├── PassiveHealthCheckMiddlewareTests.cs │ │ │ └── TransportFailureRateHealthPolicyTests.cs │ │ ├── Limits/ │ │ │ └── LimitsMiddlewareTests.cs │ │ ├── LoadBalancing/ │ │ │ ├── LoadBalancerMiddlewareTests.cs │ │ │ └── LoadBalancingPoliciesTests.cs │ │ ├── Management/ │ │ │ └── ProxyConfigManagerTests.cs │ │ ├── Model/ │ │ │ ├── DestinationStateTests.cs │ │ │ ├── HttpContextFeaturesExtensions.cs │ │ │ └── ProxyPipelineInitializerMiddlewareTests.cs │ │ ├── Routing/ │ │ │ ├── HeaderMatcherPolicyTests.cs │ │ │ ├── ProxyEndpointFactoryTests.cs │ │ │ ├── QueryMatcherPolicyTests.cs │ │ │ ├── ReverseProxyConventionBuilderTests.cs │ │ │ └── RoutingTests.cs │ │ ├── SessionAffinity/ │ │ │ ├── AffinitizeTransformProviderTests.cs │ │ │ ├── AffinitizeTransformTests.cs │ │ │ ├── AffinityTestHelper.cs │ │ │ ├── ArrCookieSessionAffinityPolicyTests.cs │ │ │ ├── BaseSessionAffinityPolicyTests.cs │ │ │ ├── CookieSessionAffinityPolicyTests.cs │ │ │ ├── CustomHeaderSessionAffinityPolicyTests.cs │ │ │ ├── HashCookieSessionAffinityPolicyTests.cs │ │ │ ├── RedistributeAffinityFailurePolicyTests.cs │ │ │ ├── Return503ErrorAffinityFailurePolicyTests.cs │ │ │ └── SessionAffinityMiddlewareTests.cs │ │ ├── Transforms/ │ │ │ ├── Builder/ │ │ │ │ └── TransformBuilderTests.cs │ │ │ ├── DestinationPrefixTransformTests.cs │ │ │ ├── ForwardedTransformExtensionsTests.cs │ │ │ ├── HttpMethodChangeTransformTests.cs │ │ │ ├── HttpMethodTransformExtensionsTests.cs │ │ │ ├── PathRouteValuesTransformTests.cs │ │ │ ├── PathStringTransformTests.cs │ │ │ ├── PathTransformExtensionsTests.cs │ │ │ ├── QueryParameterFromRouteTransformTests.cs │ │ │ ├── QueryParameterFromStaticTransformTests.cs │ │ │ ├── QueryParameterRemoveTransformTests.cs │ │ │ ├── QueryTransformContextTests.cs │ │ │ ├── QueryTransformExtensionsTests.cs │ │ │ ├── RequestHeaderClientCertTransformTests.cs │ │ │ ├── RequestHeaderForwardedTransformTests.cs │ │ │ ├── RequestHeaderRemoveTransformTests.cs │ │ │ ├── RequestHeaderRouteValueTransformTests.cs │ │ │ ├── RequestHeaderValueTransformTests.cs │ │ │ ├── RequestHeaderXForwardedForTransformTests.cs │ │ │ ├── RequestHeaderXForwardedHostTransformTests.cs │ │ │ ├── RequestHeaderXForwardedPrefixTransformTests.cs │ │ │ ├── RequestHeaderXForwardedProtoTransformTests.cs │ │ │ ├── RequestHeadersAllowedTransformTests.cs │ │ │ ├── RequestHeadersTransformExtensionsTests.cs │ │ │ ├── RequestTransformTests.cs │ │ │ ├── ResponseHeaderRemoveTransformTests.cs │ │ │ ├── ResponseHeaderValueTransformTests.cs │ │ │ ├── ResponseHeadersAllowedTransformTests.cs │ │ │ ├── ResponseTrailerRemoveTransformTests.cs │ │ │ ├── ResponseTrailerValueTransformTests.cs │ │ │ ├── ResponseTrailersAllowedTransformTests.cs │ │ │ ├── ResponseTrailersTransformTests.cs │ │ │ ├── ResponseTransformExtensionsTests.cs │ │ │ ├── ResponseTransformTests.cs │ │ │ ├── TransformBuilderContextFuncExtensionsTests.cs │ │ │ └── TransformExtensionsTestsBase.cs │ │ ├── Utilities/ │ │ │ ├── ActivityCancellationTokenSourceTests.cs │ │ │ ├── AtomicCounterTests.cs │ │ │ ├── CaseInsensitiveEqualHelperTests.cs │ │ │ ├── RandomFactoryTests.cs │ │ │ └── TlsFrameHelperTests.cs │ │ ├── WebSocketsTelemetry/ │ │ │ └── WebSocketsParserTests.cs │ │ ├── Yarp.ReverseProxy.Tests.csproj │ │ └── validSelfSignedClientEkuCertificate.cer │ ├── TestCertificates/ │ │ └── testCert.pfx │ └── Tests.Common/ │ ├── TestAutoMockBase.cs │ ├── TestLogger.cs │ ├── TestLoggerProvider.cs │ ├── TestRandom.cs │ ├── TestRandomFactory.cs │ ├── TestTimeProvider.cs │ ├── XunitLoggerFactoryExtensions.cs │ ├── XunitLoggerProvider.cs │ └── Yarp.Tests.Common.csproj ├── test.cmd ├── test.sh └── testassets/ ├── BenchmarkApp/ │ ├── BenchmarkApp.csproj │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── README.md │ ├── appsettings.json │ └── testCert.pfx ├── Directory.Build.props ├── ReverseProxy.Code/ │ ├── Controllers/ │ │ └── HealthController.cs │ ├── ForwarderMetricsConsumer.cs │ ├── ForwarderTelemetryConsumer.cs │ ├── MyTransformFactory.cs │ ├── MyTransformProvider.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── ReverseProxy.Code.csproj │ ├── TokenService.cs │ ├── appsettings.Development.json │ └── appsettings.json ├── ReverseProxy.Config/ │ ├── Controllers/ │ │ └── HealthController.cs │ ├── CustomConfigFilter.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── ReverseProxy.Config.csproj │ ├── appsettings.Development.json │ └── appsettings.json ├── ReverseProxy.Direct/ │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── ReverseProxy.Direct.csproj │ ├── TlsFilter.cs │ ├── appsettings.Development.json │ └── appsettings.json ├── TestClient/ │ ├── CommandLineArgs.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── Scenarios/ │ │ ├── Http1Scenario.cs │ │ ├── Http2PostExpectContinueScenario.cs │ │ ├── Http2Scenario.cs │ │ ├── IScenario.cs │ │ ├── RawUpgradeScenario.cs │ │ ├── SessionAffinityScenario.cs │ │ └── WebSocketsScenario.cs │ └── TestClient.csproj └── TestServer/ ├── AssemblyInfo.cs ├── Controllers/ │ ├── HealthController.cs │ ├── HttpController.cs │ ├── UpgradeController.cs │ └── WebSocketsController.cs ├── Program.cs ├── Properties/ │ └── launchSettings.json ├── TestServer.csproj ├── appsettings.Development.json └── appsettings.json