Openwrt(LUCI相關(guān)記錄1)

Openwrt Luci界面開(kāi)發(fā)

總結(jié):

make menuconfig 選擇的的luci:
Luci--- >Collections--->luci

源碼位置::

\192.168.1.223\share\openwrt\openwrt_1\feeds\luci\modules\luci-mod-admin-full\luasrc


image.png

Openwrt已經(jīng)提供了一個(gè)很強(qiáng)大的web管理界面Luci李请,可以方便的管理路由器砚尽。我們?cè)陂_(kāi)發(fā)智能路由器時(shí)蚀浆,一般就需要在OpenWrt的WEB界面增加內(nèi)容。

1.Luci簡(jiǎn)介

LuCI是OpenWrt上的Web管理界面转唉,LuCI采用了MVC三層架構(gòu),使用Lua腳本開(kāi)發(fā),所以開(kāi)發(fā)LuCI的配置界面不需要編輯任何的Html代碼控妻,除非想自己?jiǎn)为?dú)去創(chuàng)建網(wǎng)頁(yè)(View層),否則我們基本上只需要修改Model層就可以了揭绑。

2. 添加選項(xiàng)Test

接下來(lái)介紹如何在“System”添加Test選項(xiàng)卡弓候。

在文件系統(tǒng)目錄,源碼路徑(\feeds\luci\modules\luci-mod-admin-full\luasrc\view\admin_mqtt)
“/usr/lib/lua/luci/controller/admin”下創(chuàng)建test.lua文件他匪,文件內(nèi)容如下:

module("luci.controller.admin.test", package.seeall)  
  
function index()  
    entry({"admin", "test"}, alias("admin", "test", "test"), _("Test1"), 30).index = true  
    entry({"admin", "test", "control"}, cbi("admin_test/control"), _("ControlTest"), 1)  
end  

/etc/init.d/uhttpd restart 重啟http服務(wù)之后菇存,刷新界面之后(有時(shí)候因?yàn)榫彺妫缑鏇](méi)有及時(shí)變化邦蜜,rm -rf /tmp/luci-* 刪除緩存就可以了)依鸥,界面變成


image.png

test.lua中 entry表示添加一個(gè)新的模塊入口,entry的定義如下悼沈,其中后兩項(xiàng)都是可以為空:

entry(path, target, title=nil, order=nil)  

“path”是訪問(wèn)的路徑贱迟,路徑是按字符串?dāng)?shù)組給定的,比如路徑按如下方式寫(xiě)“{"admin", "test", "control"}”絮供,那么就可以在瀏覽器里訪問(wèn)“http://192.168.1.1/cgi-bin/luci/admin/test/control”來(lái)訪問(wèn)這個(gè)腳本衣吠。其中的“admin”表示為管理員添加腳本,“test”即為一級(jí)菜單名壤靶,“control”為菜單項(xiàng)名缚俏。系統(tǒng)會(huì)自動(dòng)在對(duì)應(yīng)的菜單中生成菜單項(xiàng)。比如想在“System”菜單下創(chuàng)建一個(gè)菜單項(xiàng)萍肆,那么一級(jí)菜單名可以寫(xiě)為“system”袍榆。
“target”為調(diào)用目標(biāo),調(diào)用目標(biāo)分為三種塘揣,分別是執(zhí)行指定方法(Action)包雀、訪問(wèn)指定頁(yè)面(Views)以及調(diào)用CBI Module。
第一種可以直接調(diào)用指定的函數(shù)亲铡,比如點(diǎn)擊菜單項(xiàng)就直接重啟路由器等等才写,比如寫(xiě)為“call("function_name")”葡兑,然后在該lua文件下編寫(xiě)名為function_name的函數(shù)就可以調(diào)用了。
第二種可以訪問(wèn)指定的頁(yè)面赞草,比如寫(xiě)為“template("myapp/mymodule")”就可/usr/lib/lua/luci/model/cbi以調(diào)用/usr/lib/lua/luci/view/myapp/mymodule.htm文件了讹堤。
第三種主要應(yīng)用在配置界面,比如寫(xiě)為“cbi("myapp/mymodule")”就可以調(diào)用/usr/lib/lua/luci/model/cbi/myapp/mymodule.lua文件了厨疙。
title和order是針對(duì)管理員菜單的洲守,其中的title即是顯示在網(wǎng)頁(yè)上的內(nèi)容。這里我們創(chuàng)建“/usr/lib/lua/luci/controller/admin/test.lua”文件沾凄,定義我們的入口為“test”梗醇。

3添加cbi腳本

由test.lua中cbi指示的目錄,在“/usr/lib/lua/luci/model/cbi/admin_test”目錄下有control.lua腳本撒蟀。

1.在/usr/lib/lua/luci/model/cbi在新建admin_test目錄

2.在admin_test中新建control.lua文件叙谨,添加內(nèi)容

require("luci.sys")  
require("luci.sys.zoneinfo")  
require("luci.tools.webadmin")  
require("luci.fs")  
require("luci.config")  
  
local m, s, o  
  
m = Map("test", translate("Test"), translate("This is simple test."))  
m:chain("luci")  
  
s = m:section(TypedSection, "controlboard", translate("Control Board"))  
s.anonymous = true  
s.addremove = false  
  
  
s:tab("led", translate("Control LED"))  
s:tab("beep", translate("Control Beep"))  
--s:tab("adc", translate("Control Adc"))  
  
--  
-- LED  
--  
o = s:taboption("led", ListValue, "lednum", translate("LED NUM:"))  
o.default = 0  
o.datatype = "uinteger"  
o:value(0, translate("LED0"))  
o:value(1, translate("LED1"))  
o:value(2, translate("LED2"))  
  
o = s:taboption("led", ListValue, "ledstatus", translate("LED STATUS:"))  
o.default = 1    --off status  
o.datatype = "uinteger"  
o:value(0, translate("LED ON"))  
o:value(1, translate("LED OFF"))  
  
  
--  
-- BEEP  
--  
o = s:taboption("beep", ListValue, "beepstatus", translate("BEEP STATUS:"))  
o.default = 1    --off status  
o.datatype = "uinteger"  
o:value(0, translate("ON"))  
o:value(1, translate("OFF"))  
  
o = s:taboption("beep", Value, "beepfreq", translate("BEEP FREQ:"))  
o.datatype = "uinteger"  

該腳本表示讀取/etc/config下的test文件,因此我們需要在/etc/config/中添加test文件保屯。并在文件中添加:config controlboard

重啟uhttpd服務(wù)后手负,刷新后界面為:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市姑尺,隨后出現(xiàn)的幾起案子竟终,更是在濱河造成了極大的恐慌,老刑警劉巖股缸,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衡楞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡敦姻,警方通過(guò)查閱死者的電腦和手機(jī)瘾境,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)镰惦,“玉大人迷守,你說(shuō)我怎么就攤上這事⊥耄” “怎么了兑凿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茵瘾。 經(jīng)常有香客問(wèn)我礼华,道長(zhǎng),這世上最難降的妖魔是什么拗秘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任圣絮,我火速辦了婚禮,結(jié)果婚禮上雕旨,老公的妹妹穿的比我還像新娘扮匠。我一直安慰自己捧请,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布棒搜。 她就那樣靜靜地躺著疹蛉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪力麸。 梳的紋絲不亂的頭發(fā)上可款,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音末盔,去河邊找鬼筑舅。 笑死座慰,一個(gè)胖子當(dāng)著我的面吹牛陨舱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播版仔,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼游盲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛮粮?” 一聲冷哼從身側(cè)響起益缎,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎然想,沒(méi)想到半個(gè)月后莺奔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡变泄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年令哟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妨蛹。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屏富,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛙卤,到底是詐尸還是另有隱情狠半,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布神年,位于F島的核電站,受9級(jí)特大地震影響行嗤,放射性物質(zhì)發(fā)生泄漏已日。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一昂验、第九天 我趴在偏房一處隱蔽的房頂上張望捂敌。 院中可真熱鬧艾扮,春花似錦、人聲如沸占婉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逆济。三九已至酌予,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奖慌,已是汗流浹背抛虫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留简僧,地道東北人建椰。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岛马,于是被迫代替她去往敵國(guó)和親棉姐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • www/cbi-bin/luci run方法的主要任務(wù)就是在安全的環(huán)境中打開(kāi)開(kāi)始頁(yè)面(登錄頁(yè)面)啦逆,在run中伞矩,最主...
    hades2013閱讀 3,358評(píng)論 0 1
  • 摘要:Lua作為一門(mén)方便嵌入(其它應(yīng)用程序)并可擴(kuò)展的輕量級(jí)腳本語(yǔ)言來(lái)設(shè)計(jì)的,因此她一直遵從著簡(jiǎn)單夏志、小巧乃坤、可移植、...
    Masukio閱讀 65,491評(píng)論 5 41
  • 在uHTTPd上安裝LuCI 這是安裝Web用戶界面LuCI的要點(diǎn)沟蔑。運(yùn)行"opkg update && opkg ...
    3c937c88e6c0閱讀 12,886評(píng)論 0 2
  • 5點(diǎn)的鬧鐘響了,身體有點(diǎn)兒疲憊就這樣順勢(shì)側(cè)臥開(kāi)始冥想,昨日種種看著它流過(guò),清晰透徹起來(lái).那個(gè)一環(huán)扣一環(huán)的線...
    lanfang閱讀 281評(píng)論 0 1
  • 大學(xué)剛畢業(yè)湿诊,入職1個(gè)月,談下來(lái)公司第一個(gè)合作項(xiàng)目溉贿。 與臺(tái)灣英語(yǔ)教父賴(lài)世雄聯(lián)合打造月銷(xiāo)售2000+枫吧,收益12W的線上...
    李雷雷雷閱讀 216評(píng)論 0 0