Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851157
  • 博文数量: 290
  • 博客积分: 511
  • 博客等级: 下士
  • 技术积分: 1590
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-29 13:14
文章分类

全部博文(290)

文章存档

2018年(28)

2017年(19)

2016年(8)

2015年(1)

2014年(14)

2013年(12)

2012年(22)

2011年(186)

分类: 嵌入式

2018-01-24 16:02:29

原文地址:


上边我们已经完成了LuCI配置界面的开发,在配置界面中我们已经能读取并保存配置文件了。接下来我们要编写/etc/init.d/njitclient脚本,使程序最终能运行起来。关于UCI接口在脚本文件中的官方说明可以参考:http://wiki.openwrt.org/doc/devel/config-scripting

要使用UCI调用脚本,首先第一步需要读取配置文件,命令为“config_load 配置文件名”,比如我们可以这样读入刚才的配置文件:

config_load njitclient

接下来要遍历配置文件中的Section,可以使用“config_foreach 遍历函数名 Section类型”,例如我们可以这样:

config_foreach run_njit login

然后我们去编写名为“run_njit”的函数,在这个函数中,我们可以使用“config_get 变量名 Section名 Section参数名”获取变量的值,或者使用“config_get_bool 变量名 Section名 Section参数名”获取布尔型的值。所以全部的代码见下:

 1 #!/bin/sh /etc/rc.common  2 START=50  3  4 run_njit()  5 {  6  local enable  7 config_get_bool enable $1 enable  8  9 if [ $enable ]; then 10  local username 11  local password 12  local domain 13  local ifname 14 15 config_get username $1 username 16 config_get password $1 password 17 config_get domain $1 domain 18 config_get ifname $1 ifname 19 20 if [ "$domain" != "" ]; then 21 njit-client $username@$domain $password $ifname & 22 else 23 njit-client $username $password $ifname & 24 fi 25 26 echo "NJIT Client has started." 27 fi 28 } 29 30 start() 31 { 32  config_load njitclient 33 config_foreach run_njit login 34 } 35 36 stop() 37 { 38 killall njit-client 39 killall udhcpc 40 41 echo "NJIT Client has stoped." 42 }

【四、 编译开发的程序 】

如果按上述内容创建好上述4个文件,那么配置页面和程序就能在OpenWrt上运行起来了。但是如果要想把自己写的程序打包,还需要创建OpenWrt的Makefile来使用OpenWrt的SDK进行编译。

关于LuCI上配置Makefile的官方说明可以见这个地址:http://luci.subsignal.org/trac/wiki/Documentation/Modules

无非就是定义包的名称(PKG_NAME)、版本和生成次数(PKG_VERSION、PKG_RELEASE)、在menuconfig中的分类说明等(define Package/luci-app-njitclient)以及安装时进行的操作(define Package/luci-app-njitclient/install)等等。其中安装的文件分为三种,分别是配置文件、可执行文件以及其他数据文件,其中配置可执行文件时,会自动加入执行权限的,所以不需要额外进行处理。Makefile全部的代码见下:

 1 include $(TOPDIR)/rules.mk  2  3 PKG_NAME:=luci-app-njitclient  4 PKG_VERSION=1.0  5 PKG_RELEASE:=1  6  7 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)  8  9 include $(INCLUDE_DIR)/package.mk 10 11 define Package/luci-app-njitclient 12 SECTION:=luci 13 CATEGORY:=LuCI 14 SUBMENU:=3. Applications 15 TITLE:=NJIT 802.1X Client for LuCI 16 PKGARCH:=all 17 endef 18 19 define Package/luci-app-njitclient/description 20 This package contains LuCI configuration pages for njit8021xclient. 21 endef 22 23 define Build/Prepare 24 endef 25 26 define Build/Configure 27 endef 28 29 define Build/Compile 30 endef 31 32 define Package/luci-app-njitclient/install 33 $(INSTALL_DIR) $(1)/etc/config 34 $(INSTALL_DIR) $(1)/etc/init.d 35 $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi 36 $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller 37 38 $(INSTALL_CONF) ./files/root/etc/config/njitclient $(1)/etc/config/njitclient 39 $(INSTALL_BIN) ./files/root/etc/init.d/njitclient $(1)/etc/init.d/njitclient 40 $(INSTALL_DATA) ./files/root/usr/lib/lua/luci/model/cbi/njitclient.lua $(1)/usr/lib/lua/luci/model/cbi/njitclient.lua 41 $(INSTALL_DATA) ./files/root/usr/lib/lua/luci/controller/njitclient.lua $(1)/usr/lib/lua/luci/controller/njitclient.lua 42 endef 43 44 $(eval $(call BuildPackage,luci-app-njitclient))

接下来在编译目录下的package目录下创建一个文件夹,如njitclient,然后将所有的文件按目录复制到该目录下即可。之后配置好OpenWrt的交叉编译环境后就可以使用OpenWrt SDK进行编译了,由于这类文章较多,故不再赘述,可以参考相关链接3及之后的文章。


阅读(693) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~