mirror of
https://github.com/billz/raspap-webgui.git
synced 2023-10-10 13:37:24 +02:00
993dc633a9
until the "rescan" button is pressed. speeds up "configure client" page massively.
129 lines
5.7 KiB
PHP
Executable File
129 lines
5.7 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
*
|
|
*
|
|
*/
|
|
function DisplayWPAConfig()
|
|
{
|
|
$status = new StatusMessages();
|
|
|
|
if (isset($_POST['connect'])) {
|
|
$result = 0;
|
|
exec('sudo wpa_cli -i ' . RASPI_WPA_CTRL_INTERFACE . ' select_network '.strval($_POST['connect']));
|
|
} elseif (isset($_POST['client_settings'])) {
|
|
$tmp_networks = $networks;
|
|
if ($wpa_file = fopen('/tmp/wifidata', 'w')) {
|
|
fwrite($wpa_file, 'ctrl_interface=DIR=' . RASPI_WPA_CTRL_INTERFACE . ' GROUP=netdev' . PHP_EOL);
|
|
fwrite($wpa_file, 'update_config=1' . PHP_EOL);
|
|
|
|
foreach (array_keys($_POST) as $post) {
|
|
if (preg_match('/delete(\d+)/', $post, $post_match)) {
|
|
unset($tmp_networks[$_POST['ssid' . $post_match[1]]]);
|
|
} elseif (preg_match('/update(\d+)/', $post, $post_match)) {
|
|
// NB, at the moment, the value of protocol from the form may
|
|
// contain HTML line breaks
|
|
$tmp_networks[$_POST['ssid' . $post_match[1]]] = array(
|
|
'protocol' => ( $_POST['protocol' . $post_match[1]] === 'Open' ? 'Open' : 'WPA' ),
|
|
'passphrase' => $_POST['passphrase' . $post_match[1]],
|
|
'configured' => true
|
|
);
|
|
if (array_key_exists('priority' . $post_match[1], $_POST)) {
|
|
$tmp_networks[$_POST['ssid' . $post_match[1]]]['priority'] = $_POST['priority' . $post_match[1]];
|
|
}
|
|
}
|
|
}
|
|
|
|
$ok = true;
|
|
foreach ($tmp_networks as $ssid => $network) {
|
|
if ($network['protocol'] === 'Open') {
|
|
fwrite($wpa_file, "network={".PHP_EOL);
|
|
fwrite($wpa_file, "\tssid=\"".$ssid."\"".PHP_EOL);
|
|
fwrite($wpa_file, "\tkey_mgmt=NONE".PHP_EOL);
|
|
fwrite($wpa_file, "\tscan_ssid=1".PHP_EOL);
|
|
if (array_key_exists('priority', $network)) {
|
|
fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL);
|
|
}
|
|
fwrite($wpa_file, "}".PHP_EOL);
|
|
} else {
|
|
if (strlen($network['passphrase']) >=8 && strlen($network['passphrase']) <= 63) {
|
|
unset($wpa_passphrase);
|
|
unset($line);
|
|
exec('wpa_passphrase '.escapeshellarg($ssid). ' ' . escapeshellarg($network['passphrase']), $wpa_passphrase);
|
|
foreach ($wpa_passphrase as $line) {
|
|
if (preg_match('/^\s*}\s*$/', $line)) {
|
|
if (array_key_exists('priority', $network)) {
|
|
fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL);
|
|
}
|
|
fwrite($wpa_file, $line.PHP_EOL);
|
|
} else {
|
|
fwrite($wpa_file, $line.PHP_EOL);
|
|
}
|
|
}
|
|
} else {
|
|
$status->addMessage('WPA passphrase must be between 8 and 63 characters', 'danger');
|
|
$ok = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($ok) {
|
|
system('sudo cp /tmp/wifidata ' . RASPI_WPA_SUPPLICANT_CONFIG, $returnval);
|
|
if ($returnval == 0) {
|
|
exec('sudo wpa_cli -i ' . RASPI_WIFI_CLIENT_INTERFACE . ' reconfigure', $reconfigure_out, $reconfigure_return);
|
|
if ($reconfigure_return == 0) {
|
|
$status->addMessage('Wifi settings updated successfully', 'success');
|
|
$networks = $tmp_networks;
|
|
} else {
|
|
$status->addMessage('Wifi settings updated but cannot restart (cannot execute "wpa_cli reconfigure")', 'danger');
|
|
}
|
|
} else {
|
|
$status->addMessage('Wifi settings failed to be updated', 'danger');
|
|
}
|
|
}
|
|
} else {
|
|
$status->addMessage('Failed to update wifi settings', 'danger');
|
|
}
|
|
}
|
|
|
|
?>
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="panel panel-primary">
|
|
<div class="panel-heading"><i class="fa fa-signal fa-fw"></i> <?php echo _("Configure client"); ?></div>
|
|
<!-- /.panel-heading -->
|
|
<div class="panel-body">
|
|
<p><?php $status->showMessages(); ?></p>
|
|
<h4><?php echo _("Client settings"); ?></h4>
|
|
<div class="btn-group btn-block">
|
|
<button type="button" style="padding:10px;float: right;display: block;position: relative;margin-top: -55px;" class="col-md-2 btn btn-info js-reload-wifi-stations"><?php echo _("Rescan"); ?></button>
|
|
</div>
|
|
|
|
<form method="POST" action="?page=wpa_conf" name="wpa_conf_form">
|
|
<?php echo CSRFTokenFieldTag() ?>
|
|
<input type="hidden" name="client_settings" ?>
|
|
<script>
|
|
function showPassword(index) {
|
|
var x = document.getElementsByName("passphrase"+index)[0];
|
|
if (x.type === "password") {
|
|
x.type = "text";
|
|
} else {
|
|
x.type = "password";
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div class="js-wifi-stations loading-spinner"></div>
|
|
|
|
</form>
|
|
</div><!-- ./ Panel body -->
|
|
<div class="panel-footer"><?php echo _("<strong>Note:</strong> WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP"); ?></div>
|
|
</div><!-- /.panel-primary -->
|
|
</div><!-- /.col-lg-12 -->
|
|
</div><!-- /.row -->
|
|
<?php
|
|
}
|
|
|
|
?>
|