Home | History | Annotate | Download | only in www
      1 <?php
      2 
      3 require('config.php');
      4 
      5 function print_header()
      6 {
      7    echo "<html>\n";
      8    echo "<head><title>HS 2.0 Terms and Conditions</title></head>\n";
      9    echo "<body>\n";
     10 }
     11 
     12 $db = new PDO($osu_db);
     13 if (!$db) {
     14    die($sqliteerror);
     15 }
     16 
     17 if (!isset($_GET["addr"])) {
     18    die("Missing addr parameter");
     19 }
     20 $addr = $_GET["addr"];
     21 
     22 $accept = isset($_GET["accept"]) && $_GET["accept"] == "yes";
     23 
     24 $res = $db->prepare("SELECT identity FROM pending_tc WHERE mac_addr=?");
     25 $res->execute(array($addr));
     26 $row = $res->fetch();
     27 if (!$row) {
     28    die("No pending session for the specified MAC address");
     29 }
     30 $identity = $row[0];
     31 
     32 if (!$accept) {
     33    print_header();
     34 
     35    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";
     36    readfile($t_c_file);
     37 } else {
     38    $res = $db->prepare("UPDATE users SET t_c_timestamp=? WHERE identity=?");
     39    if (!$res->execute(array($t_c_timestamp, $identity))) {
     40       die("Failed to update user account.");
     41    }
     42 
     43    $res = $db->prepare("DELETE FROM pending_tc WHERE mac_addr=?");
     44    $res->execute(array($addr));
     45 
     46    $fp = fsockopen($hostapd_ctrl);
     47    if (!$fp) {
     48       die("Could not connect to hostapd(AS)");
     49    }
     50 
     51    fwrite($fp, "DAC_REQUEST coa $addr t_c_clear");
     52    fclose($fp);
     53 
     54    $waiting = true;
     55    $ack = false;
     56    for ($i = 1; $i <= 10; $i++) {
     57       $res = $db->prepare("SELECT waiting_coa_ack,coa_ack_received FROM current_sessions WHERE mac_addr=?");
     58       $res->execute(array($addr));
     59       $row = $res->fetch();
     60       if (!$row) {
     61          die("No current session for the specified MAC address");
     62       }
     63       if (strlen($row[0]) > 0)
     64             $waiting = $row[0] == 1;
     65       if (strlen($row[1]) > 0)
     66             $ack = $row[1] == 1;
     67       $res->closeCursor();
     68       if (!$waiting)
     69          break;
     70       sleep(1);
     71    }
     72    if ($ack) {
     73       header('X-WFA-Hotspot20-Filtering: removed');
     74       print_header();
     75       echo "<p>Terms and conditions were accepted.</p>\n";
     76 
     77       echo "<P>Filtering disabled.</P>\n";
     78    } else {
     79       print_header();
     80       echo "<P>Failed to disable filtering.</P>\n";
     81    }
     82 }
     83 
     84 ?>
     85 
     86 </body>
     87 </html>
     88