第 3 節

插件開發

0瀏覽次數0訪問次數--跳出率--平均停留

插件源碼的文件組成Openwrt插件一般使用"MVC"結構:

  1. 配置文件 位於 /etc/config/*
config server
option username ''
option password ''

例示文件中生成了兩個待輸入的配置。現在需要一個表單頁面來管理它。

  1. CBI文件 一般位於目錄 /usr/lib/lua/luci/model/cbi/*.lua
require("luci.sys")

-- 页面标题和描述
m = Map("bargo", translate("Bargo Client"), translate("Configure Bargo client, Powered By Sinchie."))

-- 读取配置文件
s = m:section(TypedSection, "server", "")
s.addremove = false
s.anonymous = true

-- 是否启用的选择框
enable = s:option(Flag, "enable", translate("Enable"))
-- 映射我们的配置到输入框
username = s:option(Value, "username", translate("Username"))
pass = s:option(Value, "password", translate("Password"))
pass.password = true

-- 如果点击了保存按钮
local apply = luci.http.formvalue("cbi.apply")
if apply then
    -- 这里是调用我们自己的程序脚本,后面会讲怎么来写这个脚本
    io.popen("/etc/init.d/bargo restart > /dev/null &")
end

return m
  1. 控制器文件 一般位於系統的/usr/lib/lua/luci/controller/*.lua,創建控制器文件後可以在web界面創建一個界面入口(菜單)。腳本結構如下:
-- module 名称
module("luci.controller.bargo", package.seeall)

function index()
    -- 4 个参数介绍
    -- 1.后台访问路径 admin/services/bargo 
    -- 2.target 动作(call, template, cbi)call 是调用自定义函数,template 调用 html 模板,cbi 调用 openwrt 的公共表单页面
    -- 3.菜单名称 
    -- 4.排序
    entry({"admin", "services", "bargo"}, cbi("bargo"), _("Bargo Client"), 1)
end
創建構建文件Makefile

製作 OpenWRT 編譯 Makefile 文件需要以下步驟:

  1. 安裝 OpenWRT SDK,並設置環境變量
  2. 在任意目錄下,創建一個新的文件夾,用於存放你的應用程序代碼
  3. 在該目錄下,創建 Makefile 文件,並按照以下結構填寫相應內容:

# 这是注释,可以忽略或者修改

include $(TOPDIR)/rules.mk # 引入OpenWRT编译规则
PKG_NAME:=myapp # 应用程序的名称,建议使用小写字母和数字组合
PKG_VERSION:=1.0 # 应用程序的版本号
PKG_RELEASE:=1 # 应用程序的发行版本号

include $(INCLUDE_DIR)/package.mk # 引入OpenWRT中提供的软件包模板
define Package/myapp # 描述应用程序的信息
  SECTION:=net
  CATEGORY:=Network
  TITLE:=My Application
  DEPENDS:=+libopenssl +libcurl +libjson-c 
endef

define Package/myapp/description # 描述应用程序功能和用途
 My Application is a simple program that does something useful.
endef

define Build/Prepare # 准备构建应用程序所需的源码和资源

# 此处可以添加自定义命令,用于准备应用程序的源码和资源
endef

define Build/Configure # 配置应用程序的编译选项

# 此处可以添加自定义命令,用于配置应用程序的编译选项
endef

define Build/Compile # 编译应用程序的源码

# 此处可以添加自定义命令,用于编译应用程序的源码
endef

define Package/myapp/install # 安装应用程序所需的文件和目录
$(INSTALL_DIR) $(1)/usr/bin # 创建安装目录
$(INSTALL_BIN) $(PKG_BUILD_DIR)/myapp $(1)/usr/bin/ # 安装二进制文件
endef

$(eval $(call BuildPackage,myapp)) # 构建软件包并注册到OpenWRT中
音乐页