Php
PHP/Ruby 強制門戶第一個域似乎已記憶體
我用 iptables 創建了一個強制門戶
我使用許多人似乎使用的:使用者可以請求 DNS,數據包標記為 99。99 表示沒有網際網路,否則使用者可以訪問。
當使用者訪問頁面時訪問例如堆棧溢出。使用者獲得免責聲明。他/她點擊確定。發生的事情是伺服器執行以下規則:
`sudo /sbin/iptables -t mangle -I captivePortal 1 -m mac --mac-source {$mac} -j RETURN`; `sudo /sbin/iptables -t mangle -I captivePortal 1 -s {$_SERVER['REMOTE_ADDR']} -j RETURN`;
我試過的:
用過的sinatra 單用瘦。使用 erb 渲染模板。當使用者在驗證後重新載入時,他們會在訪問初始域時獲得免責聲明。當訪問另一個他們沒有得到免責聲明頁面。
用php設置apache2,全部用php重寫。添加了元標記以防止在瀏覽器中記憶體但結果相同。原始域總是重定向到免責聲明,但其他站點還可以。
我想要達到的目標
使用者需要在免責聲明中點擊接受才能使用WIFI。
重新載入 apache2 或重新啟動 Sinatra 確實可以解決此問題,但這在低端 alix 板上不是正確的解決方案。
發現將mac地址插入iptables後,我需要使用conntrack。
/usr/sbin/conntrack -L \ |grep $1 \ |grep ESTAB \ |grep 'dport=80' \ |awk \ "{ system(\"conntrack -D --orig-src $1 --orig-dst \" \ substr(\$6,5) \" -p tcp --orig-port-src \" substr(\$7,7) \" \ --orig-port-dst 80\"); }"
http://aryo.info/labs/captive-portal-using-php-and-iptables.html