TGViewer
Серверная Админа | Компьютерные сети Серверная Админа | Компьютерные сети @school_network · 26.6K subscribers
Post #2858 3.26K
👋 Привет, сетевой друг!

Сегодня про Network Insight - TypeScript-библиотеку, которая собирает сетевую информацию прямо из приложения.

🟣Она умеет определить публичный IP, посмотреть сетевые интерфейсы машины, получить геолокацию IP и собрать всё это в один объект:

const networkService = NetworkService.getInstance();

const info = await networkService.getFullNetworkInfo();
console.log(info);


В ответ можно получить клиентский и публичный IP, город и страну, координаты, timezone и данные интерфейсов вроде eth0 с адресом, маской, MAC и CIDR.

🟣Отдельно интересна работа с Express. Библиотека сразу даёт готовый роутер:

app.use('/api/network', createNetworkRouter());


После этого появляются /ip, /public-ip, /location, /interfaces, /full и /health.

То есть не нужно каждый раз писать собственные обработчики для сетевой диагностики.

🟣Публичный IP библиотека получает через несколько внешних провайдеров с fallback-механизмом и кэшированием. Если один сервис не отвечает, можно попробовать другой, а повторные запросы не обязательно уходят наружу.

Для геолокации используется похожая схема с провайдерами, а TTL кэша можно менять прямо во время работы:

networkService.updateConfig({
cache: { ttl: 120000 }
});


🟣Есть и более практичный вариант - middleware. Можно один раз добавить сетевую информацию в req и использовать её дальше в приложении:

req.network = {
clientIp: networkService.getClientIp(req),
service: networkService
};


Заодно библиотека умеет делать health check отдельно для IP-сервисов, геолокации и локальной сетевой информации.

🟣Под капотом всё написано на TypeScript, есть CommonJS и ESM, декларации типов, Jest-тесты и заявлено 100% покрытие основных модулей.
По сути, Network Insight закрывает типичный набор задач, для которых обычно приходится отдельно подключать os.networkInterfaces(), сервис определения IP, API геолокации и писать вокруг всего этого свою обвязку.

Серверная Админа | Zeroday | #Инструмент
  • 🔥 7
  • ❤ 2
  • 👾 1
More from @school_network
  1. Sep 29, 2026👋 Привет, сетевой друг! Сегодня про webcensus - инструмент для довольно специфичной задач…
  2. Sep 28, 2026Почему SAML снова и снова ломается на одном и том же месте? SAML больше 20 лет отвечает за…
  3. Sep 26, 2026👨‍💻Серверная Админа | #мем
  4. Sep 25, 2026👋 Привет, сетевой друг! Сегодня про Ethernet, который мы привыкли воспринимать как обычны…
  5. Sep 24, 2026👋 Привет, сетевой друг! Собрал три способа прокачать защиту MikroTik - особенно если роут…
  6. Sep 24, 2026Когда в ИТ три человека, появляется четвёртая работа — выяснять, кто чем занимается. — Кто…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →