基於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>>的一個擴展庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM