2015年1月

在OpenWrt中安装Wifidog

  1. 系统需求
    硬件
  • 已安装了OpenWrt固件的无线路由器(典型的有Linksys WRT54G系列)
    软件

  • Wifidog
    你可以尝试执行以下命令安装Wifidog:

    opkg update # Optional
    opkg install wifidog

将无线路由器接入Internet。
设置并启用无线网络,即,使用无线路由器创建一个可用的Access Point。

  1. 在Web控制面板中创建热点
    登录到Web控制面板,访问http://cp.wiwiz.com/as/s/menu
    点击“我的热点”,在接下来的页面中点击“创建热点”。根据页面的提示完成各项设置,点击保存。
    你将会看到你刚创建热点的Hotspot ID。记下它,接下来的步骤将会用到它。

  2. 安装与设置HotSpot Builder Utility组件
    将一台PC机连接至你的无线路由器,用SSH方式连接到无线路由器。执行以下命令:

    cd; wget http://dl.wiwiz.com/hsbuilder-util-latest-OpenWrt.tar.gz
    cd /; tar -zxf /root/hsbuilder-util-latest-OpenWrt.tar.gz
    /usr/local/hsbuilder/hsbuilder_setup4openwrt.sh setup

然后按照提示完成设置。
特别地,你需要输入的Hotspot ID就是你在Web控制面板中创建的热点的Hotspot ID(不是热点的名称)。User Name是你在控制面板注册的用户名。

提示:
安装时你将会被提示输入External NIC 与 Internal NIC。External NIC 代表的是连接Internet的网络接口。Internal NIC 代表的是连接局域网的网络接口。如果你不确定,可以执行ifconfig命令,并从执行结果中找到它们。

现在,如果没有报错信息,那么安装已经完成了。
你可以使用一个Wi-Fi客户端(如带WLAN适配器的PC或者支持Wi-Fi的移动电话)测试一下你的热点:

  • 搜索可用Wi-Fi热点,并连接到你的热点。
  • 打开Web浏览器,输入任何一个HTTP开头的网址。如果你的热点的认证页面能够显示出来,就说明你的热点已经正常运转了。

本文章由 http://www.wifidog.pro/2015/01/19/openwrt-wifidog-1.html整理编辑,转载请注明出处

wifidog中命令组合代码测试

wifidog中命令组合代码测试,有需要的朋友可以参考下

/*************************************************************************
    > File Name: test.c
    > Author: NULL
    > Mail: 574889524@qq.com
    > Created Time: 2014年11月21日 星期五 20时22分18秒
 ************************************************************************/

#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include<stdio.h>
#define TABLE_WIFIDOG_TRUSTED "WiFiDog_$ID$_Trusted"

int safe_vasprintf(char **strp,const char *fmt,va_list ap)
{
    int retval;
    retval = vasprintf(strp,fmt,ap);
    if(retval == -1){
        printf("FAIL\n");
        exit(-1);
    }
    return retval;
}
int safe_asprintf(char **strp,const char *fmt,...)
{
    va_list ap;
    int retval;
    va_start(ap,fmt);
    retval = safe_vasprintf(strp,fmt,ap);/*这里要给strp分配内存*/
    va_end(ap);
    return retval;
}

int iptables_do_command(const char *format,...)
{
    va_list vlist;
    char *fmt_cmd;
    char *cmd;

    va_start(vlist,format);
    safe_vasprintf(&fmt_cmd,format,vlist);/*将每个参数组合到一起*/
    va_end(vlist);
    safe_asprintf(&cmd,"iptables %s",fmt_cmd);/*格式化输入到cmd*/
    printf("%s\n",cmd);
    free(fmt_cmd);/*释放两次分配的空间*/
    free(cmd);
    return 0;
}
int main()
{
    iptables_do_command("-t mangle -N " TABLE_WIFIDOG_TRUSTED);
    /*两个字符串合并,组成一个字符串*/
    return 0;
}

输出:

iptables -t mangle -N WiFiDog_$ID$_Trusted

本文章由 http://www.wifidog.pro/2015/01/19/wifidog%E5%91%BD%E4%BB%A4.html 整理编辑,转载请注明出处

ddwrt+wifidog搭建热点认证系统(无线路由器web认证)

先来说说什么是热点认证系统,如果你有用过酒店或者机场的wifi,当你连上网络后试图去浏览某些页面的时候就会被从定向到一个特定的页面要求你登录啊什么的,是的,这就是热点登陆系统,可能也可以叫做wifi login portal。不过是什么,如果你理解了这概念,或者觉得有用,那么我们就来实际的搭建一下吧。
准备工作:
1、一个支持ddwrt的路由器,关于如何得到这个路由器以及那些是兼容的请上ddwrt官网自行搜索,个人比较推荐的是上tb买个二手的linksys wrt54g的路由器,一般这样的一个机器都有被改造过,扩充flash容量以便能安装完全版的ddwrt固件。所以下文将不会讲如何安装ddwrt固件,其实我只是自己也没安装过罢了。。
2、internet环境(其实不连应该也没什么关系,不过我没测试过)。首先有一点很重要的是,如果你把路由器只接个lan口当做交换机来用的话是无法成功的,所以这里我们必须在wan口上插根网线,并在设置里配置好二级路由,开启dhcp服务。
3、一台机器,通过lan口连接路由器,用来配置鉴权服务器。
准备完成后,举例配置如下:
ddwrt路由器 ip:192.168.11.1
鉴权服务器ip:192.168.11.128
就可以进行配置了。先配置服务器吧,wifidog官网上说使用了新的验证服务器authpuppy,于是就下载之,之后如果你想省去麻烦的php和mysql等等配置工作,建议直接使用xampp。
然后把解压的文件夹authpuppy扔到xampp默认的访问目录htdocs下,修改authpuppy部分目录的权限(详细的参看官网设置,这里就整个目录777了)。
开打浏览器输入localhost/authpuppy/web/后来到安装页面,根据要求安装就是了,这部应该没什么问题,需要你建立数据库就按照要求建个就是了,用户名则可以随便分配。
安装完之后用新建的管理员账号登陆,选择manage node,新建一个node,注意这里有个GW ID的设置,随便设个,但必须在路由器端的wifidog设置中也使用这个id,不然无法进行认证。到此为止鉴权服务器的简单功能应该算是配置完成了,之后加入复杂的功能等等则可以通过官网提供的插件和api或者自己看源码理解,可能我下次会说到,这里就不提了。
接着是路由器的配置,点开"服务"标签,二级标签选"热点",在里面会看到被禁用的狗狗,开启之,依下设置(图片稍后奉上):
网管ID,就是前面服务器设的那个GW ID
服务器名,随意了
下面一些默认不要动
鉴权服务器主机名,安装authpuppy服务器的ip地址192.168.11.128
SSL服务禁用
端口,还是看你服务器的配置,默认是80。
鉴权服务器路径,/authpuppy/web/
填写完成后按应用就可以了。这时候你可以登录到路由器上的wifidog看看dog是否正常工作。在浏览器中输入:192.168.11.1:2060/wifidog/status
状态如图(继续稍后。。。)就说明成功了,不过此时还有一部非常重要的事要做,那就是进入路由器管理菜单,重启路由器,之前一直由于这个原因搞了我很久。
测试,随便找个带wifi的电脑或手机,连上我们设的热点后,任意访问个页面,此时如果页面成功跳转了那么便大功告成,没有的话检测看看原因,一般如果wifidog状态正常的话是不会出问题的。
over~其实配置起来还是蛮简单的,关键还是在于后续的开发和管理上面

本文章由 http://www.wifidog.pro/2015/01/19/ddwrt-wifidog.html 整理编辑,转载请注明出处

wifidog 配置,实现强制网关跳转

最开始想用openwrt,刷了一个,结果发现不会用,里面的配置太复杂了,被wan lan搞晕了,一直无法联网,因为在公司路由器本来就在一个局域网下,没办法请公司SA帮忙搞了下,也没有搞定,换DDWRT吧,这个可是有中文页面的,顿时亲了很多。

ddwrt确实方便很多了,不过一定要注意呀,因为我要用WIFIDOG,之前下了几个版本都没有wifidog的配置,好像可以自己装,没试过,因为最开始测试用的wiwiz,下载到路由器上以后,没法安装,最后直接下了dd-wrt.v24_nokaid_generic.bin这个版本的ddwrt,上面可以直接配置wifidog.org相当的方便。

wifidog认证服务用authpuppy.org,web服务配置(nginx)

if(!-e$request_filename){
    rewrite^(.*)/index.php last;
}

ddwrt=>services=>hotspot

gateway id这个很重要,认证服务需要这个

服务器路径一定要注意哈,加/,这个最开始老是不对,研究了很久。发现原来路径里面少了个/,导致无法访问到正确的认证接口,如果是路径的最后还要多加个/哦。亲

认证服务配置
nodes页面里面加一个node,默认会有一个的啦。定义gw_id 就是刚才ddwrt wifidog里面配置的那个。
然后去下载一个plugin,做验证的,apAuthLocalUserPlugin,就它了吧。安装以后里面可以配置,页面信息,注册等等。
现在客户端连接上你的WIFI,去测试下吧,应该可以了哦,亲。
下面说下自己开发wifidog服务接口的问题。
我只实现了4个接口地址,不晓得其他的还有那些哈。E文看的不是很懂,需要的自己可以看http://dev.wifidog.org/wiki/doc/developer/WiFiDogProtocol_V1

/login这个是连接的时候访问的登陆接口,登陆成功以后,返回一个302转向到http://gw_server:gw_port/wifidog/auth?token=xxx,你的token,这样子就可以了。至于是否需要用户名密码等登陆方法。看你自己咯。

/auth这个接口太重要了,之前各种没法验证的原因都是因为没有访问到这个,路由器在刚才拿到login的token之后,会再次访问这个接口,带上一些其他参数如ip/mac等,当然也包括token,服务器可以再次做验证,这个接口的重要是返回给路由器成功与否,结果如下:
Auth: Number
Number如下:
0-AUTH_DENIED
6-AUTH_VALIDATION_FAILED
1-AUTH_ALLOWED
5-AUTH_VALIDATION
-1-AUTH_ERROR
返回1是成功了。

/ping这个接口很简单,返回结果内容包含Pong字符串就可以了。
/port哦,这个还是有点重要的,是认证通过之后,路由器自动定向的页面,当然如果你需要返回到用户之前的页面,在/login接口的时候,路由器传入了一个url地址,那个是用户真的想访问的地址哈。

本文章由 http://www.wifidog.pro/2015/01/19/wifidog%E8%B7%B3%E8%BD%AC.html 整理编辑,转载请注明出处