360智能路由器插件开发指南版本1. 0目录目录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.使用插件自己的动态链接库81 0.使用C开发插件81 1.安装插件到路由器8?插件API10 1. API返回值10 2.用户组10 3. URL URL组14 4. URL URL过滤策略组15 5. http访问控制15 5. 1 URL黑白名单16 5. 2HTTP高级过滤策略17 5. 3Web身份验证19 5. 4取消360智能路由器25 6.网络接口26 6. 1查询中特定URL路径的访问身份验证并设置WAN端口配置26 6. 2查询d设置LAN端口配置27 7.带宽控制28 7. 1主机速度限制281 8.连接网络用户信息29 8. 1获取Intranet主机信息29 8. 2获取Intranet主机信息30 9.与存储相关的接口30 9. 1获取RAM存储器信息30 9. 2获取插件临时存储路径31 9. 3获取插件永久存储路径311 0.系统信息321 0. 1获取设备唯一的硬件标识321 0. 2获取系统启动时间32?插件配置接口和接口33 1.开发插件配置接口34网页目录结构34 2.开发插件配置接口()CGI34 2. 1开发支持360OS CGI34 2. 2定义插件的CGI接口35 2. 3编写CGI处理功能36?附录38 1.示例1:您好,世界! 38 2.示例2:Web用户认证39 3.位掩码操作功能40 3. 1位掩码初始化40 3. 2在位掩码中设置一个位41 3. 3清除位掩码41 3. 4位掩码中的测试位412?概述本文详细介绍了基于360 OS的设备侧插件程序的开发方法。
开发人员需要具备TCP / IP网络协议知识,Linux环境下的C语言插件程序开发经验,熟悉JSON数据打包格式以及HTML / JavaScript。术语解释:JSON:JavaScriptObject符号CGI:CommonGatewayInterfaceAPI:应用程序编程接口插件:在360智能路由器中运行的插件程序1.插件和Linux插件之间的关系除了支持Linux样式的插件开发之的无线主机信息,如组操作时间组,网站组,用户组操作存储与存储相关,例如获取系统主分区信息,遍历所有存储设备以及系统API的其他设备信息,以获取与设备相关的信息,例如设备绑定用户列表,设备ID号等。3 2.插件体系结构360OS插件在系统中的位置如右图所示,“插件”框中的部分是网关插件的一部分。
“功能实现”是必须的。如果要开发带有网关本地Web配置界面的插件,则必须具有配置界面,配置界面和功能实现部分。如果只需要云Web配置功能,则仍然需要开发配置界面,但是已经安装在云中,并且需要配置网关中的插件。接口和功能实现部分;例如,如果仅通过专用插件(不使用Web技术)配置插件的所有功能,则仅使用手机APP进行控制,则不需要配置接口部分,而是配置界面和功能实现部分。插件自己的动态链接库和内核模块是可选的。库和模型sokosoko块随附了支持插件。注意:安全路由器不支持内核模块文件。 360miniko 3.插件的启动和退出插件必须在进程的主线程中申请360OS资源,即,调用以register为前缀的API。在插件程序的工作期间,主线程保持不变。为了避免资源泄漏,当插件的主线程结束时,需要释放请求的360OS资源。插件程序注册SIGTERM的信号处理功能,例如signal(SIGTERM,sig_func),并通过调用sig_func函数中以unregister为前缀的API释放请求的资源。 4 4.插件程序的配置方法插件是通过Web进行配置的。包括插件的启动和停止,获取插件的状态,配置插件参数等。
共有三种配置模式:本地配置模式,插件中心配置模式以及两者均支持的配置模式。 360OS的设计确保了这两种开发方法的一致性。 4. 1本地配置方法将支持此配置方法。该设备需要具有插件前端配置网页和CGI程序。安装插件后,新的插件将出现在路由器配置页面上的“第三方扩展工具”菜单下。单击图标跳至该插件的配置页面。在插件开发中,开发人员将首先使用此方法来完成插件开发和调试。如果您希望更多的用户使用您的插件,则需要使用下一种方法:将您的插件提交给插件中心进行审查。 4. 2插件中心配置方法此配置方法仅使用设备端,并且前端网页已安装在插件中心服务器中。通过插入Web版本的CGI Ware Center或移动终端插件来配置插件。请注意,只能通过插件中心配置通过插件中心发布的插件。 5.安装开发工具并访问360 Smart Router的官方网站:下载开发工具并将其解压缩到Linux主机上。 / opt / tarjxvf srouter_P0_P1_XXXX.tar.bz2 XXXX是版本号。解压缩后,将生成以下目录。 / srouter_ P0_P1_XXXX / include头文件目录./srouter_ P0_P1_XXXX / linux内核头文件,用于开发内核驱动程序./srouter_ P0_P1_XXXX / lib库目录./srouter_ P0_P1_XXXX /实用工具目录./srouter_ P0_P1_XXXX / doc开发指南。/srouter_XXXX/示例示例。/srouter_P0_P1_XXXX / toolchain交叉编译工具目录。/srouter_P0_P1_XXXX / env-rtk.sh环境配置脚本,360安全路由P 1、 mini使用source./env-rtk.sh运行5 6.如何使用API???本文介绍的API需要引用srouter.h头文件,并且连接需要libnorouter.so。
链接参数:LDFLAGS = -L $ {SROUTER_PATH} / lib-Inorouter是安装目录$ {SROUTER_PATH} SDK为了处理HTTP请求,CGI程序还需要引用cgi.h,而libcgi.so是连接所必需的。 LDFLAGS = -L $ {SROUTER_PATH} /lib-lcgi-inorouter?为了解决使用新固件运行旧版本插件的问题,在许多C结构的顶部添加了uint32_t size_of_struct或SizeOfStruct成员。在使用宏之前,需要使用它们:NOS_STRUCT_INIT。初始化它。 7.插件程序的目录结构根据以下目录结构来组织插件:./plug-in name / app.json插件的基本信息,请参阅插件说明名称,。// APPSIGN.png APPSIGN_b.png APPSIGN_w.png插件图标文件APPSIGN指代插件的名称。例如,信号调节插件的图标文件:power_progress_b.png是单击插件配置界面时的图标,分辨率为75px * 75px power_progress.png是在插件列表中看到的图标,分辨率为64px * 64px6 power_progress_w.png是当前图片。将鼠标移动到插件图标时显示的图片,分辨率为64px * 64px。/插件名称/配置插件默认参数文件,其中由插件定义。/plugin-name/bin/此目录存储可执行程序和内核模块文件,即动态链接库插件名称。此目录存储程序,和其他网页文件。 // webs / cgihtml css javascript插件程序,带有名为opk的扩展名,可以通过设备的本地Web配置页面安装。
App.json文件描述:该文件是插件的基本信息文件,为JSON格式,包括以下对象。插件程序需要填写每个对象的值。请注意,该值不能换行:()“ appsign”:插件的名称,必须是唯一的是,与其他插件名称不同,ASCII字符“ appname”:插件的显示名称,即名称显示在手机和本地配置页面上,UTF8编码“版本”:插件版本号,三个点分十进制数字。例如:“ 1. 0. 1”“ dep_version”:基本系统的版本依赖性要求,基本系统的版本号必须大于此版本才能安装“ description”:插件简介“ bin_start”:插件启动程序文件名,该文件必须位于./bin目录中。 “作者”:作者名称“ URL”:官方网站“ maintainer”:维护者“ email”:维护者的电子邮件“ icon”:插件图标,相对路径“ configtype”:配置类型,0:不需要配置,1:本机配置界面(移动APP的本地实现),2:H5配置,对于H5配置插件,配置页面路径为/app//webs/index.html“ app_type”:插件程序类型,本地配置“ local “,” remote“,” local&remote“” rom_use“:插件程序需要占用的rom空间,单位为KB” ram_use“:插件程序运行时所需的ram空间,单位为插件程序的参数插件KB 8.程序通常需要暂时且永久地保存数据。 SDK提供了两个API,分别是get_tmp_path和get_config_path,以分别获取插件的临时数据存储路径和永久数据存储路径。 7有关详细信息,请参阅API部分的“与存储相关的API”一章。
临时数据是指网关重启后将清除的数据;永久数据是指关闭网关电源后将继续保存的数据。不应将大量数据保存在临时存储路径中。当系统内存不足时,将清理临时存储目录,并强制清除占用较大临时存储空间的数据。插件的临时目录的存储内容不应超过100KB,并且必须控制存储在临时目录中的日志文件的大小。插件开发人员应使用API??返回的路径来保存自己的数据。使用其他路径不会通过插件中心审查,也不能保证固件升级后可以正常读写。当用户恢复插件参数时,临时和永久存储路径中的所有文件都将被删除,插件目录中的配置文件将被复制到永久数据存储目录中。升级插件后,临时和永久存储路径下的内容将不会被删除。 9.使用插件自己的动态链接库如果所需的动态链接库不在固件中,则可以将所需的动态链接库文件复制到插件的bin目录中。启动该插件时,以及在Web服务器上执行CGI程序时,该插件的bin目录将被添加到LD_LIBRARY_PATH环境变量中,以便您的程序可以正确地找到相应的动态链接库文件。 360安全路由器P 1、 5G固件包括以下动态链接库:libpthread,libresolv,libm,libuClibc,libssl,libcrypt,libcrypto,libnl,libnsl,librt 360安全路由器迷你固件包括以下动态链接库:固件支持的动态链接库可以远程登录到路由器并查看/ lib目录中的文件。
1 0.使用C ++开发插件。不同的360安全路由器具有不同的资源。 360安全路由器P 1、 5G固件包含C库,360安全路由器mini不包含C库。 1 1.有两种将插件安装到路由器的插件安装方法:?通过设备的Web配置页面安装插件。编译和打包后,可以通过设备的本地配置页面进行安装。通过浏览器访问8(或端口地址)。首先找到“开发人员模式”,将其“第三方LAN IP第三方插件开关”设置为ON,然后找到“第三方扩展工具”,单击“添加插件”,选择插件的opk文件,上传路由器并完成安装。注意:请谨慎使用。第三方插件调试功能是插件开发人员专有的。安装未经正式审查的第三方插件可能会导致用户信息泄漏,甚至可能导致路由器的基本功能不稳定。安装后,可能会进行非正式审查。安装第三方插件后,我们公司将不再保证路由器。打开电源后,按住重置按钮3到5秒钟,即可恢复出厂设置并清除第三方插件。 ?通过插件中心安装提交插件中心,通过审核的插件可以通过“ 360”手机终端的“扩展工具”界面输入插件中心路由器防护”中的右上角带有“”。 9?插件API 1. API的返回值如果API调用失败,则将返回负值。错误代码定义如下:枚举{ERR_FAILURE = -1,/ *一般错误,例如非法参数* / ERR_GROUP = -2,/ *用户组ID非法* / ERR_NO_RESOURCE = -3,/ *资源不正确可用* / ERR_RULE_FULL = -4,/ *规则已满* / ERR_NO_PERMISSION = -5,/ *无权限* / ERR_NO_MEM = -6,/ *内存分配失败* / ERR_NAME_EXIST = -7,/ *名称已存在* / ERR_NON_EXIST = -8,/ *规则不存在* / ERR_DATA_ERR = -9,/ *参数错误* / ERR_EXIST = -10,/ *规则已存在* / ERR_NOT_SUPPORT = -11,/ *不支持* /} ; 2.用户组用户组它是Intranet用户的集合,可以是IP地址或用户帐户的集合。
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-370569-1.html
……