无线热点认证解决方案 WifiDog

news/2025/2/23 4:32:21/

WifiDog 是一款开源的用来实现无线认证的软件,可以集成到路由器或者网关中,对于连接到路由器或者网关的设备,使其先登录云端认证服务器,然后通过认证才能上网。比如在星巴克上网,浏览器会先弹出一个广告页面,我们输入手机号,获取验证码,然后就可以上网了。

网关心跳(Ping协议)

Wifidog将ping协议做为心跳机制向认证服务器发送当前状态信息。这可以实现为认证服务器每个节点的状态生成中央日志。

Wifidog客户端在conf文件中进行设置,目的是通过http定期启动thread(ping_thread.c)向认证服务器发送状态信息。信息格式如下:

http://auth_sever/ping/?    
gw_id=%s
sys_uptime=%lu    
sys_memfree=%u    
sys_load=%.2f    
wifidog_uptime=%lu

通过系统调用wifidog客户端收集的数据

Headers
HTTP/1.0\r\n" 
"User-Agent: WiFiDog %s\r\n" 
"Host: %s\r\n" 
"\r\n",

一个标准的HTTP需求应该是:

GET /ping/?gw_id=001217DA42D2&sys_uptime=742725&sys_memfree=2604&sys_load=0.03&wifidog_uptime=3861 HTTP/1.0
User-Agent: WiFiDog 1.1.3_beta6
Host: wifidog.pro

认证服务器认证协议

这个页面描述了当用户已经被认证并允许访问互联网时,为了认证用户和进程,wifidog网关和认证服务器之间的信息传送。

Wifidog客户端将定期的启动一个thread来报告每个用户的连接状况。目前它被用来报告每个用户输入/输出计数器,以显示用户依然在现,并允许认证服务器将不再连接的用户断开。
以下是发给每个在线用户的信息

auth_server:/auth/index.php?
stage=
ip=
mac=
token=
incoming=
outgoing=

注意:stage=计数器/登录,取决于是否是新客户端
即使输入输出变量会在所有信息中出现,但他们只对处于counter阶段的信息有效。其它情况下输入输出经常设置为0。
在做回复时,认证服务器会以有效身份或新用户信息,或者认证服务器错误提示形式进行回复。
回复格式如下:
Auth:

新用户状态为:

0 - AUTH_DENIED - User firewall users are deleted and the user removed.
6 - AUTH_VALIDATION_FAILED - User email validation timeout has occured and user/firewall is deleted
1 - AUTH_ALLOWED - User was valid, add firewall rules if not present
5 - AUTH_VALIDATION - Permit user access to email to get validation email under default rules
-1 - AUTH_ERROR - An error occurred during the validation process

注意:认识服务器错误一般不会改变防火墙或用户状态

网关重定向浏览器

客户端浏览器在不同情况下会被重定向到其它页面:

初始化请求:

基于捕捉,客户端会被网关重定向到以下URL:

login/?gw_address=%s&gw_port=%d&gw_id=%s&url=%s 
例如:https://wifidog.pro/login/?gw_id=0016B6DA9AE0&gw_address=7.0.0.1&gw_port=2060 

初始化请求之后

当请求被处理并且客户端已经被重定向到网关时

如果服务器回复AUTH_DENIED:注意你通常在标准认证服务器上看不到这样的提示。客户端将不会被重定向回网关。

gw_message.php?message=denied

如果服务器回复AUTH_VALIDATION:

gw_message.php?message=activate 

如果服务器回复AUTH_ALLOWED:这是门户重定向:

portal/?gw_id=%s

如果服务器回复AUTH_VALIDATION_FAILED:注意你将不会在标准认证服务器看到此回复。客户端将不会重定向回网关。

gw_message.php?message=failed_validation

认证服务器重定向浏览器

基于成功登录,客户端将被重定向到网关。

http://" . $gw_address . ":" . $gw_port . "/wifidog/auth?token=" . $token

URL示例:

http://192.168.1.1:2060/wifidog/auth?token=4f473ae3ddc5c1c2165f7a0973c57a98 

源码中重定向涉及的重要功能函数:

http_callback_404()函数
从这个函数里就是要开始重定向到认证服务器,开始是对访问的URL 进行encode,可以设定为如果AP未联网,就不进行从定向,发送Uh oh! Internet access unavailable!,如果服务器未在线,发送Uh oh! Login screen unavailable!。如果联网,且服务器在线就重定向,包含构建重定向的URL,然后302重定向。此函数在main_loop中被调用。

http_callback_wifidog()函数
这个函数只是简单的调用send_http_page函数来发送WiFiDog信息到浏览器。

http_callback_about()函数
这个函数仅反馈wifidog软件信息

http_callback_status()函数
该函数获取路由器状态信息,发送到浏览器。

http_send_redirect_to_auth()函数
该函数重定向浏览器到认证服务器,如果你想本地认证,可能需要构建一个和此类似的函数。这里说明可以使用http或者https。后面拼凑出重定向的URL。然后发送重定向。

http_send_redirect()函数
该函数对浏览器发送302重定向

http_callback_auth()函数
这里会对用户进行token判断,如未携带token,直接发送send_http_page(r, “WiFiDog error”, “Invalid token”);,否者对携带的token到服务器进行鉴权,成功则放行。

send_http_page()函数
该函数就是给浏览器发送html文件


http://www.ppmy.cn/news/675966.html

相关文章

wifidog基础

定义: wifidog是路由器的一种上网认证功能, 如果开启此功能, 所有通过路由器上网的设备(电脑,笔记本,手机等)都会跳转到指定的界面, 需要通过某种方式认证才可以上网.目前支持DD-WRT以及OPEN-WRT系统,他实现了路由器和认证服务器的数据交互,…

GitHub+PicGo制作个人图床

目录 一、前言 二、新建Github仓库 ​编辑 三、生成token 四、配置PicGo 五、上传图片 六、新版的PicGo出了很多新功能大家可以探索一下。​编辑 一、前言 PicGo是一个用于快速上传图片并获取图片 URL 链接的工具:Releases Molunerfinn/PicGo GitHub GitHub是一个在…

密码局题库

密评题库 其他人的答题结果,大家综合评估 其他人的答题结果,大家综合评估 完整版q2864245246 序号 题型 题干 选项A 选项B 选项C 选项D 参考答案 解析 参考答案2 解析 参考答案3 60 单项选择题 关于国家密码管理局的主要职责,下列说法错误的…

数据结构--顺序表VS链表

数据结构–顺序表VS链表 逻辑结构 存储结构 顺序表: 优点:支持随机存取、存储密度高 缺点:大片连续空间分配不方便,改变容量不方便 链表: 优点:离散的小空间分配方便,改变容量方便 缺点:不可随机存取,存储密度低 基本…

VS Code C++迎来套件更新,注释定义方便快捷

近日微软对VS Code C进行套件的更新,新加入名为“Call Hierarchy”的功能,而这个**ERP**功能可以让用户更加直观地理解代码函数之间的引用关系,同时该版本还让开发者更容易复制注释与定义,提升此类内容编写时的自由度。 据悉&am…

EIA-CEA-861-D协议分享(免费)

https://pan.baidu.com/s/1oIhTUm4dc3ZtKCohxvH3bA k3j8

win10系统ISE14.7仿真报错Simulator:861 – Failed to link the design 解决办法

解决方法很简单,亲测有效 找到安装文件夹,依次找到Xilinx\14.7\ISE_DS\ISE\gnu\MinGW\5.0.0\nt\libexec\gcc\mingw32\3.4.2 下的collect2文件即可。

ISE自带仿真器报错:ERROR:Simulator:861 – Failed to link the design 解决办法

Win 10 64bit实测有效 原文链接 http://irootlee.com/isim/ 以下原文: 问题综述: 我使用的是windows 10 32位专业版系统,电脑装的是ISE14.4版本,当我用此ISE自带的仿真器ISIM来仿真时,仿真器总是报错ERROR:Simulat…