? Version:版本名字
? InstallSize:安装大小,单位字节
? Type:插件类型,内核模块/用户进程:ko/app ? Right:超级用户/普通用户,root/user ? Visibility:最终用户是否可见:yes/no ? Architecture:arm/mips/ppc/x86 ? KernelVersion内核版本:2.6.34.x
? EntryFile:插件可执行程序或内核模块文件名,是基于插件运行目录MyPlugin/的相对路径
? Cpu:可使用的CPU占比(x%)。值为0,表示不限制
? VirtualRam:可使用的虚拟内存(单位:Kbytes)。值为0,表示不限制 ? Socket:可使用的Socket文件句柄数。值为0,表示不限制 ? Provides:插件提供方信息 ? Description:插件描述信息 当插件是user权限时,要求网关为每个C插件创建单独的用户运行,并根据C插件配置文件中的CPU、VirtualRam、Socket数值进行相应的资源限制。
A.10.2.2 C插件运行文件要求
网关对C插件的运行文件支持及处理有以下两种:
? 对于运行文件是实际运行的程序和数据(包含可执行文件、.SO等),所有的程序
和运行相关文件都存放在插件运行文件目录MyPlugin/下,所有的动态库文件都存放在库文件目录MyPlugin/Lib/。
? 对于运行文件是.KO文件,要求网关直接将.KO文件插入内核。该.ko文件存放在
插件运行文件目录MyPlugin/下。
A.10.3 C插件安装(更新)、卸载、停止流程要求
C插件安装后以目录形式存在,插件目录名和插件名称相同,目录结构如图B.3:
C插件安装目录Info.pluginMyPlugin/Data/Temp/ 图B.3 C插件安装目录组成
C插件安装应由智能网关及应用管理平台侧发起,应通过APPStore方式下载到网关上,网关应根据配置文件(至少包括:插件名字、版本名字、安装大小)来对C插件进行校验,判断C插件的合法性。仅当C插件为合法时,应根据如下要求进行安装、卸载和停止。其中,在安装C插件时,网关需要为C插件在插件的安装目录下创建一个Data/和Temp/目
录,Data/目录供C插件存放持久化数据文件,网关重启后不会丢失,Temp/供C插件存放临时数据文件,网关重启后会丢失,且要求Data/和Temp/目录在C插件更新时不可被覆盖。网关需要保证C插件的运行目录是\插件安装目录/MyPlugin\以便C插件可以通过相对路径找到Data/和Temp/目录。
C插件安装流程如图B.4所示。
插件安装请求下载插件安装包解压插件安装包,获取Info.plugin和MyPlugin/安装合法性判断不合法安装失败合法是,更新插件是否已安装插件正在运行否否使用插件名创建插件安装目录是停止插件拷贝Info.plugin和MyPlugin/到安装目录覆盖Info.plugin和MyPlugin/到安装目录在插件安装目录下创建Data/和Temp/目录安装完成
图B.4 C插件安装流程
C插件卸载流程如图B.5所示。
插件卸载请求停止指定插件删除插件文件删除以插件命名的用户目录卸载完成 图B.5 C插件卸载流程
要求网关在停止C插件时,应向C插件发送SIGTERM信号,C插件应在收到该信号后的10秒内退出程序。若超过10秒仍未退出,网关应强行停止该C插件。其中,C插件停止流程如图B.6所示。
插件停止请求向插件发送停止消息等待插件10秒内退出插件是否退出是否强制终止插件停止完成
图B.6 C插件停止流程
A.10.4 对C插件恢复出厂配置要求
在处理恢复插件参数请求时,网关应直接将C插件插件安装目录下的Data/和Temp/目录下的文件删除后重新启动插件。 A.10.5 C插件安全管理要求
网关应限制非root权限的C插件可以访问的文件系统范围,只允许访问和其自身运行相关的文件和目录,禁止访问其它C插件的安装目录等,并且只允许对本插件安装目录下的Data/和Temp/目录具有写权限。