国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

openwrt updateDns.lua代碼分析

作者:z494627 | 更新時間:2016-05-02 | 瀏覽量:4383

背景:

  貝殼物聯(lián)提供Dns網(wǎng)關(guān)功能,讓無固定IP地址的客戶端記錄自己的IP地址,便于通過web和手機(jī)app訪問.之前的實現(xiàn)是updateDns.sh使用sh腳本實現(xiàn).正好學(xué)習(xí)lua,并且參照sysLoad.lua的代碼,直接讀取wan口的IP地址進(jìn)行更新.

之前代碼已經(jīng)貼過了,貝殼老大說我只貼代碼沒有講解,今天就給大家講解一下核心代碼部分.


預(yù)備知識:

 1.ubus:為了在OpenWrt中提供守護(hù)進(jìn)程和應(yīng)用程序間的通訊,開發(fā)了ubus項目工程。它包含了守護(hù)進(jìn)程、庫以及一些額外的幫助程序。openwrt中l(wèi)uci實現(xiàn)了對應(yīng)的類luci.util.ubus,可以通過lua調(diào)用。

2.ubus命令:ubus -v list 列出所有的接口,其中包括lan(局域網(wǎng)口)和wan(廣域網(wǎng),就是你的互聯(lián)網(wǎng)接口),我的wan口叫network.interface.wan

3.ubus命令查詢wan口IP: ubus call network.interface.wan status.這里會顯示wan口的所有狀態(tài),因為我的openwrt版本支持IPv6,所以我要找ipv4-address就是我需要找到的IP,里面的address就是外網(wǎng)IP地址.


4.通過ubus獲取IP地址的代碼

--獲取到wan口信息
local address=luci.util.ubus("network.interface.wan","status") or {}
--解析出ipv4的地址(ipv4-address是一個lua table,所以取第一個值,其中address就是IP地址
myipv4=address["ipv4-address"][1]["address"]

5.更新Dns網(wǎng)關(guān)記錄,這個是照抄sh腳本的,其中DNSIS和DNSPWD是在貝殼注冊的ID和password

local htpres=http.request("http://m.placeboworld.cn/Dns/updateDns?id="..DNSID.."\&ip="..myipv4.."\&pw="..DNSPWD.."\&pt="..DNSPort)



評論:共2條

貝殼物聯(lián) 評論于:2016-05-02 16:17:04
多謝分享!!
WECAN 評論于:2017-08-27 16:18:00
感謝樓主的分享啊!
返回頂部