PHTunnel集成Openwrt,不到一小時?安排上!

来源:https://www.cnblogs.com/momingqimiao/archive/2020/06/19/13143880.html
-Advertisement-
Play Games

花生殼phtunnel嵌入Openwrt 詳細介紹如何將phtunnel封裝成一個openwrt標準組件,並編譯到自己的openwrt固件中。 phtunnel組件製作下載 下載自己的編譯平臺的二進位phtunnel文件是第一步要做的,我們可以到oray的官方github網站進行下載,根據自己的型號 ...


花生殼phtunnel嵌入Openwrt

詳細介紹如何將phtunnel封裝成一個openwrt標準組件,並編譯到自己的openwrt固件中。

phtunnel組件製作下載

下載自己的編譯平臺的二進位phtunnel文件是第一步要做的,我們可以到oray的官方github網站進行下載,根據自己的型號進行下載,比如我的路由器是基於MIPSelc庫使用的是uclibc,那麼我可以進入xxxxx,進入xxxxxxxx,並下載mipsel-uclibc-phtunnel文件。

規劃目錄結構接

下來的任務是規劃自己的phtunnel組件安裝後,在openwrt系統上是怎樣的目錄結構。

首先核心的應用程式phtunnel我們可以放在/usr/bin目錄下,因為它是一個非管理員應用,所以一般比放在/usr/sbin目錄下要更科學一些。

uci配置文件:由於openwrtuci是常用的配置解決方案(不理解uci可參閱其他文檔),所以需要一個uci配置文件,該文件通常放在/etc/config目錄下,同時我們取名同樣為phtunnel,這樣就可以使用uci set phtunnel.xx.xx等操作phtunnel的配置了。

根據phtunnel列出的參數,uci的配置如下:

啟動腳本:通常應用都是作為守護腳本運行,所以phtunnel也會製作成守護程式,自動運行,所以需要在/etc/init.d中建立phtunnel的啟動腳本,名稱也叫phtunnel

hotplug.d機制:為了及時響應網路狀態,快速重啟phtunnel,可使用hotplug機制。這樣在wan口斷開重新連上網的時候,能馬上重啟phtunnel。在/etc/hotplug.d/iface下需要創建一個xx-phtunnel的腳本,其中xx代表腳本執行順序,可以隨便填。

這樣,安裝後的目錄結構是如下圖

編寫phtunnel組件Makefile

根據目錄結構規劃,現在來編寫組件,由於openwrt的組件是用makefile文件編寫。

makefile及規劃的files目錄統一放在phtunnel目錄內,然後放在openwrtpackage/utils目錄中即可(可放在package下的任何位置),再來看一下目錄結構

這時執行make menuconfig後,就能看到phtunnel組件了

選中該組件後保存,執行make,就可以編譯出帶phtunnel的固件了和對應的phtunnelipk組件包了。

啟動腳本

用於啟動與停止phtunnel,啟動後讀取uci配置,變成phtunnel的啟動參數,然後啟動phtunnel程式,代碼如下:

這裡用到了openwrtPROCD機制,這樣可以在phtunnel意外崩潰的情況下,自動重啟。

hotplug腳本

用於在wan介面連接有效時,重新開啟phtunnel,加速重連速度。

phtunnel-luci-app組件製作功能

phtunnel運行後,需要進行掃碼登錄,管理,解綁等操作,這些都是需要與客戶的交互操作,openwrt提供的luci是實現交互的最佳選擇,也是最正式的方式,下麵來製作基於luciphtunnel組件。

核心模塊

luci的代碼區域在/usr/lib/lua/luci中,所以所有交互的web代碼都放在這個下麵,首先是核心的基礎庫phtunnel.lua,它將提供所有核心函數,如獲取二維碼,登錄信息和解綁操等核心功能。

所有函數的核心都是調用wget來訪問rpc服務和官方提供的web服務。

LUCI頁面

完成核心函數庫後,接下來就是根據luci的架構進行開發。首先是規劃菜單與菜單項,如圖:

完成這樣的菜單,需要在controller目錄下實現,如圖:

其中setup頁面用於設置基本參數,Status頁面用於掃碼與解綁,Log用於顯示日誌。

Setup頁面

設置頁面是一個純UCI頁面,我們可以使用luci提供的cbi模塊開發。

顯現的頁面如圖

Status頁面

該頁面用於顯示二維碼,管理界面鏈接及解綁。相關代碼在view/oray/phtunnel_status.htm, view/oray/phtunnel_inner_status.htm, view/oray/phtunnel_log_off.htm

phtunnel_status.htm : 用於顯示當前狀態。

phtunnel_inner_status.html : 用於後臺實時檢測綁定狀態,當用戶使用手機刷二維碼綁定後,phtunnel_status.htm頁面動態顯示綁定帳號。

phtunnel_log_off : 用於解綁帳號

Log頁面

用於顯示日誌,該頁面相對簡單(view/oray/phtunnel_log.htm)

通過uci獲取日誌路徑,並使用cat命令將文件內容輸出即可。

製作組件的makefile

與製作phtunnel組件一樣,將所有文件組織成目錄樹,並加入Makefile

Makefile

最後同樣將組件複製到openwrt/package/utils/下,這樣我們可以在配置界面中看到phtunnel-luci-app組件

選擇以上兩個組件,充分編譯後,即可在本地的luci界面上使用phtunnel了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 本文介紹了在ASP.NET MVC中使用ECharts的詳細過程,希望對使用該方法的朋友有所幫助。 相關Echarts的js文件包括:echarts.min.js、echarts-wordcloud.min.js、china.js、jquery-3.4.1.min.js 相關Echarts的j ...
  • 什麼是JWT Json web token (JWT), 是為了在網路應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登錄(SSO)場景。JWT的聲明一般被用來在身份提供者和服務提供者間傳遞被認證的用戶身份信息, ...
  • 本文整理記錄了 .NET Framework、.NET Core 和 .NET 各個版本的產品支持周期和操作系統相容性。 早於 .NET Framework 2.0 和 .NET Core 2.1 的 .NET 版本以及 .NET Core 2.2、.NET Core 3.0 已經停止了任何形式的... ...
  • Spire.Cloud.SDK for .NET提供了介面PdfSecurityApi可用於加密、解密PDF文檔。本文將通過C#代碼演示具體加密及解密方法。 使用工具: Spire.Cloud.SDK for .NET Visual Studio 必要步驟: 步驟一:dll文件獲取及導入。在程式中通 ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • 部署需要用到的工具: 1、xshell用來連結服務器並操作linux服務器,mac用戶可以選擇final shell代替 2、當然是服務器了 安裝步驟:(以下所有操作都通過linux命令完成) 1、mkdir /usr/local/nginx 命令在usr/local目錄創建nginx目錄,ngin ...
  • 用docker-machine創建虛擬主機來對節點主機管理時,我們給定虛擬主機的名稱docker-machine會把該名稱當作主機名,把節點主機的主機名更改為我們指定的名稱;從上面的信息可以看到docker-node01這台主機上有nginx鏡像和n1容器;這說明我們剛纔的操作都是發送給docke... ...
  • 雲:雲和本地是相對的,傳統的應用跑在本地伺服器上,現在流行的應用跑在雲端;IaaS,PaaS,SaaS; 雲原生:Cloud Native, 原生表示土生土長的意思,我們在開始設計應用的時候,就考慮到應用將來是運行在雲環境中的;要充分利用雲資源的優點:彈性和分散式; 雲原生 = 微服務 + DevO ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...