OpenWRT 添加 WEB 配置界面实战记录

2023-11-19

本篇是记录在 Openwrt 镜像中添加 自定义的 web 配置界面过程,编译进 openwrt 的系统镜像中。

第一步 建立项目文件目录

mkdir -p feeds/luci/applications/luci-app-Gateway
mkdir -p feeds/luci/applications/luci-app-Gateway/config 
mkdir -p feeds/luci/applications/luci-app-Gateway/luci 
mkdir -p feeds/luci/applications/luci-app-Gateway/module

第二步 编写 controller 的 lua 源码

wooya@hi-wooya:~/openwrt-hiwooya/feeds/luci/applications/luci-app-Gateway$ cat luasrc/controller/gateway.lua 
module("luci.controller.gateway", package.seeall) 
function index()
    entry({"admin", "services", "Gateway"}, cbi("gateway/gateway_conf"), translate("Gateway"), nil)
    entry({"admin", "services", "Service"}, template("gateway/helloworld"), _("Online help"), nil)
end

第三步 编写 model 模块内容

wooya@hi-wooya:~/openwrt-hiwooya/feeds/luci/applications/luci-app-Gateway$ cat luasrc/model/cbi/gateway/gateway_conf.lua 
m = Map("gatewayConf", translate("Gateway")) -- cbi_file is the config file in /etc/config

g = m:section(TypedSection, "gateway")  -- info is the section called info in cbi_file

sn = g:option(Value, "sn", translate("Gateway SN"),"BCD code Eg:abcdef202202110001000101");

addr = g:option(Value,"IPv4addr",translate("Server IPv4:Port"),"eg:172.168.10.211:1813");

heart= g:option(Value, "HeartBeat", translate("MQTT HeartBeat"), "d:second");

name = g:option(Value, "UserName", translate("MQTT UserName"));

pwd = g:option(Value, "Password", translate("MQTT Password"));

return m

第四步 编码在线帮助web 网页

wooya@hi-wooya:~/openwrt-hiwooya/feeds/luci/applications/luci-app-Gateway$ cat luasrc/view/gateway/helloworld.htm 
<%+header%>
<h1><%: HelloWorld %></h1>
<%+footer%>

第五步 创建配置参数确实值

wooya@hi-wooya:~/openwrt-hiwooya/feeds/luci/applications/luci-app-Gateway/root/etc/config$ cat gatewayConf
config gateway 'parament'
        option HeartBeat '60'
        option sn 'abcdef202202110001000101'
        option UserName 'admin'
        option Password '123456'
        option IPv4addr '81.70.211.95:1883'

此文件镜像打包后的系统路径: etc/config 网页中显示和配置内容。

第六步 验证文件路径

wooya@hi-wooya:~/openwrt-hiwooya/feeds/luci/applications/luci-app-Gateway$ tree -L 5
.
├── luasrc
│   ├── controller
│   │   └── gateway.lua
│   ├── model
│   │   └── cbi
│   │       └── gateway
│   │           └── gateway_conf.lua
│   └── view
│       └── gateway
│           └── helloworld.htm
├── Makefile
└── root
    └── etc
        └── config
            └── gatewayConf

至此我们把 luci 相关源码准备好,开始编译验证

第七步 编译 luci app 模块

建立软连接并安装 luci_app_gateway 模板

//> ln -s
wooya@hi-wooya:~/openwrt-hiwooya$ cd package/feeds/luci
wooya@hi-wooya:~/openwrt-hiwooya$ package/feeds/luci$ ln -s ../../../feeds/luci/applications/luci-app-Gateway/ .
wooya@hi-wooya:~/openwrt-hiwooya$ package/feeds/luci$ ls luci-app-Gateway
luasrc  Makefile  root
wooya@hi-wooya:~/openwrt-hiwooya$ package/feeds/luci$ ls luci-app-Gateway/luasrc/
controller  model  view
//> install -p luci
wooya@hi-wooya:~/openwrt-hiwooya$ ./scripts/feeds install -a -p luci
Installing all packages from feed luci.
Installing package 'luci-app-Gateway'

# make menuconfig 

Symbol: DEFAULT_luci-app-Gateway [=DEFAULT_luci-app-Gateway]                                                                     
  │ Type  : unknown                                                                                                                  
  │                                                                                                                                 
  │                                                                                                                                 
  │ Symbol: PACKAGE_luci-app-Gateway [=y]                                                                                            
  │ Type  : tristate                                                                                                                 
  │ Prompt: luci-app-Gateway........................... LuCI Support for Gateway-menu                                                 
  │   Location:-> LuCI                                                                                                                      
  │ (1)   -> 3. Applications                                                                                                         
  │   Defined at tmp/.config-package.in:27354                                                                                       
  │   Selects: PACKAGE_librt [=y] && PACKAGE_libc [=y] && PACKAGE_libpthread [=y] && PACKAGE_libssp [=n]   

烧写镜像后,可以在 services 菜单中,看到 Gateway 和 online help 子菜单内容。下一篇将分享如果在 C++ 程序通过 libuci.so 库
方式,获取web设置内容。

如果您对 Luci 相关语法有些陌生,可以移步至 openwrt.org 网站中wiki部分检索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenWRT 添加 WEB 配置界面实战记录 的相关文章

随机推荐

  • 关于手机-电脑-手环使用的记录

    1 手机的设备管理器在哪 设置 安全 更多安全设置 设备管理器 2 手机24小时蓝牙 NFC开启会更加耗电吗 24小时全天开启蓝牙 NFC 结果发现 蓝牙的耗电量还不到0 01 NFC也只有0 02 完全可以忽略不计 3 honor20 p
  • 从数据类型 nvarchar 转换为 numeric 时出错

    请排查是不是你把数字类型的数据往字符类型数据库列中写 比如说 SELECT count 0 FROM sys user u LEFT JOIN sys dept d ON u dept id d dept id WHERE u del fl
  • Java使用Jsoup写爬虫

    Java使用Jsoup写爬虫 安装Jsoup jar 简单了解Jsoup Jsoup框架中的常用方法 动手实践 进阶写法 安装Jsoup jar 1 首先我们打开Jsoup官网 2 按照图片这里下载 3 打开IDEA去新建一个空白项目 4
  • Linux系统配置GIT的SSH秘钥

    Linux安装git git安装命令 apt get install git 安装完成 查看git的版本 git version 配置Git参数 git config global user name xxx xxx为自己用户名 git c
  • mac下python安装lxml失败

    作者 张自玉 链接 https www zhihu com question 30047496 answer 76115376 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 首先请确认安装了xcode co
  • 解决word中公式与右编号上下不居中的问题

    1 如图所示 选中右编号敲击公式后 公式与右编号上下不居中 2 在开始 样式 中找到如下图所示的样式 右击 修改 3 进入段落 修改如下图示 然后点击确定 在应用修改后的样式 就好了
  • 6-2 单链表结点删除(20 分)_单链表的删除节点的两种方式——还是双指针和链表覆盖好用

    6 2 单链表结点删除 20 分 本题要求实现两个函数 分别将读入的数据存储为单链表 将链表中所有存储了某给定值的结点删除 链表结点定义如下 struct ListNode int data ListNode next 函数接口定义 str
  • matlab table型数据的导入&使用

    举个例子看看 有一个文本数据如下 第一行内容视为列名称 T readtable csv table txt 访问其中的内容 LastName T LastName 数据部分 data part table2array T 3 end 拓展
  • GDB多线程调试常用命令

    gdb调试命令 step和next的区别 当前line有函数调用的时候 next会直接执行到下一句 step会进入函数 查看内存 gdb p a 打印变量地址 gdb x 0xbffff543 查看内存单元内变量 0xbffff543 0x
  • error: No rule to make target `c:/Users/Administrator/Desktop/LED_mainWindow/pcb_view.ui', needed by

    qt编译的时候出现error 但是程序没有错 在不同的电脑上可能报错 error No rule to make target c Users Administrator Desktop LED mainWindow pcb view ui
  • DNG格式解析

    Author Maddock Date 2015 04 22 转载请注明出处 http www cnblogs com adong7639 p 4446828 html DNG格式基本概念 DNG格式是在TIFF的基础上扩展出来的 要了解D
  • 上拉电阻和下拉电阻

    一 定义 上拉电阻 将一个不确定的信号 通过一个电阻与电源VCC相连 固定在高电平 下拉电阻 将一个不确定的信号 通过一个电阻与地GND相连 固定在低电平 二 作用 提高输出信号驱动能力 确定输入信号电平 防干扰 限流 阻抗匹配 抗回波干扰
  • 项目3:(9)与安川控制器P3000通信模块代码

    1 common h 通信传输的IP地址 typedef struct char serverIp 16 int iPort CONNINFO 定义连接信息数据结构 定义发送数据的结构体 typedef struct double R Bo
  • 机器学习:深入理解 LSTM 网络 (一)

    Recurrent Neural Network Long Short Term Memory Networks LSTMs 最近获得越来越多的关注 与传统的前向神经网络 feedforward network 不同 LSTM 可以对之前的
  • 将一条直线朝着划线方向进行偏移

    写了一个将一条link朝着划线方向偏移一定的距离 供参考 def cal poi geom1 geom2 dis 将一条直线link朝着划线方向偏移 param geom1 param geom2 param dis return dis
  • 0动态规划中等 NC206 跳跃游戏(二)

    NC206 跳跃游戏 二 描述 给定一个非负整数数组nums 假定最开始处于下标为0的位置 数组里面的每个元素代表下一跳能够跳跃的最大长度 如果可以跳到数组最后一个位置 请你求出跳跃路径中所能获得的最多的积分 1 如果能够跳到数组最后一个位
  • 信息系统项目管理师学习笔记

    信息系统项目管理师学习笔记 信息化从小到大分为以下5个层次 产品信息化 企业信息化 产业信息化 国民经济信息化 社会生活信息化 国家信息化体系包括6要素 1 信息技术应用 2 信息资源 3 信息网络 4 信息技术和产业 5 信息化人才 6
  • Javascript高级应用:文件操作篇

    Javascript是网页制作中离不开的脚本语言 依靠它 一个网页的内容才生动活泼 富有朝气 但也许你还没有发现并应用它的一些更高级的功能吧 比如 对文件和文件夹进行读 写和删除 就象在VB VC等高级语言中经常做的工作一样 怎么样 你是否
  • 数据结构第五章(堆、哈夫曼树、哈夫曼编码)

    什么是堆 堆是按照一定顺序组织的完全二叉树 优先队列 特殊的 队列 取出元素的顺序是依照元素的优先权 关键字 大小 而不是元素进入队列的先后顺序 是否可以采用二叉树存储结构 可以 查找与删除的时间复杂度均为以2为底n的对数即log 2 n
  • OpenWRT 添加 WEB 配置界面实战记录

    本篇是记录在 Openwrt 镜像中添加 自定义的 web 配置界面过程 编译进 openwrt 的系统镜像中 第一步 建立项目文件目录 mkdir p feeds luci applications luci app Gateway mk