修改/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. 最快的BT软件rtorrent Step by Step指南

    原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=165069 rtorrent是linux下最快的bt下载软件,由于支持DHT网络,可以很好的于迅雷和B ...

  2. HTML5中的Web Storage(sessionStorage||localStorage)理解与简单实例

    Web Storage是什么? Web Storage功能,顾名思义,就是在Web上针对client本地储存数据的功能,详细来说Web Storage分为两种: sessionStorage: 将数据 ...

  3. Spring+Quartz实现文件中转站

    其实这个功能QQ邮箱就有,为什么还要自己开发一个呢?因为有的文件非常重要...其实是客户要求... 那么我们先来看一下QQ的界面: 我们设计的界面: 文件要到期了是否通知用户?这里我们支持邮件及短信方 ...

  4. Struts2 无后缀action请求

    如果将Struts2的filter-mapping配置成 <filter-mapping> <filter-name>struts2</filter-name> & ...

  5. 【BZOJ】【2626】JZPFAR

    KD-Tree 0.0找第k大…… 裸KD-Tree……跟之前那道找最近的k个点大同小异 一开始理解错:第K大是第K远……不是第K近……(Tunix你个sb 感觉容易出错的是0号点= =边界情况需要仔 ...

  6. Pytoch 抽取中间层特征方法

    定义一个特征提取的类: 参考pytorch论坛:How to extract features of an image from a trained model from torchvision.mo ...

  7. Objective-C-Category类别

    Object-C开发的时候有的时候会用到Category类,类似于Java和C#中扩展类,就是如果你觉得如果你觉得常用的方法在String中没有,可以根据业务需求和个人喜好写一个扩展类,然后在其中补充 ...

  8. 同一页面的两个Iframe,其中一个iframe获取另一个iframe内的iframe中的元素值

    公共父页面(主页面): <%@ page language="java" import="java.util.*" pageEncoding=" ...

  9. C++类模板的三种特化

    说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多.我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型: 二是特化为引用,指针 ...

  10. 刚開始学习的人非常有用:纯struts框架实现用户登陆

    本人新手一枚.也在学习ssh.高手建议从struts2開始学起,所以我就先仅仅用struts2写了一个demo.能够有助于理解struts2在项目中的作用. 首先简单了解一下struts2 的MVC模 ...