main
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
<?php
|
||||
// Empty placeholder: presence prevents directory listing under Apache
|
||||
// when no DirectoryIndex match is found in this folder.
|
||||
|
||||
+151
-207
@@ -1,216 +1,160 @@
|
||||
<?php
|
||||
/**
|
||||
* Helper functions for the WiFi configuration page (admin/wifi.php).
|
||||
*
|
||||
* Three small utilities:
|
||||
* - {@see GetDistString()} Substring extraction by offset + delimiter.
|
||||
* - {@see ParseConfig()} Convert an array of `key=value` lines into
|
||||
* an associative array, skipping comments.
|
||||
* - {@see ConvertToChannel()} Map a wireless centre frequency (MHz, as
|
||||
* reported by `iwconfig` / `iw dev`) to a
|
||||
* human-readable "2.4GHz Ch6" / "5.0GHz
|
||||
* Ch149" label.
|
||||
* - {@see ConvertToSecurity()} Map a wpa_supplicant security flag string
|
||||
* to a friendly label (e.g. WPA2-PSK (AES)).
|
||||
*
|
||||
* Included from admin/wifi.php to back the wireless info / scan UI.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Extract a substring from `$input` starting `$offset` bytes after the
|
||||
* occurrence of `$string`, ending at the first `$separator` after that.
|
||||
*
|
||||
* @param string $input The haystack to search.
|
||||
* @param string $string Anchor token that marks the start point.
|
||||
* @param int $offset Byte offset added past the anchor.
|
||||
* @param string $separator Delimiter that ends the slice.
|
||||
* @return string The extracted substring.
|
||||
*/
|
||||
function GetDistString($input, $string, $offset, $separator)
|
||||
{
|
||||
$string = substr($input, strpos($input, $string) + $offset, strpos(substr($input, strpos($input, $string) + $offset), $separator));
|
||||
return $string;
|
||||
function GetDistString($input,$string,$offset,$separator) {
|
||||
$string = substr($input,strpos($input,$string)+$offset,strpos(substr($input,strpos($input,$string)+$offset),$separator));
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse an array of `key=value` lines (typically from a wpa_supplicant
|
||||
* or hostapd config) into an associative array. Lines beginning with
|
||||
* `#` are treated as comments and skipped.
|
||||
*
|
||||
* @param array<int,string> $arrConfig One line per element.
|
||||
* @return array<string,string> Keyed by the LHS of the first `=` per line.
|
||||
*/
|
||||
function ParseConfig($arrConfig)
|
||||
{
|
||||
$config = array();
|
||||
foreach ($arrConfig as $line) {
|
||||
if ($line[0] != "#") {
|
||||
$arrLine = explode("=", $line);
|
||||
$config[$arrLine[0]] = $arrLine[1];
|
||||
}
|
||||
}
|
||||
return $config;
|
||||
function ParseConfig($arrConfig) {
|
||||
$config = array();
|
||||
foreach($arrConfig as $line) {
|
||||
if($line[0] != "#") {
|
||||
$arrLine = explode("=",$line);
|
||||
$config[$arrLine[0]] = $arrLine[1];
|
||||
}
|
||||
}
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a wireless centre frequency to a friendly channel label.
|
||||
*
|
||||
* Accepts either MHz integers (e.g. "2412" → "2.4GHz Ch1", "5180" →
|
||||
* "5.0GHz Ch36") or some legacy short forms emitted by older `iw`
|
||||
* builds (e.g. "504" / "508" for 5GHz channels in the 5MHz grid).
|
||||
*
|
||||
* @param string $freq Centre frequency as reported by iwconfig/iw.
|
||||
* @return string Friendly channel label, or "Invalid Channel" if unmapped.
|
||||
*/
|
||||
function ConvertToChannel($freq)
|
||||
{
|
||||
$wifiFreqToChan = array (
|
||||
"2412" => "2.4GHz Ch1",
|
||||
"2417" => "2.4GHz Ch2",
|
||||
"2422" => "2.4GHz Ch3",
|
||||
"2427" => "2.4GHz Ch4",
|
||||
"2432" => "2.4GHz Ch5",
|
||||
"2437" => "2.4GHz Ch6",
|
||||
"2442" => "2.4GHz Ch7",
|
||||
"2447" => "2.4GHz Ch8",
|
||||
"2452" => "2.4GHz Ch9",
|
||||
"2457" => "2.4GHz Ch10",
|
||||
"2462" => "2.4GHz Ch11",
|
||||
"2467" => "2.4GHz Ch12",
|
||||
"2472" => "2.4GHz Ch13",
|
||||
"2484" => "2.4GHz Ch14",
|
||||
"504" => "5.0GHz Ch8",
|
||||
"506" => "5.0GHz Ch12",
|
||||
"508" => "5.0GHz Ch16",
|
||||
"517" => "5.0GHz Ch34",
|
||||
"518" => "5.0GHz Ch36",
|
||||
"519" => "5.0GHz Ch38",
|
||||
"520" => "5.0GHz Ch40",
|
||||
"521" => "5.0GHz Ch42",
|
||||
"522" => "5.0GHz Ch44",
|
||||
"523" => "5.0GHz Ch46",
|
||||
"524" => "5.0GHz Ch48",
|
||||
"526" => "5.0GHz Ch52",
|
||||
"528" => "5.0GHz Ch56",
|
||||
"530" => "5.0GHz Ch60",
|
||||
"532" => "5.0GHz Ch64",
|
||||
"550" => "5.0GHz Ch100",
|
||||
"552" => "5.0GHz Ch104",
|
||||
"554" => "5.0GHz Ch108",
|
||||
"556" => "5.0GHz Ch112",
|
||||
"558" => "5.0GHz Ch116",
|
||||
"560" => "5.0GHz Ch120",
|
||||
"562" => "5.0GHz Ch124",
|
||||
"564" => "5.0GHz Ch128",
|
||||
"566" => "5.0GHz Ch132",
|
||||
"568" => "5.0GHz Ch136",
|
||||
"570" => "5.0GHz Ch140",
|
||||
"492" => "5.0GHz Ch184",
|
||||
"494" => "5.0GHz Ch188",
|
||||
"496" => "5.0GHz Ch192",
|
||||
"498" => "5.0GHz Ch196",
|
||||
"5035" => "5.0GHz Ch7",
|
||||
"5040" => "5.0GHz Ch8",
|
||||
"5045" => "5.0GHz Ch9",
|
||||
"5055" => "5.0GHz Ch11",
|
||||
"5060" => "5.0GHz Ch12",
|
||||
"5080" => "5.0GHz Ch16",
|
||||
"5170" => "5.0GHz Ch34",
|
||||
"5180" => "5.0GHz Ch36",
|
||||
"5190" => "5.0GHz Ch38",
|
||||
"5200" => "5.0GHz Ch40",
|
||||
"5210" => "5.0GHz Ch42",
|
||||
"5220" => "5.0GHz Ch44",
|
||||
"5230" => "5.0GHz Ch46",
|
||||
"5240" => "5.0GHz Ch48",
|
||||
"5260" => "5.0GHz Ch52",
|
||||
"5280" => "5.0GHz Ch56",
|
||||
"5300" => "5.0GHz Ch60",
|
||||
"5320" => "5.0GHz Ch64",
|
||||
"5500" => "5.0GHz Ch100",
|
||||
"5520" => "5.0GHz Ch104",
|
||||
"5540" => "5.0GHz Ch108",
|
||||
"5560" => "5.0GHz Ch112",
|
||||
"5580" => "5.0GHz Ch116",
|
||||
"5600" => "5.0GHz Ch120",
|
||||
"5620" => "5.0GHz Ch124",
|
||||
"5640" => "5.0GHz Ch128",
|
||||
"5660" => "5.0GHz Ch132",
|
||||
"5680" => "5.0GHz Ch136",
|
||||
"5700" => "5.0GHz Ch140",
|
||||
"5745" => "5.0GHz Ch149",
|
||||
"5765" => "5.0GHz Ch153",
|
||||
"5785" => "5.0GHz Ch157",
|
||||
"5805" => "5.0GHz Ch161",
|
||||
"5825" => "5.0GHz Ch165",
|
||||
"4915" => "5.0GHz Ch183",
|
||||
"4920" => "5.0GHz Ch184",
|
||||
"4925" => "5.0GHz Ch185",
|
||||
"4935" => "5.0GHz Ch187",
|
||||
"4940" => "5.0GHz Ch188",
|
||||
"4945" => "5.0GHz Ch189",
|
||||
"4960" => "5.0GHz Ch192",
|
||||
"4980" => "5.0GHz Ch196"
|
||||
);
|
||||
if (array_key_exists($freq, $wifiFreqToChan)) { return $wifiFreqToChan[$freq]; }
|
||||
else { return "Invalid Channel"; }
|
||||
function ConvertToChannel($freq) {
|
||||
$wifiFreqToChan = array (
|
||||
"2412" => "2.4GHz Ch1",
|
||||
"2417" => "2.4GHz Ch2",
|
||||
"2422" => "2.4GHz Ch3",
|
||||
"2427" => "2.4GHz Ch4",
|
||||
"2432" => "2.4GHz Ch5",
|
||||
"2437" => "2.4GHz Ch6",
|
||||
"2442" => "2.4GHz Ch7",
|
||||
"2447" => "2.4GHz Ch8",
|
||||
"2452" => "2.4GHz Ch9",
|
||||
"2457" => "2.4GHz Ch10",
|
||||
"2462" => "2.4GHz Ch11",
|
||||
"2467" => "2.4GHz Ch12",
|
||||
"2472" => "2.4GHz Ch13",
|
||||
"2484" => "2.4GHz Ch14",
|
||||
"504" => "5.0GHz Ch8",
|
||||
"506" => "5.0GHz Ch12",
|
||||
"508" => "5.0GHz Ch16",
|
||||
"517" => "5.0GHz Ch34",
|
||||
"518" => "5.0GHz Ch36",
|
||||
"519" => "5.0GHz Ch38",
|
||||
"520" => "5.0GHz Ch40",
|
||||
"521" => "5.0GHz Ch42",
|
||||
"522" => "5.0GHz Ch44",
|
||||
"523" => "5.0GHz Ch46",
|
||||
"524" => "5.0GHz Ch48",
|
||||
"526" => "5.0GHz Ch52",
|
||||
"528" => "5.0GHz Ch56",
|
||||
"530" => "5.0GHz Ch60",
|
||||
"532" => "5.0GHz Ch64",
|
||||
"550" => "5.0GHz Ch100",
|
||||
"552" => "5.0GHz Ch104",
|
||||
"554" => "5.0GHz Ch108",
|
||||
"556" => "5.0GHz Ch112",
|
||||
"558" => "5.0GHz Ch116",
|
||||
"560" => "5.0GHz Ch120",
|
||||
"562" => "5.0GHz Ch124",
|
||||
"564" => "5.0GHz Ch128",
|
||||
"566" => "5.0GHz Ch132",
|
||||
"568" => "5.0GHz Ch136",
|
||||
"570" => "5.0GHz Ch140",
|
||||
"492" => "5.0GHz Ch184",
|
||||
"494" => "5.0GHz Ch188",
|
||||
"496" => "5.0GHz Ch192",
|
||||
"498" => "5.0GHz Ch196",
|
||||
"5035" => "5.0GHz Ch7",
|
||||
"5040" => "5.0GHz Ch8",
|
||||
"5045" => "5.0GHz Ch9",
|
||||
"5055" => "5.0GHz Ch11",
|
||||
"5060" => "5.0GHz Ch12",
|
||||
"5080" => "5.0GHz Ch16",
|
||||
"5170" => "5.0GHz Ch34",
|
||||
"5180" => "5.0GHz Ch36",
|
||||
"5190" => "5.0GHz Ch38",
|
||||
"5200" => "5.0GHz Ch40",
|
||||
"5210" => "5.0GHz Ch42",
|
||||
"5220" => "5.0GHz Ch44",
|
||||
"5230" => "5.0GHz Ch46",
|
||||
"5240" => "5.0GHz Ch48",
|
||||
"5260" => "5.0GHz Ch52",
|
||||
"5280" => "5.0GHz Ch56",
|
||||
"5300" => "5.0GHz Ch60",
|
||||
"5320" => "5.0GHz Ch64",
|
||||
"5500" => "5.0GHz Ch100",
|
||||
"5520" => "5.0GHz Ch104",
|
||||
"5540" => "5.0GHz Ch108",
|
||||
"5560" => "5.0GHz Ch112",
|
||||
"5580" => "5.0GHz Ch116",
|
||||
"5600" => "5.0GHz Ch120",
|
||||
"5620" => "5.0GHz Ch124",
|
||||
"5640" => "5.0GHz Ch128",
|
||||
"5660" => "5.0GHz Ch132",
|
||||
"5680" => "5.0GHz Ch136",
|
||||
"5700" => "5.0GHz Ch140",
|
||||
"5745" => "5.0GHz Ch149",
|
||||
"5765" => "5.0GHz Ch153",
|
||||
"5785" => "5.0GHz Ch157",
|
||||
"5805" => "5.0GHz Ch161",
|
||||
"5825" => "5.0GHz Ch165",
|
||||
"4915" => "5.0GHz Ch183",
|
||||
"4920" => "5.0GHz Ch184",
|
||||
"4925" => "5.0GHz Ch185",
|
||||
"4935" => "5.0GHz Ch187",
|
||||
"4940" => "5.0GHz Ch188",
|
||||
"4945" => "5.0GHz Ch189",
|
||||
"4960" => "5.0GHz Ch192",
|
||||
"4980" => "5.0GHz Ch196"
|
||||
);
|
||||
if (array_key_exists($freq, $wifiFreqToChan)) { return $wifiFreqToChan[$freq]; }
|
||||
else { return "Invalid Channel"; }
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a wpa_supplicant security flag string to a human-friendly label.
|
||||
*
|
||||
* Input is the bracketed token list reported by `wpa_cli scan_results`
|
||||
* (e.g. "[WPA2-PSK-CCMP][ESS]" → "WPA2-PSK (AES)"). Unknown flag strings
|
||||
* fall through to the default branch and are returned verbatim so the
|
||||
* UI never silently swallows a network it doesn't recognise.
|
||||
*
|
||||
* @param string $security Bracketed flag list from wpa_cli output.
|
||||
* @return string Friendly security descriptor, or the raw flag string.
|
||||
*/
|
||||
function ConvertToSecurity($security)
|
||||
{
|
||||
switch ($security) {
|
||||
case "[WPA2-PSK-CCMP][ESS]":
|
||||
return "WPA2-PSK (AES)";
|
||||
break;
|
||||
case "[WPA2-PSK-CCMP-preauth][ESS]":
|
||||
return "WPA2-PSK (AES) with Preauth";
|
||||
break;
|
||||
case "[WPA2-PSK-TKIP][ESS]":
|
||||
return "WPA2-PSK (TKIP)";
|
||||
break;
|
||||
case "[WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA2-PSK (TKIP) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP+CCMP][WPS][ESS]":
|
||||
return "WPA-PSK (TKIP/AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP][WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP)";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES)";
|
||||
break;
|
||||
case "[WPA-EAP-CCMP+TKIP][WPA2-EAP-CCMP+TKIP-preauth][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES) with Preauth";
|
||||
break;
|
||||
case "[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP][ESS]":
|
||||
return "WPA-PSK (TKIP)";
|
||||
break;
|
||||
case "[WEP][ESS]":
|
||||
return "WEP";
|
||||
break;
|
||||
case "[ESS]":
|
||||
return "None";
|
||||
break;
|
||||
default:
|
||||
return $security;
|
||||
break;
|
||||
}
|
||||
function ConvertToSecurity($security) {
|
||||
switch($security) {
|
||||
case "[WPA2-PSK-CCMP][ESS]":
|
||||
return "WPA2-PSK (AES)";
|
||||
break;
|
||||
case "[WPA2-PSK-CCMP-preauth][ESS]":
|
||||
return "WPA2-PSK (AES) with Preauth";
|
||||
break;
|
||||
case "[WPA2-PSK-TKIP][ESS]":
|
||||
return "WPA2-PSK (TKIP)";
|
||||
break;
|
||||
case "[WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA2-PSK (TKIP) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP+CCMP][WPS][ESS]":
|
||||
return "WPA-PSK (TKIP/AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP][WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP)";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES)";
|
||||
break;
|
||||
case "[WPA-EAP-CCMP+TKIP][WPA2-EAP-CCMP+TKIP-preauth][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES) with Preauth";
|
||||
break;
|
||||
case "[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (TKIP/AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]":
|
||||
return "WPA/WPA2-PSK (AES) with WPS";
|
||||
break;
|
||||
case "[WPA-PSK-TKIP][ESS]":
|
||||
return "WPA-PSK (TKIP)";
|
||||
break;
|
||||
case "[WEP][ESS]":
|
||||
return "WEP";
|
||||
break;
|
||||
case "[ESS]":
|
||||
return "None";
|
||||
break;
|
||||
default:
|
||||
return $security;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
+129
-81
@@ -1,75 +1,77 @@
|
||||
<?php
|
||||
/**
|
||||
* WiFi-config page stylesheet.
|
||||
*
|
||||
* Emits CSS to the browser with a `Content-type: text/css` header. Used
|
||||
* exclusively by admin/wifi.php to style the WiFi configuration UI
|
||||
* (network list cards, scan results, info panels). Theme colours are
|
||||
* loaded from /etc/pistar-css.ini (operator-overridable via
|
||||
* admin/expert/edit_dashboard.php) when that file exists, otherwise
|
||||
* fall back to the built-in palette below.
|
||||
*
|
||||
* The PHP header here is a near-duplicate of css/pistar-css.php's
|
||||
* theme-load block — kept in lockstep with that file. The CSS body is
|
||||
* WiFi-specific and intentionally diverges.
|
||||
*
|
||||
* Do NOT edit this file by hand. The same long-standing typos in
|
||||
* variable names ($bannerDropShaddows, $tableHeadDropShaddow) are
|
||||
* preserved here because the CSS body interpolates them by name —
|
||||
* see the matching note in css/pistar-css.php.
|
||||
*/
|
||||
|
||||
// Output CSS, not the default text/html.
|
||||
header('Content-type: text/css');
|
||||
|
||||
// Do not edit this file, instead use the new dashboard editor in the expert section.
|
||||
// New CSS Overlay for Pi-Star, to allow setting the variables from outside this file.
|
||||
// Output CSS and not plain text
|
||||
header("Content-type: text/css");
|
||||
// Check if the config file exists
|
||||
if (file_exists('/etc/pistar-css.ini')) {
|
||||
// Load the operator's theme overrides.
|
||||
// Use the values from the file
|
||||
$piStarCssFile = '/etc/pistar-css.ini';
|
||||
if (fopen($piStarCssFile, 'r')) {
|
||||
$piStarCss = parse_ini_file($piStarCssFile, true);
|
||||
}
|
||||
|
||||
// Map parsed INI values onto the variables the CSS body interpolates.
|
||||
$backgroundPage = $piStarCss['Background']['Page']; // page background (usually off-white)
|
||||
$backgroundContent = $piStarCss['Background']['Content']; // white background in the content section
|
||||
$backgroundBanners = $piStarCss['Background']['Banners']; // the ubiquitous Pi-Star red
|
||||
$textBanners = $piStarCss['Text']['Banners']; // usually white
|
||||
$bannerDropShaddows = $piStarCss['Text']['BannersDrop']; // banner drop-shadow colour
|
||||
$tableHeadDropShaddow = $piStarCss['Tables']['HeadDrop']; // table-header drop-shadow colour
|
||||
$textContent = $piStarCss['Content']['Text']; // section title colour
|
||||
$tableRowEvenBg = $piStarCss['Tables']['BgEven']; // table row background (even)
|
||||
$tableRowOddBg = $piStarCss['Tables']['BgOdd']; // table row background (odd)
|
||||
if (fopen($piStarCssFile,'r')) { $piStarCss = parse_ini_file($piStarCssFile, true); }
|
||||
|
||||
// Set the Values from the config file
|
||||
$backgroundPage = $piStarCss['Background']['Page']; // usually off-white
|
||||
$backgroundContent = $piStarCss['Background']['Content']; // The White background in the content section
|
||||
$backgroundBanners = $piStarCss['Background']['Banners']; // The ubiquitous Pi-Star Red
|
||||
$textBanners = $piStarCss['Text']['Banners']; // Usually white
|
||||
$bannerDropShaddows = $piStarCss['Text']['BannersDrop']; // Banner drop shaddow colour
|
||||
$tableHeadDropShaddow = $piStarCss['Tables']['HeadDrop']; // Table Headder drop shaddows
|
||||
$textContent = $piStarCss['Content']['Text']; // Used for the section titles
|
||||
$tableRowEvenBg = $piStarCss['Tables']['BgEven']; // Table Row BG Colour (Even)
|
||||
$tableRowOddBg = $piStarCss['Tables']['BgOdd']; // Table Row BG Colour (Odd)
|
||||
|
||||
} else {
|
||||
// Fallback palette used when /etc/pistar-css.ini is absent.
|
||||
$backgroundPage = 'edf0f5'; // page background (usually off-white)
|
||||
$backgroundContent = 'ffffff'; // white background in the content section
|
||||
$backgroundBanners = 'dd4b39'; // the ubiquitous Pi-Star red
|
||||
$textBanners = 'ffffff'; // usually white
|
||||
$bannerDropShaddows = '303030'; // banner drop-shadow colour
|
||||
$tableHeadDropShaddow = '8b0000'; // table-header drop-shadow colour
|
||||
$textContent = '000000'; // section title colour
|
||||
$tableRowEvenBg = 'f7f7f7'; // table row background (even)
|
||||
$tableRowOddBg = 'd0d0d0'; // table row background (odd)
|
||||
// Default values
|
||||
$backgroundPage = "f3f4f8"; // soft neutral page background
|
||||
$backgroundContent = "ffffff"; // The White background in the content section
|
||||
$backgroundBanners = "4f46e5"; // Accent colour (was the red dd4b39)
|
||||
$textBanners = "ffffff"; // Usually white
|
||||
$bannerDropShaddows = "1e1b4b"; // Banner drop shaddow colour
|
||||
$tableHeadDropShaddow = "3730a3"; // Table Headder drop shaddows
|
||||
$textContent = "111827"; // Used for the section titles
|
||||
$tableRowEvenBg = "f8fafc"; // Table Row BG Colour (Even)
|
||||
$tableRowOddBg = "eef0f5"; // Table Row BG Colour (Odd)
|
||||
}
|
||||
?>
|
||||
body {
|
||||
background-color: #<?php echo $backgroundBanners; ?>;
|
||||
background-color: #<?php echo $backgroundPage; ?>;
|
||||
color: #<?php echo $textContent; ?>;
|
||||
font: 13px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.red {
|
||||
color:red;
|
||||
color:#c0392b;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.green {
|
||||
color:green;
|
||||
color:#1e8f4e;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.network {
|
||||
border:1px solid;
|
||||
border:1px solid rgba(0,0,0,0.1);
|
||||
border-radius:10px;
|
||||
text-align:left;
|
||||
padding-top:5px;
|
||||
padding-left:5px;
|
||||
background-color: #<?php echo $tableRowOddBg; ?>;
|
||||
padding:12px 14px;
|
||||
margin-bottom: 12px;
|
||||
background-color: #<?php echo $backgroundContent; ?>;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.04);
|
||||
}
|
||||
|
||||
/* Per-network entry box - the JS-generated markup spells this class two
|
||||
different ways ("NetworkBoxes" from PHP, "Networkboxes" from functions.js),
|
||||
so both are styled here to look right regardless of which path renders it. */
|
||||
.NetworkBoxes, .Networkboxes {
|
||||
border:1px solid rgba(0,0,0,0.08);
|
||||
border-radius:8px;
|
||||
background-color: #<?php echo $backgroundPage; ?>;
|
||||
padding: 10px 12px 12px 12px;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.tableft {
|
||||
@@ -81,76 +83,122 @@ body {
|
||||
textarea {
|
||||
width:699px;
|
||||
height:499px;
|
||||
border-radius:8px;
|
||||
border:1px solid rgba(0,0,0,0.18);
|
||||
}
|
||||
|
||||
input.button {
|
||||
width:80%;
|
||||
border:1px solid;
|
||||
border:1px solid rgba(0,0,0,0.2);
|
||||
border-radius:8px;
|
||||
}
|
||||
|
||||
input[type=text],input[type=password] {
|
||||
border:1px solid;
|
||||
border:1px solid rgba(0,0,0,0.2);
|
||||
border-radius:6px;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
input[type=button],input[type=submit] {
|
||||
border:1px solid;
|
||||
border-radius:5px;
|
||||
background: #<?php echo $backgroundBanners; ?>;
|
||||
color: #<?php echo $textBanners; ?>;
|
||||
border:none;
|
||||
border-radius:999px;
|
||||
padding: 9px 20px;
|
||||
font-weight: 600;
|
||||
cursor:pointer;
|
||||
box-shadow: 0 2px 6px rgba(15,23,42,0.16);
|
||||
transition: filter 0.15s ease, box-shadow 0.15s ease;
|
||||
}
|
||||
|
||||
input[type=button]:hover,input[type=submit]:hover {
|
||||
filter: brightness(1.08);
|
||||
box-shadow: 0 4px 10px rgba(15,23,42,0.22);
|
||||
}
|
||||
|
||||
.infoheader {
|
||||
width:100%;
|
||||
text-align:center;
|
||||
margin-top:10px;
|
||||
border-bottom: 1px solid;
|
||||
font-weight: 700;
|
||||
font-size: 15px;
|
||||
margin-top:14px;
|
||||
margin-bottom: 12px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px solid rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
.infobox {
|
||||
background-color: #<?php echo $backgroundBanners; ?>;
|
||||
font-weight: bold;
|
||||
background-color: #<?php echo $backgroundContent; ?>;
|
||||
width:100%;
|
||||
border-radius:12px;
|
||||
border: 1px solid rgba(0,0,0,0.08);
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.04);
|
||||
padding: 16px 18px;
|
||||
margin-bottom: 16px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.infobox form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.intinfo {
|
||||
background-color: #<?php echo $tableRowOddBg; ?>;
|
||||
background-color: #<?php echo $backgroundContent; ?>;
|
||||
color: #<?php echo $textContent; ?>;
|
||||
width: 398px;
|
||||
text-align: left;
|
||||
border-right: 1px solid;
|
||||
border-left: 1px solid;
|
||||
border: 1px solid rgba(0,0,0,0.08);
|
||||
border-radius: 12px 0 0 12px;
|
||||
border-right: none;
|
||||
float: left;
|
||||
border-bottom:1px solid;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
box-sizing: border-box;
|
||||
padding: 0 14px 10px 14px;
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
||||
}
|
||||
|
||||
.wifiinfo {
|
||||
background-color: #<?php echo $tableRowOddBg; ?>;
|
||||
background-color: #<?php echo $backgroundContent; ?>;
|
||||
color: #<?php echo $textContent; ?>;
|
||||
margin: 0 0 0 400px;
|
||||
border-right: 1px solid;
|
||||
border: 1px solid rgba(0,0,0,0.08);
|
||||
border-radius: 0 12px 12px 0;
|
||||
text-align: left;
|
||||
border-bottom:1px solid;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
box-sizing: border-box;
|
||||
padding: 0 14px 10px 14px;
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
||||
}
|
||||
|
||||
.intheader {
|
||||
background-color: #<?php echo $backgroundBanners; ?>;
|
||||
color: #<?php echo $textBanners; ?>;
|
||||
text-align:center;
|
||||
background: transparent;
|
||||
color: #<?php echo $textContent; ?>;
|
||||
text-align:left;
|
||||
width:100%;
|
||||
font-weight: bold;
|
||||
box-sizing: border-box;
|
||||
padding: 12px 0 10px 0;
|
||||
font-weight: 700;
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
border-bottom: 2px solid #<?php echo $backgroundBanners; ?>;
|
||||
}
|
||||
|
||||
.intfooter {
|
||||
background-color: #<?php echo $backgroundBanners; ?>;
|
||||
color: #<?php echo $textBanners; ?>;
|
||||
background: transparent;
|
||||
color: #6b7280;
|
||||
width:100%;
|
||||
border-top:1px solid;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 4px 0 4px;
|
||||
border-top:1px solid rgba(0,0,0,0.08);
|
||||
float:left;
|
||||
text-align:center;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.tail {
|
||||
background-color: #<?php echo $backgroundBanners; ?>;
|
||||
color: #<?php echo $backgroundBanners; ?>;
|
||||
background-color: transparent;
|
||||
color: transparent;
|
||||
width:100%;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user