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

花生殼phtunnel嵌入Openwrthtml

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

phtunnel組件製做下載github

下載本身的編譯平臺的二進制phtunnel文件是第一步要作的,咱們能夠到oray的官方github網站進行下載,根據本身的型號進行下載,好比個人路由器是基於MIPSelc庫使用的是uclibc,那麼我能夠進入xxxxx,進入xxxxxxxx,並下載mipsel-uclibc-phtunnel文件。web

規劃目錄結構接網絡

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

首先核心的應用程序phtunnel咱們能夠放在/usr/bin目錄下,由於它是一個非管理員應用,因此通常比放在/usr/sbin目錄下要更科學一些。app

uci配置文件:因爲openwrtuci是經常使用的配置解決方案(不理解uci可參閱其餘文檔),因此須要一個uci配置文件,該文件一般放在/etc/config目錄下,同時咱們取名一樣爲phtunnel,這樣就可使用uci set phtunnel.xx.xx等操做phtunnel的配置了。函數

根據phtunnel列出的參數,uci的配置以下:網站

啓動腳本:一般應用都是做爲守護腳本運行,因此phtunnel也會製做成守護程序,自動運行,因此須要在/etc/init.d中創建phtunnel的啓動腳本,名稱也叫phtunnellua

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了。

相關文章
相關標籤/搜索