wifidog如何判斷用戶不在線企锌?
if (p1->counters.last_updated +(config->checkinterval * config->clienttimeout)<= current_time) {
? ? ? ? /* Timing out user */
? ? ? ?debug(LOG_INFO, "%s - Inactive for more than %ld seconds, removing client and denying in firewall",p1->ip, config->checkinterval * config->clienttimeout);
? ? ? ?fw_deny(p1->ip, p1->mac, p1->fw_connection_state);
? ? ? ?client_list_delete(p1);
? ? ? ?/* Advertise the logout if we have an auth server */
? ? ? if (config->auth_servers != NULL){
? ? ? ? ? ? ?UNLOCK_CLIENT_LIST();
? ? ? ? ? ? ?auth_server_request(&authresponse, REQUEST_TYPE_LOGOUT, ip, mac, token, 0, 0);
? ? ? ? ? ? ?LOCK_CLIENT_LIST();
? ? ? ?}
wifidog發(fā)送logout 請求的地方一個是客戶端主動觸發(fā)wifidog下線請求辟狈,另一個就在上述代碼所述叹誉。
這段代碼主要是用來判斷客戶端是否在一定時間內(nèi)沒上網(wǎng),如果是忿项,wifidog會將其踢出蓉冈,然后告訴服務(wù)器這個客戶端已經(jīng)下線了。
這里可以改成客戶端連接一段時間后再踢下線轩触,同樣可以改成發(fā)現(xiàn)用戶沒有連接路由器直接踢下線寞酿,后者需要用到arp?包來ping?客戶端,前者只要在客戶端連接之后加個上線時間再在上述代碼的if?判斷處改成當(dāng)前時間減去上線時間即可怕膛。
本文章由
http://www.wifidog.pro/2015/03/25/wifidog%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E4%B8%8D%E5%9C%A8%E7%BA%BF.html整理編輯熟嫩,轉(zhuǎn)載請注明出處