360智能路由器插件开发指南

上传人:suns****4568 文档编号:89390549 上传时间:2019-05-24 格式:PDF 页数:41 大小:766.72KB
返回 下载 相关 举报
360智能路由器插件开发指南_第1页
第1页 / 共41页
360智能路由器插件开发指南_第2页
第2页 / 共41页
360智能路由器插件开发指南_第3页
第3页 / 共41页
360智能路由器插件开发指南_第4页
第4页 / 共41页
360智能路由器插件开发指南_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《360智能路由器插件开发指南》由会员分享,可在线阅读,更多相关《360智能路由器插件开发指南(41页珍藏版)》请在金锄头文库上搜索。

1、1 360 智能路由器插件开发指南 版本 1.0_20160711 目录 目录.1 概述3 1. 插件与 Linux 插件的关系3 2. 插件架构.4 3. 插件的启动和退出4 4. 插件程序配置方式5 4.1 本地配置方式5 4.2 插件中心配置方式5 5. 安装开发工具.5 6. 如何使用 API.6 7. 插件程序的目录结构6 8. 插件程序的参数7 9. 使用插件自己的动态链接库8 10. 使用 C+开发插件.8 11. 将插件安装到路由器中8 插件 API10 1. API 的返回值.10 2. 用户组10 3. URL 网址组14 4. URL 网址过滤策略组.15 5. http

2、 访问控制.15 5.1 网址黑、白名单.16 5.2 HTTP 高级过滤策略17 5.3 Web 认证.19 5.4 取消 360 智能路由器中特定 URL 路径的访问认证25 6. 网络接口26 6.1 查询、设置 WAN 口配置.26 6.2 查询设置 LAN 口配置.27 7. 带宽控制28 7.1 主机限速.28 2 8. 连接网络用户信息29 8.1 获取内网主机信息.29 8.2 获取内网在线主机信息.30 9. 存储相关接口30 9.1 获得 RAM 内存信息30 9.2 获取插件临时存储路径.31 9.3 获取插件永久存储路径.31 10. 系统信息32 10.1 获取设备唯

3、一硬件标识.32 10.2 获取系统启动时间.32 插件配置界面和接口.33 1. 开发插件配置界面34 网页目录结构34 2. 开发插件配置接口(CGI).34 2.1 360 OS 对 CGI 开发的支持34 2.2 定义插件的 CGI 接口.35 2.3 编写 CGI 处理函数.36 附录.38 1. 示例一:Hello,World!38 2. 示例二:网页用户认证39 3. 位掩码操作函数40 3.1位掩码初始化40 3.2设置位掩码中的一位41 3.3清除位掩码中的一位41 3.4测试位掩码中的一位41 3 概述概述 本文详细描述了基于 360 OS 的设备端插件程序开发方法。 开发

4、者需要具备 TCP/IP 网络协议方面的知识、Linux 环境下 C 语言插件程序开发经 验、熟悉 JSON 数据封装格式、熟悉 HTML/JavaScript。 名词解释: JSON:JavaScript Object Notation CGI:Common Gateway Interface API:Application Programming Interface 插件:运行于 360 智能路由器中的插件程序 1. 1. 插件插件与与 Linux 插件插件的关系的关系 除支持 Linux 方式的插件开发外,还提供了更多的针对网络方面的 API。分为以 下类别 类别类别说明说明 协议控制

5、http 访问控制、DNS 访问控制 故障处理在设备异常情况发生时做出处理 网络相关 配置路由、QoS、限速等网络功能 通知用于通知系统中随时发生的事件,例如新的存储设备装载 了,网络用户下线消息通知 无线控制无线接口工作模式,获取周围无线主机信息等 组操作时间组、网址组、用户组操作 存储相关 与存储相关的 API,例如获取系统主分区信息,遍历系统中 的所有存储设备等 设备信息 获取设备相关信息,例如设备绑定用户清单,设备的 ID 号等 4 2.2.插件插件架构架构 360 OS 中插件在系统中的位置 上图中,右侧“插件”框内的部份是网关插件的部分。其中“功能实现”是必须 的。 若要开发具有网

6、关本地 web 配置界面的插件,必须具有配置界面、配置接口、功能 实现部分; 若仅需要云端 web 配置功能,配置界面仍然需要开发,但它安装在云端,网关中的 插件需要配置接口、功能实现部分; 如果插件的所有功能仅通过专用的插件进行配置(不使用 web 技术),例如仅使用 手机 APP 进行控制,则无需具有配置界面部分,需要具有配置接口和功能实现部分。 插件自有 so 动态链接库和内核 ko 模块部分是可选的。支持插件自带 so 库和 ko 模 块。注意:360 安全路由器 mini 不支持内核模块 ko 文件。 3.3.插件插件的启动和退出的启动和退出 插件必须在进程的主线程中申请 360 O

7、S 资源,即调用以 register 为前缀的 API, 在插件程序工作期间,主线程保持存在。为避免资源泄漏,插件的主线程结束时,需要 释放申请的 360 OS 资源。 插件程序通过注册 SIGTERM 的信号处理函数,如:signal(SIGTERM, sig_func),在 sig_func 函数中通过调用 unregister 为前缀的 API 去释放申请的资源。 5 4.4.插件插件程序配置方式程序配置方式 插件通过 web 方式进行配置。包括插件的启动、停止,获取插件的状态、配置插 件参数等。有三种配置方式:本地配置方式、插件中心配置方式,以及两者都支持的 配置方式。 360 OS

8、设计时已确保这两种开发方式的一致性。 4.1本地配置方式 为支持该配置方式,设备上需要有插件的前端配置网页和 CGI 程序,插件安装 后,在路由器配置页面中的“第三方扩展工具”菜单下,将会出现新插件的图标,点 击后跳转到插件的配置页面。 在插件开发中,开发者会首先使用该方式来完成插件开发和调试。如果希望让更 多的用户使用你的插件,那么需要使用下一种方式:把你的插件提交到插件中心审 核。 4.2插件中心配置方式 该配置方式只会用到设备端的 CGI,前端网页安装在插件中心服务器中。通过插 件中心 web 版或移动终端插件来配置插件。 注意,只有通过插件中心发布的插件才能通过插件中心方式进行配置。

9、5.5.安装开发工具安装开发工具 访问 360 智能路由器官方网站: 下载开发工具,在 Linux 主机上 解包 /opt/tar jxvf srouter_P0_P1_XXXX.tar.bz2XXXX 为版本号 解包后,生成以下目录 ./srouter_ P0_P1_XXXX/includeheader 文件目录 ./srouter_ P0_P1_XXXX/linux内核头文件,用于开发内核驱动 ./srouter_ P0_P1_XXXX/lib库目录 ./srouter_ P0_P1_XXXX/utility工具目录 ./srouter_ P0_P1_XXXX/doc文档目录,包括本开发指

10、南 ./srouter_ P0_P1_XXXX/example例程 ./srouter_ P0_P1_XXXX/toolchain交叉编译工具目录 ./srouter_ P0_P1_XXXX/env-rtk.sh环境配置脚本,360 安全路由 P1、mini 使 用 source ./env-rtk.sh 方式运行 6 6.6.如何使用如何使用 API 本 文 介 绍 的 API 需 要 引 用 srouter.h 头 文 件 , 连 接 时 需 要 使 用 libnorouter.so。 链接参数: LDFLAGS=-L$SROUTER_PATH/lib -lnorouter $SROUTE

11、R_PATH是 SDK 安装目录 为 了处 理 HTTP 请 求, CGI 程 序还 需要 引 用 cgi.h , 连接 时需 要 使用 libcgi.so。 LDFLAGS=-L$SROUTER_PATH/lib lcgi lnorouter 为解决新固件运行老版本插件的问题,在许多 C 结构的最前面增加了 uint32_t size_of_struct 或 SizeOfStruct 成 员 , 在 使 用 前 需 要 用 宏 : NOS_STRUCT_INIT 来初始化它。 7.7.插件插件程序的目录结构程序的目录结构 按以下目录结构组织你的插件: ./插件名称/app.json插件的基本

12、信息,见后面说明 ./插件名称/APPSIGN.png、APPSIGN_b.png、APPSIGN_w.png 插件的图标文件,APPSIGN 是指插件的名称。 例如信号调节插件的图标文件:power_progress_b.png 为 是点开插件配置界面时的图标,分辨率为 75px * 75px power_progress.png 为 在插件清单中看到的图标,分辨率为 64px * 64px 7 power_progress_w.png 为 当鼠标移到插件图标上时显示的图片,分辨率为 64px * 64px ./插件名称/config插件缺省参数文件,由插件定义内容 ./插件名称/bin/此

13、目录存放可执行程序、内核模块文件、动态链接库 ./插件名称/webs/此目录存放 cgi 程序、html、css、javascript 等网页文件 插件程序打包后的扩展名为 opk,可以通过设备本地 web 配置页面安装它。 app.json 文件说明: 该文件是插件基本信息文件,JSON 格式,包括以下对象,插件程序需要填写每一 个对象的值(注意值不可换行): “appsign“: 插件名称,必须是独一无二的,不与其它插件同名,ASCII 字符 “appname”:插件显示名称,显示在手机和本地配置页面中的名称,UTF8 编码 “version“: 插件版本号,三段点分十进制数。例如:“1.

14、0.1” “dep_version“: 对基本系统的版本依赖要求,基本系统版本号必大于该版本才能 安装 “description“: 插件简介 “bin_start“: 插件的启动程序文件名,该文件必须位于./bin 目录下 “author“: 作者名称 “URL“: 官方网站 “maintainer“:维护者 “email“:维护者的电邮 “iconicon“:插件图标,相对路径 “configtype“:配置类型,0:无需配置,1:原生配置界面(手机 APP 本地实现),2:H5 配置,对于 H5 配置的插件,配置页路径为 http:/app/webs/index.html “app_ty

15、peapp_type“: 插件程序类型,本地配置“local“ ,”remote”,”local 2.2.用户组用户组 用户组是内网用户的集合,可以是 IP 地址集合或用户帐号集合。系统支持 256 个用户组,系统保留了前 50 个用户组,用于向插件提供预定义的用户分类,例如有 线用户组、无线用户组,插件能引用这些组来进行规则设置。详见用户组 API 说 明。 系统预留用户组系统预留用户组 系统预留 50 个用户组(ID 为 0 至 49),插件程序可以引用,但不能操作它们。 在主机上下线时,主机依据所属的类别自动加入或退出相应系统用户组。目前定义 的系统用户组如下表: 用户组编号用户组编号名

16、称名称解释解释 0(UGRP_ALL) 全部用户组所有上网用户都属于该组 1(UGRP_IPMAC)MAC 绑定用户 组 进行了 IP、ARP 协议的源 MAC 地址 绑定操作的用户 2(UGRP_IPMAC_IVS)MAC 未绑定用 户组 未进行 IP、ARP 协议的源 MAC 地址 绑定操作的用户 11 3(UGRP_WIRE) 有线用户组 通过有线接口连接到 360 智能路由器 的用户 4(UGRP_WIFI) 无线用户组 通过无线口连接到 360 智能路由器的 用户 5(UGRP_WIFI_1) 无线网络一用户 组(主 AP) 通过特定无线网络(SSID)连接的用 户 6(UGRP_WIFI_2) 无线网络二用户 组(副 AP) 7(UGRP_WIFI_3) 无线网络三用户 组 8(UGRP_WIFI_4) 无线网络四用户 组 9(UGRP_WIFI_IPMAC)无线 MAC 绑定 用户组 通过无线连接,并且绑定了 IP、ARP 协议源 MAC 地址的用户。适用于动态 获取 IP 或静态 IP 用户

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号