wifidog开发--part2

Wifidog网关协议V2
线路协议
回复形式
在线路协议中有以下说明:
l 紧凑表示(当浏览分散式网络时,宽带也不便宜)
l 用户可读
l 能够为C语言和PHP提供快速的解析器,并且比较理想的是能够多语言化
l 适用于与配置文件分享解析器和格式
l 适用于清晰的显示树结构(例如认证服务器列表)
请求格式
必须遵循请求格式:
l 每个http请求都有多个操作(例如为多个用户更新统计数据)
l 保持http传送,因为这能允许完整的NAT和透明代理阻力
以上的一些需求没有适用于RESTFull ROA。然而,保持现有格式事实上把我们限制在了tag-value对列表。理论上即使可以将action=whatever放在列表中间并在协议中申明以下每个参数都是那个action的参数,这将使大多数网络服务器与框架完全混淆。
Ø Acv:另一个可能性是从PHP进行URL-parsing的方式借用一个页面。将get请求设置到一个数组表示,这将允许公平的逻辑请求捆绑。也就是:
/page?req[0][action]=Action1&req[0][Param1]=param&req[0][Param...]=param...&req[0][Paramn]=paramn&\req[...][action]=Action...&req[...][Param1]=param&req[...][Param...]=param...&req[...][Paramn]=paramn&\req[n][action]=Actionn&req[n][Param1]=param&req[n][Param...]=param...&req[n][Paramn]=paramn
Ø Acv:当比较容易进行解析的时候,这个格式会保持用户可读
功能性需求
l 允许认证服务器发送一些主要的配置变更
l 允许基于MAC认证的非连接关系
l 允许per-connection防火墙政策
l 允许per-connection宽带管理,不只限于设置数量
l 允许全球宽带管理
l 指定围墙花园
l 指定最初连接用户列表
指令
NOOP
基本上只为网关心跳。可能会指定操作间很短的延迟,并且如果在实际操作之间延迟的话,就会发送NOOP。
AUTH_VERIFY
STATS_UPDATE
提议方案
Ø Philippe:
I think we could have a Hash kind of structure like this: * protocol_version: 1 (start with this to identify protocol) * wifidog_version: ... * status: * uptime, etc. * connected_clients: * stats, etc.
Ø 简单回复:
{ "protocol_version": 1, "config": { "login_url": "https://auth.server/login.php", "portal_url": "http://portal.server/", ... }, "clients": [ { "mac": "00aabbccdd22", "ip": "10.0.0.1", ... }, { "mac": "00aabbccdd22", "ip": "10.0.0.1", ... },}
网关和认证服务器通信
Gateway : Verbes / Actions Auth-Server
Init request Gateway configurations
MAC detect Auth response (accept/deny this MAC)
User auth request User connection configation (open/closed port, QOS)
Auth the auth server (key + protocol) Auth the gateway (key + protocol)

配置
l 醒目页面,如果auth-server=down(URL)
l 醒目页面,如果internet=down(内容)
l 围墙花园(考虑一下DNS超时)
l 静态MAC黑/白名单
l 全球防火墙/QOS配置
Wifidog V2结构
推荐结构和观点
线程
主程序
l 启用“status”或者“autheserv”线程
l 等待状态线程在初始化网络和拒绝客户端之前,成功的下载配置
l 一旦被初始化,等待连接到它的节点
² 用以前的方法处理流量(访问登录页面…获取标识,用认证服务器测试标识,提供防火墙规则)
状态线程
l 连接认证服务器并且每五分钟(默认)发送一次状态
² Wiifdog uptime
² System uptime
² System free memory
² System load average
² System network interface list(ifconfig –a).(需要选择wifidog将要使用的接口)
http客户端线程
l 当一个新的连接被初始化时,启用此线程。如果有80个人连接到认证服务器,同时就会有80个线程被启用。最好是有个threads pool,但99%的情况都没用,并且会花费很多时间在代码和调试上。
命令行的选项
用所需的数值设置:--auth Authserver’s hostname –lan LAN interface
当wifidog初始化他的config,它应该看到一些选项,如“这是连接登录页面的URL”…
l 全球化宽带设置
l 登录页面URL
l 门户页面URL
l 计时器

本文章由 http://www.wifidog.pro/2015/01/13/wifidog%E5%BC%80%E5%8F%912.html整理编辑,转载请注明出处

标签: none