diff options
-rw-r--r-- | etc/inc/pfsense-utils.inc | 24 | ||||
-rwxr-xr-x | usr/local/www/diag_arp.php | 10 | ||||
-rwxr-xr-x | usr/local/www/status_dhcp_leases.php | 18 | ||||
-rwxr-xr-x | usr/local/www/status_interfaces.php | 9 |
4 files changed, 56 insertions, 5 deletions
diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index be174af..5e676db 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -2181,4 +2181,28 @@ function filter_rules_compare($a, $b) { return compare_interface_friendly_names($a['interface'], $b['interface']); } +/****f* pfsense-utils/load_mac_manufacturer_table + * NAME + * load_mac_manufacturer_table + * INPUTS + * none + * RESULT + * returns associative array with MAC-Manufacturer pairs + ******/ +function load_mac_manufacturer_table() { + /* load MAC-Manufacture data from the file */ + $macs=file("/usr/local/share/nmap/nmap-mac-prefixes"); + if ($macs){ + foreach ($macs as $line){ + if (preg_match('/([0-9A-Fa-f]{6}) (.*)$/', $line, $matches)){ + /* store values like this $mac_man['000C29']='VMW=ware' */ + $mac_man["$matches[1]"]=$matches[2]; + } + } + return $mac_man; + } else + return -1; + +} + ?> diff --git a/usr/local/www/diag_arp.php b/usr/local/www/diag_arp.php index 9df8be1..3adc2a8 100755 --- a/usr/local/www/diag_arp.php +++ b/usr/local/www/diag_arp.php @@ -288,6 +288,8 @@ foreach ($data as &$entry) { // Sort the data alpha first $data = msort($data, "dnsresolve"); +// Load MAC-Manufacturer table +$mac_man = load_mac_manufacturer_table(); ?> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> @@ -303,7 +305,13 @@ $data = msort($data, "dnsresolve"); <?php foreach ($data as $entry): ?> <tr> <td class="listlr"><?=$entry['ip'];?></td> - <td class="listr"><?=$entry['mac'];?></td> + <td class="listr"> + <?php + $mac=$entry['mac']; + $mac_hi = strtoupper($mac[0] . $mac[1] . $mac[3] . $mac[4] . $mac[6] . $mac[7]); + if(isset($mac_man[$mac_hi])){ print "<span title=\"$mac\">{$mac_man[$mac_hi]}</span>"; } + else{ print $mac; } + ?> <td class="listr"> <?php echo str_replace("Z_ ", "", $entry['dnsresolve']); diff --git a/usr/local/www/status_dhcp_leases.php b/usr/local/www/status_dhcp_leases.php index 39ed024..007c1a8 100755 --- a/usr/local/www/status_dhcp_leases.php +++ b/usr/local/www/status_dhcp_leases.php @@ -324,6 +324,8 @@ foreach ($pools as $data) { <td class="listhdrr"><a href="#"><?=gettext("Lease Type"); ?></a></td> </tr> <?php +// Load MAC-Manufacturer table +$mac_man = load_mac_manufacturer_table(); foreach ($leases as $data) { if (($data['act'] == "active") || ($data['act'] == "static") || ($_GET['all'] == 1)) { if ($data['act'] != "active" && $data['act'] != "static") { @@ -357,10 +359,20 @@ foreach ($leases as $data) { } echo "<tr>\n"; echo "<td class=\"listlr\">{$fspans}{$data['ip']}{$fspane} </td>\n"; + $mac=$data['mac']; + $mac_hi = strtoupper($mac[0] . $mac[1] . $mac[3] . $mac[4] . $mac[6] . $mac[7]); if ($data['online'] != "online") { - echo "<td class=\"listr\">{$fspans}<a href=\"services_wol.php?if={$data['if']}&mac={$data['mac']}\" title=\"" . gettext("send Wake on LAN packet to this MAC address") ."\" onclick=\"return confirm('" . gettext("Send Wake on LAN packet to this MAC address?") . "')\">{$data['mac']}</a>{$fspane} </td>\n"; - } else { - echo "<td class=\"listr\">{$fspans}{$data['mac']}{$fspane} </td>\n"; + if(isset($mac_man[$mac_hi])){ // Manufacturer for this MAC is defined + echo "<td class=\"listr\">{$fspans}<a href=\"services_wol.php?if={$data['if']}&mac=$mac\" title=\"" . gettext("$mac - send Wake on LAN packet to this MAC address") ."\">{$mac_man[$mac_hi]}</a>{$fspane} </td>\n"; + }else{ + echo "<td class=\"listr\">{$fspans}<a href=\"services_wol.php?if={$data['if']}&mac={$data['mac']}\" title=\"" . gettext("send Wake on LAN packet to this MAC address") ."\">{$data['mac']}</a>{$fspane} </td>\n"; + } + }else{ + if(isset($mac_man[$mac_hi])){ // Manufacturer for this MAC is defined + echo "<td class=\"listr\">{$fspans}<span title=\"$mac\">{$mac_man[$mac_hi]}</span>{$fspane} </td>\n"; + }else{ + echo "<td class=\"listr\">{$fspans}{$data['mac']}{$fspane} </td>\n"; + } } echo "<td class=\"listr\">{$fspans}" . htmlentities($data['hostname']) . "{$fspane} </td>\n"; if ($data['type'] != "static") { diff --git a/usr/local/www/status_interfaces.php b/usr/local/www/status_interfaces.php index 266d36b..6c98a34 100755 --- a/usr/local/www/status_interfaces.php +++ b/usr/local/www/status_interfaces.php @@ -68,6 +68,8 @@ include("head.inc"); $ifdescrs = get_configured_interface_with_descr(false, true); foreach ($ifdescrs as $ifdescr => $ifname): $ifinfo = get_interface_info($ifdescr); + // Load MAC-Manufacturer table + $mac_man = load_mac_manufacturer_table(); ?> <?php if ($i): ?> <tr> @@ -175,7 +177,12 @@ include("head.inc"); <tr> <td width="22%" class="vncellt"><?=gettext("MAC address");?></td> <td width="78%" class="listr"> - <?=htmlspecialchars($ifinfo['macaddr']);?> + <?php + $mac=$ifinfo['macaddr']; + $mac_hi = strtoupper($mac[0] . $mac[1] . $mac[3] . $mac[4] . $mac[6] . $mac[7]); + if(isset($mac_man[$mac_hi])){ print "<span title=\"$mac\">" . htmlspecialchars($mac_man[$mac_hi]); print "</span>"; } + else {print htmlspecialchars($mac);} + ?> </td> </tr> <?php endif; if ($ifinfo['status'] != "down"): ?> |