From 82a91c0e889b2f4b164007450325720a740b2cda Mon Sep 17 00:00:00 2001 From: "s.galanskiy" Date: Tue, 10 Jun 2025 16:00:34 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SRV/models/auth.py | 1 - SRV/services/subnet_service.py | 14 +++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/SRV/models/auth.py b/SRV/models/auth.py index 24e30be..479f967 100644 --- a/SRV/models/auth.py +++ b/SRV/models/auth.py @@ -1,4 +1,3 @@ -# models.py from pydantic import BaseModel from typing import Optional diff --git a/SRV/services/subnet_service.py b/SRV/services/subnet_service.py index 3172125..9c21315 100644 --- a/SRV/services/subnet_service.py +++ b/SRV/services/subnet_service.py @@ -84,7 +84,7 @@ class DeviceInfoCollector: def __init__(self): self.mac_lookup = MacLookup() - @lru_cache(maxsize=1000) # Снижено с 10000 + @lru_cache(maxsize=1000) def get_vendor(self, mac: str) -> str: try: return self.mac_lookup.lookup(mac) @@ -180,10 +180,8 @@ class SubnetService: devices = [] now = datetime.now(ZoneInfo("UTC")).isoformat() try: - # Загружаем старую карту saved_devices = self.storage.load_devices() - # Получаем локальное устройство local_device = self._get_local_device(subnet) if local_device: local_device.status = "online" @@ -192,18 +190,15 @@ class SubnetService: if local_device.mac: saved_devices[local_device.mac] = local_device - # Сканируем подсеть discovered_devices = self.network_scanner.scan(subnet) - # Обрабатываем обнаруженные устройства def process_device(ip_mac: Tuple[str, str]) -> Optional[Device]: ip, mac = ip_mac if local_device and ip == local_device.ip: return None - # Проверяем, есть ли устройство в старой карте + existing_device = saved_devices.get(mac) if existing_device: - # Обновляем данные, если MAC совпадает return Device( ip=ip, mac=mac, @@ -213,7 +208,6 @@ class SubnetService: status="online", last_seen=now ) - # Новое устройство vendor = self.device_info.get_vendor(mac) hostname = self.device_info.get_hostname(ip) open_ports = self.port_scanner.scan(ip) @@ -231,17 +225,15 @@ class SubnetService: device_results = executor.map(process_device, discovered_devices) devices.extend([d for d in device_results if d is not None]) - # Добавляем оффлайн-устройства из старой карты + # Добавляет устройства со старой карты, в нынешнюю при отсутствии со статусом offline active_macs = {d.mac for d in devices if d.mac} for mac, device in saved_devices.items(): if mac not in active_macs: device.status = "offline" devices.append(device) - # Сортировка по IP devices.sort(key=lambda x: int(ipaddress.IPv4Address(x.ip))) - # Сохраняем обновлённую карту for device in devices: if device.mac: saved_devices[device.mac] = device