Files
web-check/api/get-ip.js
Alicia Sykes 1298b9431d ref: Reliability improvments and fixes
- Sitemap endpoint now recursively expands sitemap-index files
  - Fixes #165
- Strips :port from target URLs in get-ip, dns, dns-server, ports, mail-config
  - Fixes #203
- Configurable trust proxy (TRUST_PROXY env) so app works behind Traefik/nginx
  - Fixes #157
- Tranco rank now correctly says "top 1 million" (was "100 million")
  - Fixes #257
- Adds engines.node ">=20" so Vercel picks a supported runtime
  - Re #212
- Raises Vercel maxDuration from 10s to 60s, cutting most 504 timeouts
  - Re #251
  - Re #287
- Bumps axios 1.4.8 to 1.16, closing 4 high-severity SSRF/DoS CVEs
  - Re #289
- Fixes mail-config crash where dns module was awaited as if promise-based
- Adds reusable structured logging util for the API
- Bumps a whole bunch of deps, and resolves lots of open npm CVEs
2026-05-04 14:32:51 +01:00

19 lines
550 B
JavaScript

import dns from 'dns';
import middleware from './_common/middleware.js';
import { parseTarget } from './_common/parse-target.js';
// Resolve the IP address for the target hostname.
const lookupAsync = (address) => new Promise((resolve, reject) => {
dns.lookup(address, (err, ip, family) => {
if (err) reject(err); else resolve({ ip, family });
});
});
const ipHandler = async (url) => {
const { hostname } = parseTarget(url);
return await lookupAsync(hostname);
};
export const handler = middleware(ipHandler);
export default handler;