/
kochkatech
/
CorpGame
Обзор
Документация
Войти
/
kochkatech
/
CorpGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
master
backend/src/network/network.controller.ts
34 строки
2 KB
kochkareal
feat(devops): свод к одному процессу Node на SQLite, портативная сборка без Docker; аудит безопасности
06 авг 2026, 15:06
06 авг 2026, 15:06
3266bcd
Код
Авторство
О чём код?
import { Controller, Get } from '@nestjs/common'; import { networkInterfaces } from 'node:os'; /** * Без авторизации: список LAN-адресов сервера нужен на главной странице ДО того, как кто-то * вошёл в игру — чтобы избавить ведущего от ручного `ipconfig`, когда страница открыта через * localhost. Ничего секретного тут нет — это то же самое, что видно в свойствах сети Windows. */ @Controller('network') export class NetworkController { /** * Реальные адреса в локальной сети: без loopback, link-local (169.254.*) и виртуальных * адаптеров Docker/Hyper-V/WSL/VPN — на них есть IP, но телефон игрока до них не достучится, * а предложить такой адрес — только запутать. Тот же список фильтров, что и в * scripts/start.ps1 (Get-LanIPs) — если меняете один, обновите и другой. */ @Get('lan-ips') getLanIPs(): { ips: string[] } { const ips: string[] = []; const interfaces = networkInterfaces(); for (const [name, addresses] of Object.entries(interfaces)) { if (/Loopback|vEthernet|WSL|Virtual|Docker/i.test(name)) continue; for (const addr of addresses ?? []) { if (addr.family !== 'IPv4') continue; if (addr.internal) continue; if (addr.address.startsWith('169.254.')) continue; ips.push(addr.address); } } return { ips }; } }