40
程序启动之后,读取保存的设置参数,根据参数值决定是否需要注册 web认证的功能。接着等待接受 CGI 处理程序发送的消息。
♦ 管理员配置。
管理员通过插件配置界面填写 URL,URL 需是 Internet 服务器上的用户认证页面。页面发送 CGI 请求(auth_info_set.cgi),把数据传输给路由器插件。
处理函数(webauth_app.c 中的 auth_info_set 函数)。此函数根据管理员的配置,设置或者撤销重定向,同时保存配置。重定向的 URL 附带的参数,包括 ip、magic、用户原来访问的网址。通过调用 register_http_ctrl 函数来完成认证重定向。
无需路由器的 web 认证的 CGI 请求(auth_info_check.cgi),则需调用register_noauth_url 函数放行。
♦ 用户认证
管理员设置重定向成功以后,用户访问 Internet 都会重定向到指定的认证服务器。用户需输入用户名及密码,进行用户认证。若认证成功,Internet服务器上相关处理程序(示例是通过网页做 MD5 计算)需把用户名、密码、ip、magic、私有密钥 key组成的字符串计算 MD5。再通过页面把用户名、密码、ip、magic、MD5 加密数据发送 CGI 请求(auth_info_check.cgi),把数据传输给 app 处理函数(webauth_app.c 中的 auth_info_check 函数)。此函数通过传递的用户名、密码、ip、magic 与私用的密钥 key(需与服务器的私有密钥一致)组成的字符串使用 MD5 加密。加密得到的数据与传递的 MD5 加密数据进行比较,若一致则撤销重定向,跳转到用户原来访问的网址。撤销重定向调用http_ctrl_action 函数,需传入用户主机的 IP,即用户主机通过认证,可以正常访问 Internet。
. 3. 位掩码操作函数
360 智能路由器提供的位掩码操作函数定义在 igd_lib.h,以下介绍最常用的一部分,其它内容请参考 igd_lib.h。
3.1 位掩码初始化
/* 把所有二进制位初始化为 0*/
static inline int igd_init_bit(int nr, unsignedlong *bit)
参数: