前幾天發表了《基于Yarp實作内網http穿透》,當時剛剛從原理圖變成了粗糙的代碼實作,項目連名字都還沒有,也沒有開放源代碼。在之後幾天的時間,我不斷地重構,朝着“可內建、可二次開發”的要求來完善項目,并項目取名為HttpMouse,象征着穿越能力很強的老鼠,同時把代碼開源在Github/HttpMouse上。
HttpMouse以庫的形式提供給開發者,讓開發者可以建構符合自身業務的http内網穿透系統。相比提供編譯好的二進制可執行檔案,庫的方式更靈活,對于沒有特殊定制要求的項目,samples裡的例子就可以直接滿足。
HttpMouse庫做為服務端庫,基于Yarp開發與擴充,遵循Yarp的設計,将自身設計為asp.netcore的中間件。開發者除了可以使用asp.netcore生态裡豐富的其它功能,還可以繼續使用Yarp靈活的配置功能。
HttpMouse在Yarp之上實作了以下功能:
可重寫的路由提供者;
可重寫的叢集提供者;
可重寫的内網用戶端連接配接認證者;
内網用戶端連接配接管理功能;
反向連接配接管理功能;
配置反向連接配接的ForwarderHttpClientFactory;
HttpMouse.Client庫做為用戶端庫,其作為公網的HttpMouse和區域網路的http服務的通訊橋梁,它既是公網HttpMouse的用戶端,也是區域網路http服務的用戶端。
HttpMouse.Client的內建方式可以如下:
獨立部署,與區域網路http服務不同程序或不同機器
內建部署,在區域網路http伺服器直接引用HttpMouse.Client
開源不容易,尤其是.net生态,以下是部落客開源的其它一些項目,歡迎來start
<col>
項目
簡介
WebApiClient
可擴充的聲明式的Http用戶端庫
Influxdb2.Client
Influxdb2讀寫性能最快的dotnet用戶端
FastGithub
github定制版的dns服務,解析github最優的ip
PredicateLib
謂詞篩選表達式Expression<Func<T, bool>>的一個擴充庫