'8', '255.255.0.0' => '16', '255.255.128.0' => '17', '255.255.192.0' => '18', '255.255.224.0' => '19', '255.255.240.0' => '20', '255.255.248.0' => '21', '255.255.252.0' => '22', '255.255.254.0' => '23', '255.255.255.0' => '24', '255.255.255.128' => '25', '255.255.255.192' => '26', '255.255.255.224' => '27', '255.255.255.240' => '28', '255.255.255.248' => '29', '255.255.255.252' => '30' ]; // add translations $_SERVER['REQUEST_URI'] = 'settings'; require_once "$docroot/webGui/include/Translations.php"; require_once "$docroot/webGui/include/Helpers.php"; function scanWifi($port) { $wlan = []; exec("iw $port scan | grep -P '^BSS|signal:|SSID:|Authentication'",$scan); $n = -1; for ($i=0; $i $block) { $text[] = "[$network]"; foreach ($block as $key => $value) $text[] = "$key=\"$value\""; } file_put_contents_atomic($cfg,implode("\n",$text)."\n"); } function saveAttr() { global $tmp, $attr, $md5; $text = []; if (md5(json_encode($attr),true) === $md5) return; foreach ($attr as $network => $block) { $text[] = "[$network]"; foreach ($block as $key => $value) $text[] = "$key=\"$value\""; } file_put_contents_atomic($tmp,implode("\n",$text)."\n"); } switch ($cmd) { case 'list': $title = _('Connect to WiFi network'); $port = array_key_first($wifi); $wlan = scanWifi($port); $echo = []; $index = 0; if (count(array_column($wlan,'ssid'))) { $up = file_get_contents("/sys/class/net/$port/carrier") == 1; $alive = $up ? exec("iw $port link | grep -Pom1 'SSID: \K.+'") : ''; $state = $up ? _('Connected') : _('Disconnected'); $color = $up ? 'blue' : 'red'; foreach (array_column($wlan,'ssid') as $network) { $attr[$network]['ATTR1'] = $wlan[$index]['bss']; $attr[$network]['ATTR2'] = $wlan[$index]['signal']; $attr[$network]['ATTR3'] = $wlan[$index]['security']; $index++; if (isset($wifi[$network]['GROUP'])) { if ($network == $alive) { $echo['active'][] = "
$state:
"; $echo['active'][] = "
$network
"; } else { $echo['saved'][] = empty($echo['saved']) ? "
"._('My networks').":
" : "
 
"; $echo['saved'][] = "
$network
"; } } else { $echo['other'][] = empty($echo['other']) ? "
"._('Other networks').":
" : "
 
"; $echo['other'][] = "
$network
"; } } if (empty($echo['active'])) $echo['active'][] = "
"._('Connected').":
"._('None')."
"; if (empty($echo['saved'])) $echo['saved'][] = "
"._('My networks').":
"._('None')."
"; if (empty($echo['other'])) $echo['other'][] = "
"._('Other networks').":
"._('None')."
"; $echo['active'] = implode($echo['active']); $echo['saved'] = implode($echo['saved']); $echo['other'] = implode($echo['other']); saveAttr(); } echo json_encode($echo); break; case 'join': require_once "$docroot/webGui/include/OpenSSL.php"; $token = parse_ini_file($var)['csrf_token']; $ssid = rawurldecode($_POST['ssid']); $drop = $_POST['drop']==1; $user = _var($wifi[$ssid],'USERNAME') ? openssl_decrypt($wifi[$ssid]['USERNAME'],$cipher,$key,0,$iv) : ''; $passwd = _var($wifi[$ssid],'PASSWORD') ? openssl_decrypt($wifi[$ssid]['PASSWORD'],$cipher,$key,0,$iv) : ''; $join = _var($wifi[$ssid],'AUTOJOIN','no'); $dhcp4 = _var($wifi[$ssid],'DHCP4','yes'); $dns4 = _var($wifi[$ssid],'DNS4','no'); $ip4 = _var($wifi[$ssid],'IP4'); $mask4 = _var($wifi[$ssid],'MASK4','255.255.255.0'); $gw4 = _var($wifi[$ssid],'GATEWAY4'); $server4 = _var($wifi[$ssid],'SERVER4'); $dhcp6 = _var($wifi[$ssid],'DHCP6'); $dns6 = _var($wifi[$ssid],'DNS6','no'); $ip6 = _var($wifi[$ssid],'IP6'); $mask6 = _var($wifi[$ssid],'MASK6','64'); $gwv6 = _var($wifi[$ssid],'GATEWAY6'); $server6 = _var($wifi[$ssid],'SERVER6'); $hide1 = $dhcp4=='no' ? '': 'hide'; $hide2 = $dns4=='no' ? 'hide' : ''; $hide3 = $dhcp6=='no' ? '' : 'hide'; $hide4 = $dhcp6=='' ? 'hide' : ''; $hide5 = $dns6=='no' ? 'hide' : ''; $attr1 = $attr[$ssid]['ATTR1']; $attr2 = $attr[$ssid]['ATTR2']; $attr3 = $attr[$ssid]['ATTR3']; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; if ($drop && isset($wifi[$ssid])) { echo ""; echo ""; } if (strpos($attr3,'IEEE')!==false) echo ""; if ($attr3) echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
 
 
"._('Username').":
"._('Password').":
 
"._('IPv4 address assignment').":
"._('IPv4 address').":/
"._('IPv4 default gateway').":
"._('IPv4 DNS assignment').":
"._('DNSv4 server').":
 
"._('IPv6 address assignment').":
"._('IPv6 address').":/
"._('IPv6 default gateway').":
"._('IPv6 DNS assignment').":
"._('DNSv6 server').":
 
"; echo "
"; break; case 'forget': $ssid = rawurldecode($_POST['ssid']); if ($wifi[$ssid]['GROUP'] == 'active') exec("/etc/rc.d/rc.wireless stop &>/dev/null &"); unset($wifi[$ssid]); saveWifi(); break; } ?>