wifidog 認證 php

1.首先簡單說說wifidog認證的過程

客戶端首次連接到wifi后毁枯,瀏覽器請求將會被重定向到:

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

驗證通過后暖释,客戶端被重定向到網(wǎng)關,url格式如下:

http://網(wǎng)關地址:網(wǎng)關端口/wifidog/auth?token=

wifidong會啟動一個線程周期性地報告每一個用戶的狀態(tài)信息抄伍,并通過如下地址發(fā)送給認證

服務器:

auth_server:/auth/?stage=

ip=

mac=

token=

incoming=

outgoing=

認證服務器根據(jù)該狀態(tài)信息決定是否允許該用戶繼續(xù)連接,并回復網(wǎng)關,回復格式為:Auth:狀態(tài)碼骚腥,

如:Auth:1

常用狀態(tài)碼:

0:AUTH_DENIED,表示拒絕

1:AUTH_ALLOWED瓶逃,驗證通過

驗證通過后束铭,將重定向到如下地址:

portal/?gw_id=%s

wifidog的ping協(xié)議

wifidog通過ping協(xié)議將當前狀態(tài)信息發(fā)送給認證服務器,發(fā)送地址為:

http://auth_sever/ping/?

gw_id=%s

sys_uptime=%lu

sys_memfree=%u

sys_load=%.2f

wifidog_uptime=%lu

認證服務器須返回一個“Pong”作為回應厢绝。

2.具體php實現(xiàn)代碼如下

public function auth()

{

? //響應客戶端的定時認證契沫,可在此處做各種統(tǒng)計、計費等等

? /*

? ? ? wifidog 會通過這個接口傳遞連接客戶端的信息昔汉,然后根據(jù)返回懈万,對客戶端做開通、斷開等處理靶病,具體返回值可以看wifidog的文檔

? wifidog主要提交如下參數(shù)

? 1.ip

? 2. mac

? 3. token(login頁面下發(fā)的token)

? 4.incoming 下載流量

? 5.outgoing 上傳流量

? 6.stage? 認證階段会通,就兩種 login 和 counters

? */

? $stage = $_GET['stage'] == 'counters'?'counters':'login';

? if($stage == 'login')

? {

? ? ? //XXXX跳過login 階段的處理XXXX不能隨便跳過的

? ? ? //默認返回 允許

? ? ? echo "Auth: 1";

? }

? else if($stage == 'counters')

? {

? ? ? //做一個簡單的流量判斷驗證,下載流量超值時娄周,返回下線通知涕侈,否則保持在線

? ? ? if(!empty($_GET['incoming']) and $_GET['incoming'] > 10000000)

? ? ? {

? ? ? ? ? echo "Auth: 0";

? ? ? }else{

? ? ? ? ? echo "Auth: 1\n";

? ? ? }

? }

? else

? ? ? echo "Auth: 0"; //其他情況都返回拒絕

? ? ?

? ? ? ?

? /*

? ? ? 返回值:主要有這兩種就夠了

? 0 - 拒絕

? 1 - 放行

? 官方文檔如下

? 0 - AUTH_DENIED - User firewall users are deleted and the user removed.

? 6 - AUTH_VALIDATION_FAILED - User email validation timeout has occured and user/firewall is deleted(用戶郵件驗證超時,防火墻關閉該用戶)

? 1 - AUTH_ALLOWED - User was valid, add firewall rules if not present

? 5 - AUTH_VALIDATION - Permit user access to email to get validation email under default rules (用戶郵件驗證時煤辨,向用戶開放email)

? -1 - AUTH_ERROR - An error occurred during the validation process

? */

}

public function portal()

{

? /*

? wifidog 帶過來的參數(shù) 如下

? 1. gw_id

? */

? //重定到指定網(wǎng)站 或者 顯示splash廣告頁面

? redirect('http://www.baidu.com', 'location', 302);

? ? ?

}

public function ping()

{

? //url請求 "gw_id=$gw_id&sys_uptime=$sys_uptime&sys_memfree=$sys_memfree&sys_load=$sys_load&wifidog_uptime=$wifidog_uptime";

? //log_message($this->config->item('MY_log_threshold'), __CLASS__.':'.__FUNCTION__.':'.debug_printarray($_GET));

? //判斷各種參數(shù)是否為空

? if( !(isset($_GET['gw_id']) and isset($_GET['sys_uptime']) and isset($_GET['sys_memfree']) and isset($_GET['sys_load']) and isset($_GET['wifidog_uptime']) ) )

? {

? ? ? echo '{"error":"2"}';

? ? ? return;

? }

? //添加心跳日志處理功能

? /*

? ? ? 此處可獲取 wififog提供的 如下參數(shù)

? 1.gw_id? 來自wifidog 配置文件中裳涛,用來區(qū)分不同的路由設備

? 2.sys_uptime 路由器的系統(tǒng)啟動時間

? 3.sys_memfree 系統(tǒng)內(nèi)存使用百分比

? 4.wifidog_uptime wifidog持續(xù)運行時間(這個數(shù)據(jù)經(jīng)常會有問題)

? */

? //返回值

? echo 'Pong';

}

/**

* wifidog 的gw_message 接口木张,信息提示頁面

*/

function gw_message()

{

? if (isset($_REQUEST["message"])) {

? ? ? switch ($_REQUEST["message"]) {

? ? ? ? ? case 'failed_validation':

? ? ? ? ? ? ? //auth的stage為login時,被服務器返回AUTH_VALIDATION_FAILED時调违,來到該處處理

? ? ? ? ? ? ? //認證失敗窟哺,請重新認證

? ? ? ? ? ? ? break;

? ? ? ? ? case 'denied':

? ? ? ? ? ? ? //auth的stage為login時,被服務器返回AUTH_DENIED時技肩,來到該處處理

? ? ? ? ? ? ? //認證被拒

? ? ? ? ? ? ? break;

? ? ? ? ? case 'activate':

? ? ? ? ? ? ? //auth的stage為login時且轨,被服務器返回AUTH_VALIDATION時,來到該處處理

? ? ? ? ? ? ? //待激活

? ? ? ? ? ? ? break;

? ? ? ? ? default:

? ? ? ? ? ? ? break;

? ? ? }

? }else{

? ? ? //不回顯任何信息

? }

}

本文由http://www.wifidog.pro/2015/01/28/wifidog-php-1.html整理編輯虚婿,轉載請注明出處

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旋奢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子然痊,更是在濱河造成了極大的恐慌至朗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剧浸,死亡現(xiàn)場離奇詭異锹引,居然都是意外死亡,警方通過查閱死者的電腦和手機唆香,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門嫌变,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躬它,你說我怎么就攤上這事腾啥。” “怎么了冯吓?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵倘待,是天一觀的道長。 經(jīng)常有香客問我组贺,道長凸舵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任失尖,我火速辦了婚禮贞间,結果婚禮上,老公的妹妹穿的比我還像新娘雹仿。我一直安慰自己,他們只是感情好整以,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布胧辽。 她就那樣靜靜地躺著,像睡著了一般公黑。 火紅的嫁衣襯著肌膚如雪邑商。 梳的紋絲不亂的頭發(fā)上摄咆,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音人断,去河邊找鬼吭从。 笑死,一個胖子當著我的面吹牛恶迈,可吹牛的內(nèi)容都是我干的涩金。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼暇仲,長吁一口氣:“原來是場噩夢啊……” “哼步做!你這毒婦竟也來了?” 一聲冷哼從身側響起奈附,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤全度,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斥滤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體将鸵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年佑颇,在試婚紗的時候發(fā)現(xiàn)自己被綠了顶掉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡漩符,死狀恐怖一喘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗜暴,我是刑警寧澤凸克,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站闷沥,受9級特大地震影響萎战,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舆逃,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一蚂维、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧路狮,春花似錦虫啥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砸抛,卻和暖如春评雌,著一層夾襖步出監(jiān)牢的瞬間树枫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工景东, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砂轻,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓斤吐,卻偏偏與公主長得像搔涝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子曲初,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容