基于Yarp的http内网穿透库HttpMouse

简介

前几天发表了《基于Yarp实现内网http穿透》,当时刚刚从原理图变成了粗糙的代码实现,项目连名字都还没有,也没有开放源代码。在之后几天的时间,我不断地重构,朝着“可集成、可二次开发”的要求来完善项目,并项目取名为HttpMouse,象征着穿越能力很强的老鼠,同时把代码开源在Github/HttpMouse上。

原理

image

开发库

HttpMouse以库的形式提供给开发者,让开发者可以构建符合自身业务的http内网穿透系统。相比提供编译好的二进制可执行文件,库的方式更灵活,对于没有特殊定制要求的项目,samples里的例子就可以直接满足。

HttpMouse

HttpMouse库做为服务端库,基于Yarp开发与扩展,遵循Yarp的设计,将自身设计为asp.netcore的中间件。开发者除了可以使用asp.netcore生态里丰富的其它功能,还可以继续使用Yarp灵活的配置功能。

HttpMouse在Yarp之上实现了以下功能:

  • 可重写的路由提供者;
  • 可重写的集群提供者;
  • 可重写的内网客户端连接认证者;
  • 内网客户端连接管理功能;
  • 反向连接管理功能;
  • 配置反向连接的ForwarderHttpClientFactory;

HttpMouse.Client

HttpMouse.Client库做为客户端库,其作为公网的HttpMouse和局域网的http服务的通讯桥梁,它既是公网HttpMouse的客户端,也是局域网http服务的客户端。

HttpMouse.Client的集成方式可以如下:

  • 独立部署,与局域网http服务不同进程或不同机器
  • 集成部署,在局域网http服务器直接引用HttpMouse.Client

StarMe

开源不容易,尤其是.net生态,以下是博主开源的其它一些项目,欢迎来start

项目 简介
WebApiClient 可扩展的声明式的Http客户端库
Influxdb2.Client Influxdb2读写性能最快的dotnet客户端
FastGithub github定制版的dns服务,解析github最优的ip
PredicateLib 谓词筛选表达式Expression<Func<T, bool>>的一个扩展库
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章