ServiceCollectionExtensions.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using FastGithub.HttpServer.Certs;
  2. using FastGithub.HttpServer.Certs.CaCertInstallers;
  3. using FastGithub.HttpServer.HttpMiddlewares;
  4. using FastGithub.HttpServer.TcpMiddlewares;
  5. using FastGithub.HttpServer.TlsMiddlewares;
  6. using Microsoft.Extensions.DependencyInjection;
  7. namespace FastGithub
  8. {
  9. /// <summary>
  10. /// http反向代理的服务注册扩展
  11. /// </summary>
  12. public static class ServiceCollectionExtensions
  13. {
  14. /// <summary>
  15. /// 添加http反向代理
  16. /// </summary>
  17. /// <param name="services"></param>
  18. /// <returns></returns>
  19. public static IServiceCollection AddReverseProxy(this IServiceCollection services)
  20. {
  21. return services
  22. .AddMemoryCache()
  23. .AddHttpForwarder()
  24. .AddSingleton<CertService>()
  25. .AddSingleton<ICaCertInstaller, CaCertInstallerOfMacOS>()
  26. .AddSingleton<ICaCertInstaller, CaCertInstallerOfWindows>()
  27. .AddSingleton<ICaCertInstaller, CaCertInstallerOfLinuxRedHat>()
  28. .AddSingleton<ICaCertInstaller, CaCertInstallerOfLinuxDebian>()
  29. // tcp
  30. .AddSingleton<HttpProxyMiddleware>()
  31. .AddSingleton<TunnelMiddleware>()
  32. // tls
  33. .AddSingleton<TlsInvadeMiddleware>()
  34. .AddSingleton<TlsRestoreMiddleware>()
  35. // http
  36. .AddSingleton<HttpProxyPacMiddleware>()
  37. .AddSingleton<RequestLoggingMiddleware>()
  38. .AddSingleton<HttpReverseProxyMiddleware>();
  39. }
  40. }
  41. }