wifidog用php實(shí)現(xiàn)驗(yàn)證流程

1.首先簡(jiǎn)單說說wifidog認(rèn)證的過程

客戶端首次連接到wifi后,瀏覽器請(qǐng)求將會(huì)被重定向到:

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

驗(yàn)證通過后,客戶端被重定向到網(wǎng)關(guān),url格式如下:

http://網(wǎng)關(guān)地址:網(wǎng)關(guān)端口/wifidog/auth?token=xx,

wifidong會(huì)啟動(dòng)一個(gè)線程周期性地報(bào)告每一個(gè)用戶的狀態(tài)信息肉拓,并通過如下地址發(fā)送給認(rèn)證服務(wù)器:

auth_server:/auth/?stage=

ip=

mac=

token=

incoming=

outgoing=

認(rèn)證服務(wù)器根據(jù)該狀態(tài)信息決定是否允許該用戶繼續(xù)連接御板,并回復(fù)網(wǎng)關(guān)茁肠,回復(fù)格式為:Auth:狀態(tài)碼季惩,

如: Auth:1

常用狀態(tài)碼:

0:AUTH_DENIED,表示拒絕

1:AUTH_ALLOWED掘剪,驗(yàn)證通過

驗(yàn)證通過后平委,將重定向到如下地址:

portal/?gw_id=%s

wifidog的ping協(xié)議:

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

http://auth_sever/ping/?

gw_id=%s

sys_uptime=%lu

sys_memfree=%u

sys_load=%.2f

wifidog_uptime=%lu

認(rèn)證服務(wù)器須返回一個(gè)“ Pong ”作為回應(yīng)夺谁。

具體php實(shí)現(xiàn)代碼如下

public function auth()

{

//響應(yīng)客戶端的定時(shí)認(rèn)證廉赔,可在此處做各種統(tǒng)計(jì)、計(jì)費(fèi)等等

/*

wifidog 會(huì)通過這個(gè)接口傳遞連接客戶端的信息匾鸥,然后根據(jù)返回蜡塌,對(duì)客戶端做開通、斷開等處理勿负,具體返回值可以看wifidog的文檔

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

1.ip

2. mac

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

4.incoming 下載流量

5.outgoing 上傳流量

6.stage? 認(rèn)證階段馏艾,就兩種 login 和 counters

*/

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

if($stage == 'login')

{

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

//默認(rèn)返回 允許

echo "Auth: 1";

}

else if($stage == 'counters')

{

//做一個(gè)簡(jiǎn)單的流量判斷驗(yàn)證,下載流量超值時(shí)奴愉,返回下線通知琅摩,否則保持在線

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(用戶郵件驗(yàn)證超時(shí),防火墻關(guān)閉該用戶)

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 (用戶郵件驗(yàn)證時(shí)锭硼,向用戶開放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請(qǐng)求 "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ū)分不同的路由設(shè)備

2.sys_uptime 路由器的系統(tǒng)啟動(dòng)時(shí)間

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

4.wifidog_uptime wifidog持續(xù)運(yùn)行時(shí)間(這個(gè)數(shù)據(jù)經(jīng)常會(huì)有問題)

*/

//返回值

echo 'Pong';

}

/**

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

*/

function gw_message()

{

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

switch ($_REQUEST["message"]) {

case 'failed_validation':

//auth的stage為login時(shí)账忘,被服務(wù)器返回AUTH_VALIDATION_FAILED時(shí)志膀,來到該處處理

//認(rèn)證失敗,請(qǐng)重新認(rèn)證

break;

case 'denied':

//auth的stage為login時(shí)鳖擒,被服務(wù)器返回AUTH_DENIED時(shí)溉浙,來到該處處理

//認(rèn)證被拒

break;

case 'activate':

//auth的stage為login時(shí),被服務(wù)器返回AUTH_VALIDATION時(shí)蒋荚,來到該處處理

//待激活

break;

default:

break;

}

}else{

//不回顯任何信息

}

}

本文由http://www.wifidog.pro/2015/01/21/wifidog-php.html?整理編輯戳稽,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市期升,隨后出現(xiàn)的幾起案子惊奇,更是在濱河造成了極大的恐慌,老刑警劉巖播赁,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂郎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡容为,警方通過查閱死者的電腦和手機(jī)乓序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坎背,“玉大人替劈,你說我怎么就攤上這事〉寐耍” “怎么了陨献?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)懂更。 經(jīng)常有香客問我眨业,道長(zhǎng),這世上最難降的妖魔是什么沮协? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任坛猪,我火速辦了婚禮,結(jié)果婚禮上皂股,老公的妹妹穿的比我還像新娘墅茉。我一直安慰自己,他們只是感情好呜呐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布就斤。 她就那樣靜靜地躺著,像睡著了一般蘑辑。 火紅的嫁衣襯著肌膚如雪洋机。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天洋魂,我揣著相機(jī)與錄音绷旗,去河邊找鬼喜鼓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛衔肢,可吹牛的內(nèi)容都是我干的庄岖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼角骤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼隅忿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邦尊,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤背桐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蝉揍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體链峭,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年又沾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了熏版。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捍掺,死狀恐怖撼短,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挺勿,我是刑警寧澤曲横,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站不瓶,受9級(jí)特大地震影響禾嫉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚊丐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一熙参、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧麦备,春花似錦孽椰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呛梆,卻和暖如春锐涯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背填物。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工纹腌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霎终,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓升薯,卻偏偏與公主長(zhǎng)得像莱褒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子覆劈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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