自定义wifidog 认证后跳转页面的设置

一般,当热点用户连接至该热点并成功通过认证后,将见到一个默认的认证后页面。这个页面将提示用户一些很有用的信息,如用户的原始请求地址、剩余的连接时间、连接结束时刻、热点管理员推送来的公告信息、系统提示信息及其他一些链接等。

热点管理员也可以自行制作任何式样和内容的自定义认证后页面,以满足不同的需求。在Wiwiz Web面板中(用户菜单 >> 我的热点 >> 热点设置)设置”自定义跳转URL“或”自定义HTML“后即可。之后,当热点用户连接至该热点并成功通过认证后,将见到这个热点管理员自定义的认证后页面。

我们也提供了开发接口供热点管理员在自定义认证后页面中调用,以实现和在默认认证后页面中相同的面向热点用户的提示信息。
我们提供两种接口,一种是URL参数;另一种是Javascript函数。详细的接口说明请参考以下内容。

1. URL参数:
url – 用户的原始请求地址
et – 连接结束时刻
rm – 剩余的连接时间

2. Javascript函数:
2.1. 准备工作
注意,调用Javascript函数前,
如果采用”自定义跳转URL”,则首先需要加入以下语句:

如果采用”自定义HTML”,则首先需要加入以下语句:

2.2. 可调用函数:
2.2.1. wiwizGetEndingTime() – 返回连接结束时刻。

2.2.2. wiwizGetRemaining() – 返回剩余的连接时间(秒数)。

2.2.3. wiwizShowCountdown(d, h, m, s) – 以倒计时方式显示剩余的连接时间。
参数说明: d, h, m, s分别代表日、小时、分钟、秒的分割字符。如不指定参数则使用默认分割字符。
调用用例: wiwizShowCountdown(" days ", " hours ", " minutes ", " seconds ");

2.2.4. wiwizCountdownNotice(tm, msg) – 设置倒计时提示消息。在连接结束前tm秒显示消息文本msg。
参数说明:
tm 连接结束前的秒数
msg 代表消息文本

2.2.5. wiwizGetBulletin() – 用于显示在Wiwiz Web面板编辑热点时设置的公告信息。

2.2.6. wiwizGetDisconnectLink() – 用于获取用户自主断开已认证连接的链接地址。
返回值说明:此函数将返回一个URL。此URL只可在用户的浏览器中请求,请求后的返回Response含义如下:

Response返回结果 含义
wiwiz_user_disconnect(0) 认证连接立即切断
wiwiz_user_disconnect(1) 认证连接无法立即切断,但即将会自动切断
wiwiz_user_disconnect(2) 连接不存在或已切断

使用例:

var url = wiwizGetDisconnectLink();
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
function wiwiz_user_disconnect(s) {
    switch(s) {
        case 0:
            alert("The connection will shutdown immediately.");
            break;
        case 1:
            alert("The connection will shutdown in seconds.");
            break;
        case 2:
            alert("The connection does not exist or already shut down.");
            break;
    }
}

2.3. 可重写函数:
2.3.1. 调用wiwizCountdownNotice()后,提示消息将按照默认式样显示。如果你需要定制显示的方式或式样,你可以重写一个叫做wiwizUpdateNotice(str)的函数。参数str代表消息的文本。
例如:

function wiwizUpdateNotice(str) {
    alert(str); //alert the message
}

2.3.2. 调用wiwizGetBulletin()后,公告信息将按照默认式样显示。如果你需要定制显示的方式或式样,你可以重写一个叫做 wiwizUpdateBulletin(title, content)的函数。参数title代表公告的标题,content代表公告的详细内容。
例如:

function wiwizUpdateBulletin(title, content)
    alert(title + "\n" + content); //alert the bulletin
}

2.3.3. 当接近超过流量限制时,wiwizTrafficAlert()函数将会被触发调用,你可以重写它以定制你的流量限制提示。

本文章由 http://www.wifidog.pro/2015/03/20/%E8%87%AA%E5%AE%9A%E4%B9%89wifidog%E8%AE%A4%E8%AF%81%E5%90%8E%E8%B7%B3%E8%BD%AC%E9%A1%B5%E9%9D%A2%E7%9A%84%E8%AE%BE%E7%BD%AE.html 整理编辑,转载请注明出处

WifiDog 配置参数视频详解

GatewayID default 

GatewayInterface br0
#GatewayAddress 192.168.1.1
GatewayPort 2060

HtmlMessageFile /opt/wifidog/etc/wifidog.html


AuthServer {
    Hostname                 www.wifidog.pro (Mandatory; Default: NONE) 
    SSLAvailable             no (Optional; Default: no; Possible values: yes, no)
    SSLPort                  443 (Optional; Default: 443)
    HTTPPort                 80 (Optional; Default: 80)
    Path                     /example/ (Optional; Default: /wifidog/ Note:  The path must be both prefixed and suffixed by /.  Use a single / for server root.)
    LoginScriptPathFragment  (Optional; Default: login/? Note:  This is the script the user will be sent to for login.)
    PortalScriptPathFragment (Optional; Default: portal/? Note:  This is the script the user will be sent to after a successfull login.)
    MsgScriptPathFragment    (Optional; Default: gw_message.php? Note:  This is the script the user will be sent to upon error to read a readable message.)
    PingScriptPathFragment    (Optional; Default: ping/? Note:  This is the script the user will be sent to upon error to read a readable message.)
    AuthScriptPathFragment    (Optional; Default: auth/? Note:  This is the script the user will be sent to upon error to read a readable message.)
}

AuthServer {
    Hostname auth.wifidog.pro
    SSLAvailable yes
    Path /
}

AuthServer {
    Hostname auth2.wifidog.pro
    SSLAvailable yes
    Path /
}


Daemon 1 


HTTPDMaxConn 10 


CheckInterval 60

ClientTimeout 5


TrustedMACList 00:00:DE:AD:BE:AF,00:00:C0:1D:F0:0D


FirewallRuleSet global {

    FirewallRule block to 192.168.0.0/16
    FirewallRule block to 10.0.0.0/8
    FirewallRule allow udp to 69.90.85.0/27
    FirewallRule allow tcp port 80 to 69.90.89.205

}


FirewallRuleSet validating-users {
    FirewallRule allow to 0.0.0.0/0
}


FirewallRuleSet known-users {
    FirewallRule allow to 0.0.0.0/0
}


FirewallRuleSet unknown-users {
    FirewallRule allow udp port 53
    FirewallRule allow tcp port 53
    FirewallRule allow udp port 67
    FirewallRule allow tcp port 67
}

FirewallRuleSet locked-users {
    FirewallRule block to 0.0.0.0/0
}

本文章由http://www.wifidog.pro/2015/03/19/WifiDog%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E8%A7%86%E9%A2%91%E8%AF%A6%E8%A7%A3.html整理编辑,转载请注明出处

如何制作自定义wifidog认证页面

本文是新版的关于如何制作自定义认证页面的指南。此新版指南对制作自定义认证页面的方法做了很大的简化。认证的处理使用JavaScript进行了封装,用户无需再关心传入与传出的参数处理。同时,还支持用户使用自己的代码来自定义报错机制。

  • 尽管我们不推荐,但你依然可以参考旧版的指南来制作自定义认证页面。

你需要创建类似以下样例的页面作为自定义认证页面,并请阅读下面的“要点说明”:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<!-- 必须引入AuthPageScript.js -->
<script src="http://cp.wiwiz.com/as/AuthPageScript.js"></script>
<script>
/* 回调函数。“获取验证码”按钮按下后,将自动调用此函数。可根据code值自行改写该函数。 */
function WiwizSmsVerifyMsg(code) {
    if    (code == "-1") {
        alert("手机号码不可为空!");
    } else if(code == "0") {
        alert("验证码已通过短信发送至您的手机,请注意查收。然后请在认证页面输入验证码。");
    } else if(code == "1") {
        alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。");
    } else if(code == "2") {
        alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。");
    } else if(code == "3") {
        alert("该手机号码不允许进行验证。如有疑问请您联系热点管理员。");
    } else if(code == "4") {
        alert("手机号码验证过于频繁,请稍后再试。");
    } else if(code == "5") {
        alert("该手机号码进行验证次数已超过今日上限。");
    } else if(code == "6") {
        alert("热点认证服务已暂停,不可进行手机验证。");
    } else if(code == "7") {
        alert("该热点手机验证次数已超过配额。请联系热点管理员。");
    } else if(code == "8") {
        alert("请求已超时,请刷新认证页面。");
    } else if(code == "9") {
        alert("请使用上一次通过短信接收到的验证码。");
    } else if(code == "99") {
        alert("验证短信发送失败。请检查手机号码的有效性,或联系热点管理员。");
    } else if(code == "999") {
        alert("系统异常,验证短信发送失败。请联系热点管理员。");
    } else {
        alert("系统异常。请联系热点管理员。");
    }
}
/* 回调函数。“认证”按钮按下后,如报错将自动调用此函数。可根据code值自行改写该函数。 */
function WiwizAuthPageError(code) {
    if     (code == 1) {
        alert("您无法使用此网络,除非您认同此协议条款。");
    } else if(code == 2) {
        alert("请输入用户名。");
    } else if(code == 3) {
        alert("用户名或密码错误。");
    } else if(code == 4) {
        alert("电子招待券无效。");
    } else if(code == 5) {
        alert("超过该电子招待券的最大使用人数限制。");
    } else if(code == 6) {
        alert("超过最大在线用户数。");
    } else if(code == 7) {
        alert("请输入手机号码。");
    } else if(code == 8) {
        alert("热点已停用。");
    } else if(code == 32) {
        alert("账户存在异常,暂时锁定中。");
    } else if(code == 35) {
        alert("手机验证码错误或已超时。");
    } else if(code == 36) {
        alert("该手机号码不允许进行验证。如有疑问请您联系热点管理员。");
    } else if(code == 37) {
        alert("该手机号码进行验证次数已超过今日上限。");
    } else {
        alert("未知错误。错误码:"+ code);
    }
}
</script>
</head>
<body>
<form name="myform" id="myform" action="" method="post">
热点介绍文本<br>
使用协议与条款文本...... <br>
<!-- 以下各参数应根据热点的认证方式正确设置 -->
<!-- 参数: agree 代表认同协议 -->
<input name="agree" id="agree" type="checkbox" value="1"  />
<label for="agree">我认同协议</label>
<br>
<!-- 参数: username 代表用户名 -->
用户名:
<input name="username" id="username" type="text" value="" />
<br>
<!-- 参数: pswd 代表密码 -->
密码:
<input name="pswd" id="pswd" type="password" />
<br>
<!-- 参数: encrypt 代表是否对密码加密 -->
<input name="encrypt" id="encrypt" type="checkbox" value="1" checked /><label for="encrypt">加密密码</label>
<br>
<!-- 参数: voucher 代表电子招待券 -->
电子招待券:
<input name="voucher" id="voucher" type="text" />
<br>
<!-- 参数: phonenum 代表手机号码 -->
手机号码:
<input name="phonenum" id="phonenum" type="text" value="" />
<!-- 用于取得发送手机验证码短信的按钮,onclick事件必须调用WiwizSmsVerify()函数
    WiwizSmsVerify()参数说明:
    参数1(必须): 手机号码
    参数2(必须): HotSpot ID
 -->
<input type="button" value="获取验证码" onclick="WiwizSmsVerify(document.getElementById('phonenum').value, WiwizGetQueryParameter('gw_id'));" />
<br>
<!-- 参数: phonecode 代表手机验证码 -->
手机验证码:
<input name="phonecode" id="phonecode" type="text" value="" />
<br>

<!-- 参数: userstring 代表自定义追踪信息 -->
<input name="userstring" id="userstring" type="HIDDEN" value="" />

<!-- 用于开始触发认证的按钮,onclick事件必须调用WiwizStartAuth()函数 -->
<input type="button" name="login" value="   认证   " onclick="WiwizStartAuth();" />
<br>
<!-- 以下是一些非必须的可选链接 -->
<a href="#" onclick="window.open('http://cp.wiwiz.com/as/s/viewhotspot/?gw_id='+ WiwizGetQueryParameter('gw_id')); return false;">更多信息</a>
<a href="http://cp.wiwiz.com/as/s/register/" target="_blank">注册</a>
<a href="http://cp.wiwiz.com/as/s/remindpswd/" target="_blank">忘记密码?</a>
</form>
</body></html>

[要点说明]

  1. 页面HTML代码中必须通过script标签引入AuthPageScript.js。如果你使用的是“自定义认证页面HTML”(而不是“自定义认证页面URL”),那么它的路径应该是”/as/AuthPageScript.js”。
  2. 认证页面样式可自由定义。但用于认证的各表单域必须被包含。包含的用于认证的表单域应与设置热点时的认证规则一致。
  3. “获取验证码”按钮按下时,需调用WiwizSmsVerify()函数方可发送短信。调用后,系统将会自动调用WiwizSmsVerifyMsg()回调函数。用户可根据需要对函数内容由自由重写。
  4. “认证”按钮按下时,需调用WiwizStartAuth()函数方可进行认证。调用后,如有错误,系统将会自动调用WiwizAuthPageError()回调函数。用户可根据需要对函数内容由自由重写。如果没有错误,则自动调用函数WiwizBeforeAuthDone(),它也可以重写。最后,认证通过并跳转到“认证后页面”。

本文章由 http://www.wifidog.pro/2015/03/19/wifidog%E8%AE%A4%E8%AF%81%E9%A1%B5%E9%9D%A2%E5%88%B6%E4%BD%9C.html 整理编辑,转载请注明出处

wifidog安装wifidog疑难问题排查

1. 我将Wiwiz HotSpot Builder Utility安装到了DD-WRT设备,但是当我打开浏览器后没看到热点的认证页面,而是可以浏览任意网页。
可能的原因是:

  1. 你的DD-WRT版本并不包含Wifidog组件。
  2. 你的DD-WRT设备没有用WAN口接入Internet。
  3. 你的DD-WRT版本存在BUG,不兼容的设备,内核模块不完整或可用内存不足。

2. 我安装了Wiwiz HotSpot Builder Utility,但是显示的认证页面并不是我在Wiwiz Web面板设置的。
需要注意,在安装配置Wiwiz HotSpot Builder Utility的时候,一定要输入正确的Hotspot ID与User Name。否则,显示的热点认证页面将是默认的样例页面。

3. 我将Wiwiz HotSpot Builder Utility安装到了Linux计算机,并且用WiFi终端也能正常连接。但打开浏览器后却看不到认证页面。
如果你使用无线路由器作为AP,你需要禁用无线路由器上的DHCP与UPNP服务,并且你还需要在你的Linux计算机上正确配置并启动DHCP服务。

4. 我使用虚拟机方式安装的Wiwiz HotSpot Builder Utility,并且用WiFi终端也能正常连接。但打开浏览器后却不能打开任何网页。
可能的原因是,
你的宿主机与你的无线路由器之间并不是通过网线连接的;
你的VMWare软件没有正确的配置虚拟网络设置、没有建立可用的NAT虚拟网络,或错误的防火墙策略导致NAT网络不通等。请检查VMWare软件的相关设置;
也有可能是你的网络的其他设置或防火墙等因素导致DNS解析异常。你可尝试在重新安装设置Wiwiz HotSpot Builder Utility,并在指定DNS的步骤时指定第三方的DNS服务器地址,例如Google的8.8.8.8或您的ISP提供的DNS地址。
此外,请使用官方版本的VMWare软件。部分非官方版本可能会导致异常。

5. 如何禁用Wiwiz HotSpot Builder Utility?
如果你是在支持DD-WRT的设备上安装的,执行以下命令:
/jffs/usr/local/hsbuilder/hsbuilder_setup4dd-wrt.sh disable
然后重启DD-WRT设备。

如果你是在Linux计算机或虚拟机内安装的,执行以下命令:
/usr/local/hsbuilder/hsbuilder_setup.sh disable

6. 如何卸载Wiwiz HotSpot Builder Utility?
如果你是在支持DD-WRT的设备上安装的,执行以下命令:
/jffs/usr/local/hsbuilder/hsbuilder_setup4dd-wrt.sh -dest /jffs uninstall
然后重启DD-WRT设备。

如果你是在Linux计算机或虚拟机内安装的,执行以下命令:
/usr/local/hsbuilder/hsbuilder_setup.sh uninstall

7. 在DD-WRT中安装Wiwiz HotSpot Builder Utility时,当执行
“cd /jffs; tar -zxf /tmp/root/hsbuilder-util-latest-DD-WRT.tar.gz”后,遇到以下错误信息:
tar: can’t open ‘/tmp/root/hsbuilder-util-latest-DD-WRT.tar.gz’: No such file or directory

你可能没有将你的DD-WRT设备接入Internet,或暂时下载失败。请确认DD-WRT设备接入Internet后再次尝试。

8. 在DD-WRT中安装Wiwiz HotSpot Builder Utility时,当执行
“/jffs/usr/local/hsbuilder/hsbuilder_setup4dd-wrt.sh -dest /jffs setup”后,遇到以下错误信息:
-sh: /jffs/usr/local/hsbuilder/hsbuilder_setup4dd-wrt.sh: not found

你的DD-WRT不支持JFFS2,JFFS2分区的剩余空间不足,或者没有启用JFFS2支持。
请使用正确的DD-WRT版本以支持JFFFS2,启用它并确保JFFS2分区有足够的剩余空间。

9. 在DD-WRT/OpenWrt中成功安装了Wiwiz HotSpot Builder Utility,在终端访问网页会显示认证页面,但认证之后立即访问其他网页依然会再次显示认证页面,如此循环。
可能的原因是,你的DD-WRT/OpenWrt存在设置冲突(例如开启了自带的QOS功能)。或者,你使用的DD-WRT/OpenWrt固件版本存在BUG,不兼容的设备,内核模块不完整或可用内存不足等。

10. 用虚拟机安装了Wiwiz,最初一切正常,但有时会出现网页不能打开的情况,重启虚拟机依然无效,重启宿主机(物理机)才能恢复。
我们提供的虚拟机镜像是用VMWare程序创建的。默认设置下,其eth0网卡访问Internet依赖宿主机的VMWare NAT Service(Windows系统服务)。但是,部分版本的VMWare程序的VMWare NAT Service可能存在缺陷,导致Internet访问,尤其是DNS解析存在不稳定。一个解决建议是,可以定时重启用VMWare NAT Service。例如,通过添加Windows计划任务,定时执行以下内容的BAT文件:
net stop "VMWare NAT Service"
net start "VMWare NAT Service"

本文章由http://www.wifidog.pro/2015/03/19/wifidog%E5%AE%89%E8%A3%85%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94.html整理编辑,转载请注明出处