add mac vendor to scan table

This commit is contained in:
seriousm4x
2023-07-01 19:27:29 +02:00
parent 319817983e
commit debd82a288
3 changed files with 33 additions and 26 deletions

View File

@@ -95,9 +95,10 @@ func HandlerScan(c echo.Context) error {
}
type Device struct {
Name string `json:"name"`
IP string `json:"ip"`
MAC string `json:"mac"`
Name string `json:"name"`
IP string `json:"ip"`
MAC string `json:"mac"`
MACVendor string `json:"mac_vendor"`
}
// extract info from struct into data
@@ -121,24 +122,27 @@ func HandlerScan(c echo.Context) error {
dev.MAC = addr.Addr
}
if addr.Vendor != "" {
dev.Name = addr.Vendor
dev.MACVendor = addr.Vendor
} else {
dev.MACVendor = "Unknown"
}
}
if dev.IP == "" || dev.MAC == "" {
continue
}
if dev.Name == "" {
names, err := net.LookupAddr(dev.IP)
if err != nil {
dev.Name = "Unknown"
} else {
if len(names) > 0 {
dev.Name = names[0]
} else {
dev.Name = "Unknown"
}
}
names, err := net.LookupAddr(dev.IP)
if err != nil || len(names) == 0 {
dev.Name = dev.MACVendor
} else {
dev.Name = strings.TrimSuffix(names[0], ".")
}
if dev.Name == "" && dev.MACVendor == "" {
continue
}
res.Devices = append(res.Devices, dev)
}

View File

@@ -60,7 +60,6 @@
authorizedStore.set(true);
})
.catch((err) => {
console.log(err);
authorizedStore.set(false);
callout.level = 'danger';
callout.title = err.status;

View File

@@ -391,28 +391,32 @@
{#if scannedDevices.devices}
<div class="mt-3">
<div class="row align-items-center my-1">
<div class="col-md fw-bold">Name</div>
<div class="col-md fw-bold">IP</div>
<div class="col-md fw-bold">MAC</div>
<div class="col-md fw-bold">Netmask</div>
<div class="col-md fw-bold">Add</div>
<div class="col-lg-3 fw-bold">Name</div>
<div class="col-lg-1 fw-bold">IP</div>
<div class="col-lg-2 fw-bold">MAC</div>
<div class="col-lg-2 fw-bold">MAC Vendor</div>
<div class="col-lg-2 fw-bold">Netmask</div>
<div class="col-lg-2 fw-bold">Add</div>
</div>
{#each scannedDevices?.devices as device}
<hr class="my-1" />
<div class="row align-items-center my-1">
<div class="col-md">
<div class="col-lg-3">
{device.name}
</div>
<div class="col-md">
<div class="col-lg-1">
{device.ip}
</div>
<div class="col-md">
<div class="col-lg-2">
{device.mac}
</div>
<div class="col-md">
<div class="col-lg-2">
{device.mac_vendor}
</div>
<div class="col-lg-2">
{scannedDevices.netmask}
</div>
<div class="col-md">
<div class="col-lg-2">
<button
class="btn btn-sm btn-secondary py-0"
on:click={async (e) => {