修改/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. 7. python 字符串格式化方法(2)

    7. python 字符串格式化方法(2) 紧接着上一章节,这一章节我们聊聊怎样添加具体格式化 就是指定替换字段的大小.对齐方式和特定的类型编码,结构如下: {fieldname!conversion ...

  2. 【elasticsearceh】elasticsearch.yml配置文件详解

    主要内容如下: cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个 ...

  3. EF Code First 学习笔记:表映射 多个Entity到一张表和一个Entity到多张表

      多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...

  4. 《Windows核心编程》第1章——错误处理

    GetLastError: GetLastError返回错误编码,即便出错函数后边跟随一个正确执行了的函数,也不会覆盖原先的错误代码: 考虑多线程的情况.子线程中的错误代码不会被主线程捕获: 但是子函 ...

  5. memcpy实现

    typedef unsigned int size_t; void * my_memcpy ( void *dest, const void *src, size_t num ) { void* re ...

  6. LinkedHashMap源码剖析

    首先还是类似的,我们写一个简单的LinkedHashMap的程序: public class Test { public static void main(String[] args) { Map&l ...

  7. Jungle Roads_hdu_1301(prim算法)

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  8. T-sql语句修改数据库逻辑名、数据库名、物理名

    --更改MSSQL数据库物理文件名Sql语句的写法 --注意:要在活动监视器里面确保没有进程连接你要改名的数据库!!!!!!!!!!!!!!!!!!!! -- Sql语句如下 USE master - ...

  9. j2ee model1模型完成分页逻辑的实现 详解!

    在显示用户全部信息的页面,在显示全部数据的时候,长长的滚动条,像是没有边界的天空一样, 让用户查看数据很不方便. 于是, 我们要把这些数据分页显示, 就像office的word一样,每页显示一定数量的 ...

  10. 解决Sqlserver 2008 R2在创建登录名出错"此版本的 Microsoft Windows 不支持 MUST_CHANGE 选项。 (Microsoft SQL Server,错误: 15195)"

    错误信息:   执行 Transact-SQL 语句或批处理时发生了异常. (Microsoft.SqlServer.ConnectionInfo)   此版本的 Microsoft Windows ...