• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

JavaScript 开心洋葱 7580次浏览 1个评论

35

开发 CGI 时,不需要在自已的程序中包含 main 函数,只需链接 cgi.so 即可。

在 cgi.so 的 main 函数中,会首先得到被请求的 CGI 接口名称,例如前例中的

set_wireless.cgi,从 CGI 开发者定义的 CGI 接口表中,找到相应的函数入口,并

调用它来处理参数。这个入口表为 struct IGD_CGIMAP_ENTRY 数组。

定义如下:

2 2.2  定义 插件的 的 I CGI  接口

即 定 义 一 个 struct IGD_CGIMAP_ENTRY 数 组 , 数 组 的 名 称 必 须 是

IGD_CGI_FUN_MAP,每个成员有三部分组成:

11. 第一部分是字符串,它是 CGI接口名称,必须以“.cgi”结尾,例如:

set_wireless.cgi;

12. 第二部分是函数指针,它是处理该CGI 接口的函数入口;

13. 第三部分是权限设定,可以使用宏 PERM_ALL 和 PERM_LE_ADMIN,

PERM_ALL 表示该接口允许所有用户调用,即本地 web 登录和插件中心远程操作,PERM_LE_ADMIN 只允许本地 web 登录使用该接口。

数组以第一部分为 NULL 的成员结束。

例如:

struct IGD_CGIMAP_ENTRY IGD_CGI_FUN_MAP[]= {

{“ip_dns_args_dump.cgi”, ip_dns_args_dump_cgi, PERM_ALL},

{“ip_dns_args_set.cgi”, ip_dns_args_set_cgi, PERM_LE_ADMIN},

{“ip_dns_set.cgi”, ip_dns_set_cgi, PERM_LE_ADMIN},

{“ip_dns_show.cgi”, ip_dns_show_cgi, PERM_ALL},

{“ip_dns_clean.cgi”, ip_dns_clean_cgi, PERM_LE_ADMIN},

{“ip_dns_del.cgi”, ip_dns_del_cgi, PERM_LE_ADMIN},

{NULL,}

};

struct IGD_CGIMAP_ENTRY {

char*name;

IGD_CGI_HANDLER handler;

int user_perm_flag;


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明360智能路由器插件开发指南
喜欢 (0)

您必须 登录 才能发表评论!

加载中……