<?php require('config.php'); function print_header() { echo "<html>\n"; echo "<head><title>HS 2.0 Terms and Conditions</title></head>\n"; echo "<body>\n"; } $db = new PDO($osu_db); if (!$db) { die($sqliteerror); } if (!isset($_GET["addr"])) { die("Missing addr parameter"); } $addr = $_GET["addr"]; $accept = isset($_GET["accept"]) && $_GET["accept"] == "yes"; $res = $db->prepare("SELECT identity FROM pending_tc WHERE mac_addr=?"); $res->execute(array($addr)); $row = $res->fetch(); if (!$row) { die("No pending session for the specified MAC address"); } $identity = $row[0]; if (!$accept) { print_header(); echo "<p>Accept the following terms and conditions by clicking here: <a href=\"terms.php?addr=$addr&accept=yes\">Accept</a></p>\n<hr>\n"; readfile($t_c_file); } else { $res = $db->prepare("UPDATE users SET t_c_timestamp=? WHERE identity=?"); if (!$res->execute(array($t_c_timestamp, $identity))) { die("Failed to update user account."); } $res = $db->prepare("DELETE FROM pending_tc WHERE mac_addr=?"); $res->execute(array($addr)); $fp = fsockopen($hostapd_ctrl); if (!$fp) { die("Could not connect to hostapd(AS)"); } fwrite($fp, "DAC_REQUEST coa $addr t_c_clear"); fclose($fp); $waiting = true; $ack = false; for ($i = 1; $i <= 10; $i++) { $res = $db->prepare("SELECT waiting_coa_ack,coa_ack_received FROM current_sessions WHERE mac_addr=?"); $res->execute(array($addr)); $row = $res->fetch(); if (!$row) { die("No current session for the specified MAC address"); } if (strlen($row[0]) > 0) $waiting = $row[0] == 1; if (strlen($row[1]) > 0) $ack = $row[1] == 1; $res->closeCursor(); if (!$waiting) break; sleep(1); } if ($ack) { header('X-WFA-Hotspot20-Filtering: removed'); print_header(); echo "<p>Terms and conditions were accepted.</p>\n"; echo "<P>Filtering disabled.</P>\n"; } else { print_header(); echo "<P>Failed to disable filtering.</P>\n"; } } ?> </body> </html>