修改/etc/wifidog.conf, 只需要修改文件的前半部分, 其他都保持默认

GatewayID default
GatewayInterface br-lan
GatewayAddress 192.168.1.1
AuthServer {
Hostname auth.mydomain.com
SSLAvailable no
HTTPPort
Path /wifidog/
LoginScriptPathFragment login.php?
PortalScriptPathFragment portal.php?
MsgScriptPathFragment message.php?
PingScriptPathFragment ping.php?
AuthScriptPathFragment auth.php?
}

其中
GatewayAddress wifidog所在路由的网关IP
Hostname: 提供验证服务的服务器
SSLAvailable, HTTPPort, Path 分别是验证服务对应的 是否可用https, 访问端口, 路径. 路径必须前后带'/'(如果是根目录则只有'/')
LoginScriptPathFragment 和上面的Path联合后得到的登录页地址
PortalScriptPathFragment 验证成功后的页面地址
MsgScriptPathFragment 消息页地址
PingScriptPathFragment 必须返回 Pong  --- 注意大小写一致
AuthScriptPathFragment 返回 Auth: 1 或 Auth: 0 代表验证通过/不通过

使用以下命令在前台启用wifidog, 可以看到详细的日志输出

wifidog -f

用户的访问顺序:

1. wifidog启动后, 会主动访问验证服务器

GET /wifidog/ping.php?gw_id=default&sys_uptime=&sys_memfree=&sys_load=0.77&wifidog_uptime= HTTP/1.0" 200 5 "-" "WiFiDog 1.3."

2. 用户连接wifi后, 会被引导至登录页

GET /wifidog/login.php?gw_address=192.168.1.1&gw_port=&gw_id=default&ip=192.168.1.110&mac=:0b:a9:a6:bb:ac&url=http%3A%2F%2Fwww.bt.net%2Fframes.do HTTP/1.1

3. 用户登录成功后, 会返回wifidog的验证页, 其域名, 端口来自于前面的参数, 而/wifidog/auth?token= 这个是固定的

http://192.168.1.1:2060/wifidog/auth?token=128273kisdud71oidj12

4. wifidog会拿token去验证服务器验证

GET /wifidog/auth.php?stage=login&ip=192.168.1.110&mac=:0b:a9:a6:bb:ac&token=&incoming=&outgoing=&gw_id=default HTTP/1.0" 200 8 "-" "WiFiDog 1.3."

5. 验证通过后, 用户浏览器再跳往 PortalScriptPathFragment 指定的地址

6. wifidog会定时去验证服务器验证访问有效性

GET /wifidog/auth.php?stage=counters&ip=192.168.1.110&mac=:0b:a9:a6:bb:ac&token=&incoming=&outgoing=&gw_id=default HTTP/1.0" 200 8 "-" "WiFiDog 1.3."

一个登录页的例子

<html>
<head>
<title>Login with Your Account</title>
</head>
<body>
<h2>Login</h2>
<?php
if (isset($_POST['user_name']) && isset($_POST['password'])) {
$user_name = $_POST['user_name'];
$password = $_POST['password']; if ($user_name == 'milton' && $password == '123123') {
$location = 'Location: http://' . $_POST['gw_address'] . ':' . $_POST['gw_port'] .'/wifidog/auth?token='.time();
echo $location;
header($location);
} else {
echo '<h1>Incorrect login.</h1><br>';
}
}
?>
<form action="login.php" method="post">
Username:<input type="text" name="user_name"/><br>
Password:<input type="password" name="password"/><br>
<?php
echo '<input type="hidden" name="gw_address" value="'. $_GET['gw_address'] . '"><br>';
echo '<input type="hidden" name="gw_port" value="'. $_GET['gw_port'] . '">';
?>
<input type="submit">
<pre>
<?php var_dump($_GET);?>
</pre>
</body>
</html>

OpenWrt中wifidog的配置及各节点页面参数的更多相关文章

  1. 如何在Silverlight应用程序中获取ASP.NET页面参数

    asp.net Silverlight应用程序中获取载体aspx页面参数 有时候SL应用中需要使用由aspx页面中传递过来的参数值,此时通常有两种方法获取 1. 使用InitParameters属性, ...

  2. asp.net中web.config配置节点大全详解

    最近网上找了一些关于Web.config配置节点的文章,发现很多都写的都比较零散,而且很少有说明各个配置节点的作用和用法.搜索了一下发现有一篇写的不错,这里引用一下 原文地址 http://www.c ...

  3. asp.net中web.config配置节点大全详解【转】

    web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web ...

  4. 配置树莓派3的openwrt中的网络

    在上一篇中讲到openwrt的编译安装: http://www.cnblogs.com/yeqluofwupheng/p/7296218.html 但是烧写进去,启动系统后发现它的默认配置是路由器,所 ...

  5. OpenWrt中开启usb存储和samba服务

    在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...

  6. WCF学习之旅—WCF4.0中的简化配置功能(十五)

    六 WCF4.0中的简化配置功能 WCF4.0为了简化服务配置,提供了默认的终结点.绑定和服务行为.也就是说,在开发WCF服务程序的时候,即使我们不提供显示的 服务终结点,WCF框架也能为我们的服务提 ...

  7. 转:openwrt中luci学习笔记

    原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发         ...

  8. log4net在Asp.net Mvc中的应用配置与介绍

    log4net在.NET中的地位就不多言语了,此篇文章着重配置.较少介绍使用.因为在网上你可以在网上搜到几十万的文章告诉你怎么用.安装的话也不废话了,很简单.Nuget里搜索一下"log4n ...

  9. 在Web.config或App.config中的添加自定义配置

    .Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置,所以忍 ...

随机推荐

  1. [转]关于适配iphone5,Invalid Launch Image的退信

    关于适配iphone5,Invalid Launch Image的退信 本人xcode 4.3,所开发客户端新版本准备提交,应用中做了关于iphone5的适配,然后打包提交.在提交审核的时候被拒,收到 ...

  2. 在VS 2010上搭建Windows Phone 7开发平台

      如今Windows Phone 7平台越来越火了,刚刚拿到一款新的Windows Phone,于是准备在电脑上搭建WP7的开发环境. 首先,安装VS2010,升级到SP1,并安装Windows P ...

  3. 算法:基于 RingBuffer 的 Queue 实现《续》

    背景 上篇实现了一个简单的队列,内部使用了 _count 计数,本文采用另外一种模式,不用 _count 计数. RingBuffer 不用 _count 计数的话,为了区分队列的满和空,需要在数组中 ...

  4. Dom4j学习笔记

    一.Loading XML Data 以下代码从File中或一个URL中读取一个XML文件,并产生一个Document对象.一个Document对象表示了内存中的一棵XML树,可以在这个XML树中进行 ...

  5. git 经常使用操作集锦

    创建仓库 新建普通仓库: jxdong@ubuntu-server:~/workspace/git$ git init Reinitialized existing Git repository in ...

  6. C预编译, 预处理, C/C++头文件, 编译控制,

    在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...

  7. ubuntu下如何查看软件安装目录以及安装版本

    1)aptitude show 软件名 例如aptitude show kde-runtime 显示如下 ****@ubuntu:~$ aptitude show kde-runtime 软件包: k ...

  8. [转]linux下完全备份数据库mysql

    #配置参数 USER=vimer_admin #数据库用户名 PASSWORD=dreamfly123 #数据库用户密码 DATABASE=vimer #数据库名称 WEBMASTER=@qq.com ...

  9. 【TYVJ 五月图论专项有奖比赛】

    最短路+TSP+最小生成树+倍增LCA+TreeDP 第一题 其实是个TSP问题(然而我没发现),但是关键点很少,只有5个,所以用dij+heap分别预处理出来这五个点为源的最短路…… 然后枚举起点 ...

  10. 在Java程序中使用Hibernate

    Hibernate是一种ORM框架,ORM全称为Object-Relative Database-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象(一般为实体类) ...