轉自:http://blog.csdn.net/user_920/article/details/8504979
以前都沒聽過openwrt和luci,只接觸過簡單的php語言。由於工作原因,要修改下luci的界面,竟然用了我2天的時間才簡單的了解了luci的用法。這里簡單的和大家分享下。(就接觸2天,本人又是菜鳥級別,高手直接略過吧)大家發現有什么錯誤就和我說下大家共同學習。我主要是想修改下open后台界面網頁的內容。
具體怎么安裝已經有人介紹過來了,我就不詳細說了。下面說配置好之后,修改UI的做法
在瀏覽器中輸入:http://192.168.1.1/ 會自動跳到http://192.168.1.1/cgi-bin/luci 登陸默認root 密碼是空
默認的幾個一級菜單都是在modules\admin-full\luasrc\controller\admin\ 這個目錄下
這個就類似於php的根目錄了。/etc/config/這個目錄下面的文件,個人觀點是可以把它當做是php中的數據庫連看待,這樣反而更方便理解。
實際上luci界面提供的已經很全了,我們並沒有多少必要要新建立頁面,我們大多就是在已有的界面上添加一些內容。比如我們公司現在需要添加wifi的isolate和maxassoc這兩項屬性。就讓我找了半天才找到
首先要找到network-wifi對應的文件,
在找點擊edit后頁面對應的文件。
network.lua這個文件里面就定義了network下面有哪些二級目錄。
比如我要改wifi,我就看到有
if has_wifi and has_wifi.size > 0 then
page = entry({“admin”, “network”, “wireless”}, arcombine(template(“admin_network/wifi_overview”), cbi(“admin_network/wifi”)), _(“Wifi”), 15)
page.leaf = true
page.subindex = true
這里面有cbi(“admin_network/wifi”)這條語句。知道的人就知道,不知道也沒關系,想知道可以自己查下。
這時我們到目錄\modules\admin-full\luasrc\model\cbi\admin_network\下面可以發現一個wifi.lua的文件,cbi的語句就是指向的這個文件。我們打開wifi.lua后,在———————- Interface ———————–這個下面地方添加
isolate = s:taboption(“advanced”, Flag, “isolate”, translate(“Separate Clients”),translate(“Prevents client-to-client communication”))
maxassoc = s:taboption(“advanced”, Value, “maxassoc”, translate(“Connection Limi”),translate(“Specifies the maximum number of clients to connect.”))
這樣兩條語句就可以了。進入network-wifi edit看下我們修改的效果
我們進入network-wifi之后選擇一個無線網絡點擊edit后進入頁面
在Interface Configuration下面的Advanced Settings下面可以進行修改之后點擊Save & Apply
修改這兩項是保存在什么地方呢?剛剛我說了,/etc/config/目錄下相當於數據庫的功能。
這時我們vi /etc/config/wireless可以查看到我們剛剛修改內容。
有的人想要添加新的頁面和功能,可以看下下面的內容。
下面內容來源於chaochaoblog
要完成一個新模塊並用到里面需要兩個東西,
第一個我們先找到usr/lib/lua/LuCI/controller在里面建立一個文件夾,也就是我們的模塊名稱,就叫smustar吧
在smustar下面再寫我們模塊的主文件就叫smumodule.lua吧
參考官網,我們的模塊寫法應該是這樣子的
module(“LuCI.controller.smustar.smumodule”, package.seeall)
function index()
entry({“admin”, “network”, “802.1x“}, cbi(“smustar-smumodule/netifaces”), “Network interfaces”, 30).dependent=false
end
第一句話是聲明一下這個模塊了,沒什么可說的。
第二句話就是我們模塊的主函數,其中呢要告訴它我們的入口,與其說入口,不如說就是告訴它是要admin登錄才能用的,是在network這個菜單下,名字呢,叫做802.1x。模塊執行的程序呢在smustar-smumodule/netifaces這里。
好了各位又郁悶了smustar-smumodule/netifaces是什么東西,這是我們要建立的另外一個文件,上面不是說要兩個么
我們找到路徑/usr/lib/lua/LuCI/module
在下面建立文件夾smustar-smmodule建立文件netfaces.lua
好了接下來就是要在netfaces.lua寫我們的程序了,參考官網所說的這個什么LuCI最酷的地方,也就是修改config文件
不要說你不懂什么是config文件了,最簡單的比如network。
我們在/etc/config下面建立一個配置文件叫smuset吧
那這就是一個config文件的寫法
config ‘interface’ ‘smustar’
option ‘user’ ‘youruser’
option ‘pass’ ‘yourpass’
ok這個config文件就是這樣子了接下來寫netfaces.lua
m = Map(“smuset”, “smustar”) — We want to edit the uci config file /etc/config/smustar 這里是我們要配置的文件了,默認的路徑它已經能夠區別的,不用管了
s = m:section(TypedSection, “interface”, “smustar”) — Especially the “interface”-sections讀出里面的interface區域來
s.addremove = true — Allow the user to create and remove the interfaces
s:option(Value, “user”, “youruser”)這個能就是一個input即一個輸入框了讀取的是smuset中的user項。youruser是提示語羅
key=s:option(Value, “pass”, “your password”)
key.password=true; 設置為星號的密碼輸入框
return m — Returns the map
好了文件就完成了,之后我們進入LuCI配置界面
在network下可以看到了802.1x選項
進入后有賬號和密碼輸入框 改一下之后
save&apply一下,發現密碼被修改了。我們的802.1x配置界面就做好了!
歡迎大家留言指教
From: http://www.nrud.com/software-technology/modified-openwrt-web-management-luci-interface.html