summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/status_wireless.php
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-08-26 15:12:02 -0300
committerRenato Botelho <renato@netgate.com>2015-08-26 15:12:02 -0300
commit03b19a93f4d8d870507ee96121cee4acd748dd2a (patch)
tree71a34e9e7e73d13de21cb4ad831799fb10c30df4 /src/usr/local/www/status_wireless.php
parent7f410a121522c5d0e2660256ae50c1fde1df3645 (diff)
parent30ce58ac1ea27b758d5112cb5a3b190c9760f010 (diff)
downloadpfsense-03b19a93f4d8d870507ee96121cee4acd748dd2a.zip
pfsense-03b19a93f4d8d870507ee96121cee4acd748dd2a.tar.gz
Merge branch 'master' into bootstrap
Diffstat (limited to 'src/usr/local/www/status_wireless.php')
-rw-r--r--src/usr/local/www/status_wireless.php223
1 files changed, 223 insertions, 0 deletions
diff --git a/src/usr/local/www/status_wireless.php b/src/usr/local/www/status_wireless.php
new file mode 100644
index 0000000..798cc5d
--- /dev/null
+++ b/src/usr/local/www/status_wireless.php
@@ -0,0 +1,223 @@
+<?php
+/*
+ status_wireless.php
+ Copyright (C) 2004 Scott Ullrich
+ Copyright (C) 2013-2015 Electric Sheep Fencing, LP
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/*
+ pfSense_MODULE: interfaces
+*/
+
+##|+PRIV
+##|*IDENT=page-diagnostics-wirelessstatus
+##|*NAME=Status: Wireless page
+##|*DESCR=Allow access to the 'Status: Wireless' page.
+##|*MATCH=status_wireless.php*
+##|-PRIV
+
+require_once("guiconfig.inc");
+
+$pgtitle = array(gettext("Status"), gettext("Wireless"));
+$shortcut_section = "wireless";
+
+include("head.inc");
+
+$if = $_POST['if'];
+
+if($_GET['if'] != "")
+ $if = $_GET['if'];
+
+$ciflist = get_configured_interface_with_descr();
+if (empty($if)) {
+ /* Find the first interface
+ that is wireless */
+ foreach ($ciflist as $interface => $ifdescr) {
+ if (is_interface_wireless(get_real_interface($interface))) {
+ $if = $interface;
+ break;
+ }
+ }
+}
+
+$tab_array = array();
+
+foreach($ciflist as $interface => $ifdescr) {
+ if (is_interface_wireless(get_real_interface($interface))) {
+ $enabled = false;
+ if($if == $interface)
+ $enabled = true;
+
+ $tab_array[] = array(gettext("Status") . " ({$ifdescr})", $enabled, "status_wireless.php?if={$interface}");
+ }
+}
+
+$rwlif = get_real_interface($if);
+
+if($_POST['rescanwifi'] != "") {
+ mwexec_bg("/sbin/ifconfig {$rwlif} scan 2>&1");
+ $savemsg = gettext("Rescan has been initiated in the background. Refresh this page in 10 seconds to see the results.");
+}
+
+if ($savemsg)
+ print_info_box($savemsg, 'success');
+
+display_top_tabs($tab_array);
+?>
+
+<div class="panel panel-default">
+ <div class="panel-heading"><h2 class="panel-title"><?=gettext("Nearby access points or ad-hoc peers")?></h2></div>
+ <div class="panel-body">
+ <div class="table-responsive">
+ <table class="table table-striped table-hover table-condensed">
+ <thead>
+ <tr>
+ <th>SSID</th>
+ <th>BSSID</th>
+ <th>CHAN</th>
+ <th>RATE</th>
+ <th>RSSI</th>
+ <th>INT</th>
+ <th>CAPS</th>
+ </tr>
+ </thead>
+ <tbody>
+<?php
+ exec("/sbin/ifconfig {$rwlif} list scan 2>&1", $states, $ret);
+ /* Skip Header */
+ array_shift($states);
+
+ $counter = 0;
+ foreach ($states as $state) {
+ /* Split by Mac address for the SSID Field */
+ $split = preg_split("/([0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f])/i", $state);
+ preg_match("/([0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f]\:[0-9a-f][[0-9a-f])/i", $state, $bssid);
+ $ssid = htmlspecialchars($split[0]);
+ $bssid = $bssid[0];
+ /* Split the rest by using spaces for this line using the 2nd part */
+ $split = preg_split("/[ ]+/i", $split[1]);
+ $channel = $split[1];
+ $rate = $split[2];
+ $rssi = $split[3];
+ $int = $split[4];
+ $caps = "$split[5] $split[6] $split[7] $split[8] $split[9] $split[10] $split[11] ";
+?>
+ <tr>
+ <td>
+ <?=$ssid?>
+ </td>
+ <td>
+ <?=$bssid?>
+ </td>
+ <td>
+ <?=$channel?>
+ </td>
+ <td>
+ <?=$rate?>
+ </td>
+ <td>
+ <?=$rssi?>
+ </td>
+ <td>
+ <?=$int?>
+ </td>
+ <td>
+ <?=$caps?>
+ </td>
+ </tr>
+<?php
+ } // e-o-foreach
+?>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
+
+<div class="panel panel-default">
+ <div class="panel-heading"><h2 class="panel-title"><?=gettext("Associated or ad-hoc peers")?></h2></div>
+ <div class="panel-body">
+ <div class="table-responsive">
+ <table class="table table-striped table-hover table-condensed">
+ <thead>
+ <tr>
+ <th>ADDR</font></th>
+ <th>AID</font></th>
+ <th>CHAN</font></th>
+ <th>RATE</font></th>
+ <th>RSSI</font></th>
+ <th>IDLE</font></th>
+ <th>TXSEQ</font></th>
+ <th>RXSEQ</font></th>
+ <th>CAPS</font></th>
+ <th>ERP</font></th>
+ </tr>
+ </thead>
+ <tbody>
+
+<?php
+ $states = array();
+ exec("/sbin/ifconfig {$rwlif} list sta 2>&1", $states, $ret);
+ array_shift($states);
+
+ $counter=0;
+
+ foreach($states as $state) {
+ $split = preg_split("/[ ]+/i", $state);
+?>
+ <tr>
+<?php
+ /* Split the rest by using spaces for this line using the 2nd part */
+ for($idx=0; $idx<10; $idx++) {
+?>
+ <td>
+ <?=$split[$idx]?>
+ </td>
+<?php
+ }
+?>
+ </tr>
+<?php
+ }
+?>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
+
+
+<form action="status_wireless.php" method="post">
+ <nav class="action-buttons">
+ <input type="hidden" name="if" id="if" value="<?=htmlspecialchars($if)?>">
+ <input type="submit" class="btn btn-success" name="rescanwifi" id="rescanwifi" value="Rescan">
+ </nav>
+</form>
+
+<?php
+print_info_box('<b>Flags:</b> A = authorized, E = Extended Rate (802.11g), P = Power saving mode<br />' .
+ '<b>Capabilities:</b> E = ESS (infrastructure mode), I = IBSS (ad-hoc mode), P = privacy (WEP/TKIP/AES), ' .
+ 'S = Short preamble, s = Short slot time');
+
+include("foot.inc"); \ No newline at end of file
OpenPOWER on IntegriCloud