Wifidog的配置文件/etc/wifidog.conf,關(guān)鍵的配置項(xiàng)是:
AuthServer {
Hostname? ? ? ? ? ? (Mandatory; Default: NONE)
SSLAvailable? ? ? ? ? (Optional; Default: no; Possible values: yes, no)
SSLPort? ? ? ? ? ? ? (Optional; Default: 443)
HTTPPort? ? ? ? ? ? (Optional; Default: 80)
Path? ? ? ? ? ? ? ? ? (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.)
}
# Listen on this port
GatewayPort 2060
# Parameter: CheckInterval
# Default: 60
# Optional
#
# How many seconds should we wait between timeout checks.? This is also
# how often the gateway will ping the auth server and how often it will
# update the traffic counters on the auth server.? Setting this too low
# wastes bandwidth, setting this too high will cause the gateway to take
# a long time to switch to it’s backup auth server(s).
CheckInterval 60
# Parameter: ClientTimeout
# Default: 5
# Optional
#
# Set this to the desired of number of CheckInterval of inactivity before a client is logged out
# The timeout will be INTERVAL * TIMEOUT
ClientTimeout 5
AuthServer是Portal服務(wù)器的配置項(xiàng)嫡锌;GatewayPort是Wifidog監(jiān)聽的地址呼伸,默認(rèn)是2060捏顺,一般保持默認(rèn)即可;CheckInterval是心跳時(shí)長(zhǎng)壹士,單位是秒蚣驼,什么是心跳呢羔砾,客戶端認(rèn)證成功之后负间,如果有網(wǎng)絡(luò)訪問動(dòng)作,Wifidog getway就會(huì)每隔一段時(shí)間訪問Portal服務(wù)器的一個(gè)腳本姜凄,用于認(rèn)證計(jì)費(fèi)政溃,當(dāng)然,如果客戶使用超時(shí)或超流量态秧,也可以通過心跳強(qiáng)制客戶端下線董虱。ClientTimeout是用戶一次認(rèn)證成功后的網(wǎng)絡(luò)訪問時(shí)長(zhǎng),超過這個(gè)時(shí)間需要重新認(rèn)證申鱼,這個(gè)時(shí)長(zhǎng)并非由ClientTimeout單獨(dú)決定愤诱,取決于INTERVAL * TIMEOUT。詳細(xì)的配置信息可以訪問:http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf捐友。
我們重點(diǎn)討論P(yáng)ortal服務(wù)器的配置項(xiàng)淫半,Hostname是Portal服務(wù)器的ip或者是域名,SSLAvailable和SSLPort是SSL加密配置匣砖,如果你的Portal服務(wù)器有配置HTTPS加密科吭,則需要配置這兩項(xiàng);Path是指你的腳本路徑(舉例猴鲫,http://a.com/to/对人,則a.com是域名,/to/是路徑)拂共,注意路徑必須以“/”開頭和結(jié)尾牺弄,如果是根路徑,則填一個(gè)“/”即可匣缘;接下來(lái)的5個(gè)配置指明你的腳本名猖闪,這說(shuō)明了我們需要寫五個(gè)腳本鲜棠,我會(huì)詳細(xì)說(shuō)明。(以下文中涉及的“第幾步”均是指Wifidog認(rèn)證過程的步驟)
LoginScriptPathFragment配置項(xiàng)配置的是登陸腳本培慌,它通過GET方式接受傳入?yún)?shù)gw_address豁陆、gw_port、gw_id吵护、mac和url盒音,gw_address是AP Getway的ip地址;gw_port是Wifidog監(jiān)聽的端口馅而,即上面介紹的wifidog.conf中的GatewayPort配置祥诽;gw_id是AP Getway的id,配置文件wifidog.conf中可以配置瓮恭,默認(rèn)值是default雄坪,這個(gè)值的作用是當(dāng)存在多個(gè)AP是,服務(wù)器或管理員可以根據(jù)不同的id確定用戶的接入點(diǎn)屯蹦;mac是客戶計(jì)算機(jī)的網(wǎng)卡物理地址维哈,注意不是AP網(wǎng)關(guān)的mac,這個(gè)mac是用來(lái)識(shí)別客戶計(jì)算機(jī)的登澜;url是客戶初始訪問的Url阔挠,這些Querystring都是AP Getway向客戶端發(fā)出重定向請(qǐng)求自動(dòng)生成的。這個(gè)腳本同時(shí)需要提供登陸頁(yè)面脑蠕,如果登陸成功购撼,需要向客戶;端返回302重定向谴仙,重定向到:http://gw_address:gw_port/wifidog/auth?token=[token]迂求;即實(shí)現(xiàn)第7步,其中[token]是你自己自動(dòng)生成的token字符串晃跺,隨機(jī)生成一個(gè)字符串即可锁摔,但是長(zhǎng)度最好長(zhǎng)些,安全性更高哼审,另外谐腰,token需要根據(jù)不同用戶保存,最好保存于數(shù)據(jù)庫(kù)中涩盾,之后的AP Getway詢問token有效性(第9步)還需要用到十气。這里最好使用cookie或session,使之后的登陸成功頁(yè)面可以判斷用戶已經(jīng)成功春霍,阻止未登錄成功的人訪問認(rèn)證成功頁(yè)面砸西。
PortalScriptPathFragment配置項(xiàng)配置的是登陸成功后服務(wù)器展示的腳本(第11步),它通過GET方式接受1個(gè)傳入?yún)?shù),gw_id芹枷,這個(gè)腳本比較簡(jiǎn)單衅疙,告知用戶登陸成功即可,當(dāng)然鸳慈,最好重定向到用戶之前想要方位的url饱溢,即第1步用戶輸入的URL。
MsgScriptPathFragment配置項(xiàng)配置的是錯(cuò)誤信息展示腳本走芋,它通過GET方式接受一個(gè)傳入?yún)?shù)message绩郎,這個(gè)腳本也很簡(jiǎn)單,展示message的內(nèi)容即可翁逞,目的是當(dāng)認(rèn)證過程出現(xiàn)錯(cuò)誤肋杖,AP Getway會(huì)重定向到這個(gè)腳本,URL中含有錯(cuò)誤的信息挖函。
PingScriptPathFragment配置項(xiàng)配置的是心跳腳本状植,這個(gè)腳本它通過GET方式接受5個(gè)傳入?yún)?shù),gw_id怨喘,sys.uptime浅萧,sys.memfree,sys.load哲思,wifidog.uptime,其中吩案,sys.uptime指的是AP Getway的啟動(dòng)時(shí)間棚赔,sys.memfree指的是AP Getway的空閑內(nèi)存,sys.load指的是AP Getway的CPU負(fù)載徘郭,wifidog.uptime指的是wifidog的啟動(dòng)時(shí)間靠益,這個(gè)腳本每隔一段時(shí)間(Wifidog.conf里配置的CheckInterval),Wifidog會(huì)自動(dòng)訪問残揉,但是其目的不是用戶驗(yàn)證胧后,而是幫助管理員管理AP節(jié)點(diǎn),了解AP節(jié)點(diǎn)的負(fù)載情況抱环,適時(shí)增加節(jié)點(diǎn)等壳快,Wifidog訪問這個(gè)腳本時(shí),需要這個(gè)腳本返回Pong镇草,如果你沒有統(tǒng)計(jì)AP節(jié)點(diǎn)負(fù)載數(shù)據(jù)的需求眶痰,可以丟棄這些數(shù)據(jù),直接回應(yīng)Pong梯啤,注意竖伯,這個(gè)回應(yīng)只包含“Pong”字符串,無(wú)需包含其他html標(biāo)簽。
AuthScriptPathFragment是用戶認(rèn)證腳本七婴,實(shí)現(xiàn)的是第10步的功能祟偷,這個(gè)腳本它通過GET方式接受7個(gè)傳入?yún)?shù):stage、ip打厘、mac修肠、token、incoming婚惫、outcoming和gw_id氛赐。其中stage的值是login,ip是客戶端的ip先舷,注意不是AP Getwap的ip艰管;mac是客戶端的網(wǎng)卡物理地址,token就是你在認(rèn)證腳本生成并返回給客戶端的蒋川;incoming和outcoming用于流量控制牲芋,默認(rèn)值為0;gw_id同上捺球。如何識(shí)別用戶登錄成功缸浦,通過mac和token吧,LoginScriptPathFragment登陸腳本在用戶登陸成功后需要記錄用戶的mac和token氮兵,然后在此處驗(yàn)證裂逐,如果匹配,回復(fù)Auth: 1泣栈,否則卜高,回復(fù)Auth: 0。另外南片,這個(gè)腳本也是心跳腳本掺涛,每隔一段時(shí)間Wifidog會(huì)自動(dòng)訪問,如果用戶使用時(shí)間超過限制或流量超過額度疼进,服務(wù)器可以及時(shí)回應(yīng)Auth: 0結(jié)束用戶的訪問薪缆。另外需要注意的是,回應(yīng)同樣無(wú)需包含html標(biāo)簽伞广,另外拣帽,在Auth后的冒號(hào)和0/1之間,有一個(gè)空格嚼锄,缺少這個(gè)空格也會(huì)導(dǎo)致出錯(cuò)诞外。
在配置Wifidog的配置文件wifidog.conf是,配置腳本的配置項(xiàng)都必須以“?”結(jié)尾灾票,否則以GET方式傳遞的QueryString會(huì)因Url缺少問號(hào)訪問錯(cuò)誤的腳本峡谊。
本文由http://www.wifidog.pro/2015/02/12/wifidog%E9%85%8D%E7%BD%AE-2.html整理編輯,轉(zhuǎn)載請(qǐng)注明出處