簡介
前幾天發表了《基於Yarp實現內網http穿透》,當時剛剛從原理圖變成了粗糙的程式碼實現,專案連名字都還沒有,也沒有開放原始碼。在之後幾天的時間,我不斷地重構,朝著“可整合、可二次開發”的要求來完善專案,並專案取名為HttpMouse,象徵著穿越能力很強的老鼠,同時把程式碼開源在Github/HttpMouse上。
原理
開發庫
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>>的一個擴充套件庫 |