wifidog如何判斷用戶不在線?

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發送logout 請求的地方一個是客戶端主動觸發wifidog下線請求,另一個就在上述代碼所述。

這段代碼主要是用來判斷客戶端是否在一定時間內沒上網,如果是,wifidog會將其踢出,然后告訴服務器這個客戶端已經下線了。

這里可以改成客戶端連接一段時間后再踢下線,同樣可以改成發現用戶沒有連接路由器直接踢下線,后者需要用到arp?包來ping?客戶端,前者只要在客戶端連接之后加個上線時間再在上述代碼的if?判斷處改成當前時間減去上線時間即可。

本文章由

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整理編輯,轉載請注明出處

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容