跳至內容

Wifidog路由接口文檔

維基教科書,自由的教學讀本

WIFIDOG路由接口文檔

概述

[編輯]

wifidog是搭建無線熱點認證系統的解決方案之一,他比nocat更適合網際網路營銷思路。目前支持openwrt系統,他實現了路由器和認證伺服器的數據交互,在路由器方是用C語言代碼,通過wifidog程序和linux iptables防火牆實現接入用戶的認證跳轉和控制,在認證伺服器方是通過php實現用戶的認證流程和管理。
優點:有開原始碼,可以很方便的搭建認證系統。
缺點:通過iptables方式實現,性能比較差,整體拉低了路由器的數據包處理速度,協議比較繁瑣,對認證伺服器的造成性能損耗比較大,在安全方面都是明文傳輸,有一定的安全隱患。

認證流程圖:

[編輯]

網關心跳協議

[編輯]

Wifidog將ping協議作為心跳機制向認證伺服器發送當前狀態信息。實現認證伺服器和每個節點的狀態雙向健康監測的機制。

請求信息格式:

[編輯]
http://auth_sever/ping/?
gw_id=%s
sys_uptime=%lu
sys_memfree=%u
sys_load=%.2f
wifidog_uptime=%lu

而請求封包的封包header如下

Headers
HTTP/1.0\r\n" 
"User-Agent: WiFiDog %s\r\n" 
"Host: %s\r\n" 
"\r\n",

User-Agent 會因為你的設定而改變

回復格式:

[編輯]

Pong

例子:

[編輯]
GET /ping/?gw_id=001217DA42D2&sys_uptime=742725&sys_memfree=2604&sys_load=0.03&wifidog_uptime=3861 HTTP/1.0
User-Agent: WiFiDog 1.1.3_beta6
Host: auth.ilesansfil.org

用戶狀態心跳協議

[編輯]

請求格式:

[編輯]
auth_server:/auth/index.php?
stage=
ip=
mac=
token=
incoming=
outgoing=

注意:

[編輯]

ip, mac, token為用戶的基本信息,incoming, outgoing為用戶的連接計數信息。

stage=counter|login|logout,分別表示:已認證、新認證用戶、超時需要刪除的用戶。

回復格式:

[編輯]

Auth: 狀態碼

(注意中間冒號和狀態碼之間有個空格)

狀態碼:

[編輯]
0 - AUTH_DENIED - 用戶已被刪除
6 - AUTH_VALIDATION_FAILED - Email驗證超時,用戶被刪除
1 - AUTH_ALLOWED - 合法用戶,若防火牆無記錄則新增
5 - AUTH_VALIDATION - 允許用戶接上信箱完成認證
-1 - AUTH_ERROR - 驗證失敗

例子:

[編輯]
GET /auth/?stage=counters&ip=7.0.0.107&mac=00:40:05:5F:44:43&token=4f473ae3ddc5c1c2165f7a0973c57a98&incoming=6031353&outgoing=827770 HTTP/1.0
User-Agent: WiFiDog 1.1.3_beta6
Host: auth.ilesansfil.org

跳轉協議

[編輯]

客戶端網頁會在以下幾種情況被跳轉。

第一次連上

[編輯]

剛連上,用戶會被重導向到以下URL進行驗證

  • login/?gw_address=%s&gw_port=%d&gw_id=%s&url=%s

例子

[編輯]
https://auth.ilesansfil.org/login/?gw_id=0016B6DA9AE0&gw_address=7.0.0.1&gw_port=2060

首次驗證後

[編輯]

一旦第一次驗證進行後,用戶會因以下狀況被跳轉到不同地方。

若伺服器回應 AUTH_DENIED: Note that you will normally never see that one in the standard auth server. The client won't be redirected back to the gateway.

  • gw_message.php?message=denied

若伺服器回應 AUTH_VALIDATION:

  • gw_message.php?message=activate

若伺服器回應 AUTH_ALLOWED: This is the portal redirect

  • portal/?gw_id=%s

若伺服器回應 AUTH_VALIDATION_FAILED: Note that you will normally never see that one in the standard auth server. The client won't be redirected back to the gateway.

  • gw_message.php?message=failed_validation

Browser redirects by the auth server

[編輯]

Upon successfull login, the client will be redirected to the gateway.  http://" . $gw_address . ":" . $gw_port . "/wifidog/auth?token=" . $token

Example URL  http://7.0.0.1:2060/wifidog/auth?token=4f473ae3ddc5c1c2165f7a0973c57a98

註冊協議

[編輯]

請求格式:

[編輯]

http://gw_ip/wifidog/auth? token=

例子:

[編輯]

GETwifidog/auth?token=12312412124 User-Agent:iphone Host:路由器ip 註冊請求成功,以307的方式跳轉平台的portal/?gw_id=