分享wifidog的增强版: wifidogx

wifidogx是wifidog的一个改进版本,使用单线程和epoll提高性能,支持新的认证通信协议、IPSet防火墙规则管理、HTTPS通信以及lua开发。它克服了wifidog的多线程架构问题、通信协议简单、不支持HTTPS等问题。文章介绍了如何下载、编译和运行wifidogx,以及配置文件和通信协议的详细信息。此外,wifidogx支持简单的静态文件服务,目前处于alpha阶段,作者承诺会持续维护。
摘要由CSDN通过智能技术生成

j同学前阵子有段时间在维护wifidog,然后就重复发明了个轮子:wifidogx。当然也不能算完全重复,j同学认为以下几方面wifidog做的不是很好:

  • 多线程的架构欠佳,性能不强,健壮性也不好,坑还多。(LOCK_CLIENT_LIST,LOCK_CLIENT_LIST,LOCK_CLIENT_LIST,讨厌的事情也说三遍)。
  • 通信协议过于简单,与服务端交互效率不高,服务端的远程控制能力也不好。
  • 在已认证用户比较多的时候,对mac地址进行逐一规则匹配会降低路由器的包处理能力。不过j同学目前还没有实验数据。
  • 不支持https。
  • c语言开发效率低。虽然比j同学更懒的人不多,但是反复枯燥的交叉编译-远程复制-opkg install,即便是勤奋的你也会厌烦的。

wifidogx差不多克服了上面所有的缺点,来掰一掰吧:

  • 单线程架构,采用epoll来支持并发。
  • 采用新的认证通信协议。
  • 提供以ipset的方式进行防火墙规则管理(需要6.22及以上版本,并且j同学目前还不知道怎么做流量统计)。
  • 与认证服务器的通信支持https。
  • 全部用lua开发。
  • 以及一个小小的bonus: 支持简单的静态文件服务。
    wifidogx目前处于alpha版本,可能bug还比较多,但是j同学会一直维护。另外,wifidogx采用MIT许可证。

下载,编译,运行

wifidogx依赖于j同学开发的一个基于lua的工具包[lask](https://github.com/spyderj-cn/lask)。 lask导出了常用的posix api,并提供了一个异步通信框架。
下载
git clone https://github.com/spyderj-cn/wifidogx.git
编译
Wifidogx中(只)包含了支持openwrt的makefile文件,将源码包放在某个src-link的的目录下即可。 同wifidog一样,wifidogx也在menuconfig的/Network/Captive Portals栏目下。

本质上wifidogx不需要编译,其编译实际上是安装过程。

运行
启动
/etc/init.d/wifidogx start
停止
/etc/init.d/wifidogx stop

目前不支持restart哦


Wifidogx详细的启动参数
选项 含义
-a 认证路径,会覆盖配置文件中的AuthURL
-c 配置文件路径,默认为/etc/wifidogx.conf
-f 不要以守护进程的方式运行
-p 日志路径
-l 日志等级
-t 测试配置文件是否正确
-I 初始化防火墙规则后退出
-D 销毁防火墙规则后退出
-h 帮助信息
-v 显示版本
wdxctl(对应wdctl)工具
命令 作用
clients 获取连接了wifi的用户信息
jclients 获取连接了wifi的用户信息(json输出)
logread 当日志保存在wifidogx内存中时,读取日志
logcapture 截获日志
start wifidogx异常退出后,会将traceback和日志分别保存到/tmp/wifidogx.traceback和/tmp/wifidogx.logdump,然后执行wdxctl start。wdxctl start先尝试将错误信息文件POST到指定的bugreport_url,然后删除文件,接着执行/etc/init.d/wifidogx start。

可以修改wdxctl.lua的BUGREPORT_URL为你的服务器URL, 也可以设置为false或者nil来禁用此功能。


文件服务

wifidogx启动后检查/tmp/wifidogx-www是否存在,如果不存在则将/etc/wifidogx-www下的所有内容 复制到/tmp/wifidogx-www,并以/tmp/wifidogx-www为docroot开启文件服务。 如果来访的URL是“/wifidogx-static/*”格式则视其为请求静态文件。 当错误发生时,wifidogx自动回送/tmp/wifidogx-www目录下的以下文件
文件名 错误原因
netdown.htm 外网不通
serverunreach.htm 有外网但认证服务器连不上
servererror.htm 服务器返回的数据不对
internalerror.htm 路由器系统/wifidogx 内部错误,如arp表中根据来访的ip找不到mac
在后续和服务器的通信中,如果服务器的应答配置了StaticGZ
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值