Improved MAC address formatting
This commit is contained in:
parent
02980bbad5
commit
20b54f5b27
|
@ -7,43 +7,44 @@ Copyright (C) 2011-2023 Thomas Hooge
|
||||||
SPDX-License-Identifier: GPL-3.0-or-later
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
// strip mac address to 12 char string
|
function strip_mac($mac, $caps=true) {
|
||||||
function strip_mac($mac) {
|
// strip mac address to 12 char string
|
||||||
// strip chars we don't need
|
// strip chars we don't need
|
||||||
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac);
|
$mac = preg_replace('/[^a-fA-F0-9]/', '', $mac);
|
||||||
|
if ($caps) {
|
||||||
// capitalize (just because it looks better eh)
|
$mac = strtoupper($mac);
|
||||||
$mac = strtoupper($mac);
|
} else {
|
||||||
|
$mac = strtolower($mac);
|
||||||
// and return
|
}
|
||||||
return ($mac);
|
return $mac;
|
||||||
}
|
}
|
||||||
|
|
||||||
// rebuild mac address
|
function write_mac($mac, $user_mac='xx:xx:xx:xx:xx:xx') {
|
||||||
function write_mac($mac) {
|
// rebuild mac address using user supplied format
|
||||||
// check string length
|
|
||||||
if (strlen($mac)!=12) {
|
if (strlen($mac) != 12) {
|
||||||
// if the MAC is empty, or for whatever reason incorrect, just return
|
// if the MAC is empty, or for whatever reason incorrect, just return
|
||||||
return $mac;
|
return $mac;
|
||||||
} else {
|
|
||||||
// count to 12...
|
|
||||||
for ($i=0; $i<12; $i++) {
|
|
||||||
// ... and strip mac to pieces
|
|
||||||
${"mac".$i} = $mac{$i};
|
|
||||||
}
|
|
||||||
|
|
||||||
// get user preference
|
|
||||||
$user_mac = $_SESSION['suser_mac'];
|
|
||||||
|
|
||||||
// count to 12 again...
|
|
||||||
for($i=0; $i<12; $i++) {
|
|
||||||
// ... and replace user preference with pieces
|
|
||||||
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// and return
|
|
||||||
return $user_mac;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check format of user mac: count upper or lower char
|
||||||
|
$chars = count_chars($user_mac, 1);
|
||||||
|
if (array_key_exists(88, $chars) and $chars[88] == 12) {
|
||||||
|
$pattern = '/X/';
|
||||||
|
$mac = strtoupper($mac);
|
||||||
|
} elseif (array_key_exists(120, $chars) and $chars[120] == 12) {
|
||||||
|
$pattern = '/x/';
|
||||||
|
$mac = strtolower($mac);
|
||||||
|
} else {
|
||||||
|
// invalid format
|
||||||
|
return $mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
for($i=0; $i<12; $i++) {
|
||||||
|
$user_mac = preg_replace($pattern, $mac[$i], $user_mac, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $user_mac;
|
||||||
}
|
}
|
||||||
|
|
||||||
// redirect page
|
// redirect page
|
||||||
|
|
3
node.php
3
node.php
|
@ -231,7 +231,7 @@ $sth = $dbh->prepare($sql);
|
||||||
$sth->execute([$id]);
|
$sth->execute([$id]);
|
||||||
|
|
||||||
$node = $sth->fetch(PDO::FETCH_OBJ);
|
$node = $sth->fetch(PDO::FETCH_OBJ);
|
||||||
$node->mac = write_mac($node->mac);
|
$node->mac = write_mac($node->mac, $_SESSION['suser_mac']);
|
||||||
$smarty->assign("node", $node);
|
$smarty->assign("node", $node);
|
||||||
|
|
||||||
// nat
|
// nat
|
||||||
|
@ -281,6 +281,7 @@ $sql = "SELECT node_id AS id, node_ip AS ip, node_mac AS mac,
|
||||||
$sth = $dbh->prepare($sql);
|
$sth = $dbh->prepare($sql);
|
||||||
$sth->execute([$id]);
|
$sth->execute([$id]);
|
||||||
$node = $sth->fetch(PDO::FETCH_OBJ);
|
$node = $sth->fetch(PDO::FETCH_OBJ);
|
||||||
|
$node->mac = write_mac($node->mac, $_SESSION['suser_mac']);
|
||||||
$node->flags = explode(',', $node->flags);
|
$node->flags = explode(',', $node->flags);
|
||||||
$smarty->assign("node", $node);
|
$smarty->assign("node", $node);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue