mirror of
https://github.com/MrUnknownDE/utools.git
synced 2026-04-06 00:32:04 +02:00
39 lines
1.5 KiB
JavaScript
39 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const Sentry = require("@sentry/node");
|
|
const pino = require('pino');
|
|
const { getVendor } = require('mac-oui-lookup');
|
|
const { isValidMacAddress } = require('../utils');
|
|
|
|
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
|
|
const router = express.Router();
|
|
|
|
router.get('/', async (req, res) => {
|
|
const macRaw = req.query.mac;
|
|
const mac = typeof macRaw === 'string' ? macRaw.trim() : macRaw;
|
|
const requestIp = req.ip || req.socket.remoteAddress;
|
|
|
|
logger.info({ requestIp, mac }, 'MAC lookup request received');
|
|
|
|
if (!isValidMacAddress(mac)) {
|
|
logger.warn({ requestIp, mac }, 'Invalid MAC address for lookup');
|
|
return res.status(400).json({ success: false, error: 'Invalid MAC address format provided.' });
|
|
}
|
|
|
|
try {
|
|
const vendor = getVendor(mac);
|
|
|
|
if (vendor) {
|
|
logger.info({ requestIp, mac, vendor }, 'MAC lookup successful');
|
|
res.json({ success: true, mac, vendor });
|
|
} else {
|
|
logger.info({ requestIp, mac }, 'MAC address not found in OUI database');
|
|
res.status(404).json({ success: false, error: 'Vendor not found for this MAC address.' });
|
|
}
|
|
} catch (error) {
|
|
logger.error({ requestIp, mac, error: error.message }, 'MAC lookup failed');
|
|
Sentry.captureException(error, { extra: { requestIp, mac } });
|
|
res.status(500).json({ success: false, error: 'An unexpected error occurred during the MAC lookup.' });
|
|
}
|
|
});
|
|
|
|
module.exports = router; |