network v0.3.8 [extra]


Сеть: сканер устройств, WireGuard/Guacamole/fail2ban-мониторы, MAC-блокировки, сниффер.

versiondatecommitфайлов
0.3.82026-09-162d7d04615b3113

README

# network `0.3.8`

Карта домашней сети: кто онлайн, кто новый, кто пропал.

Тип: Модуль. Категория: `extra`. Зависимостей нет.
## Описание
Глаза бота в локалке `10.10.10.0/24`. По кругу ходит nmap, сверяется с кешем и докладывает: новое устройство, переподключение, отключение (только после нескольких пропусков подряд — спасает дебаунс), смена IP. Мелкие повторы склеиваются агрегацией. Каждому устройству копятся статистика и открытые порты, имена подписываются вручную (`nmap_setname` принимается и из TG, и из веба), знакомые MAC — в игнор-лист.

Доп. источники (fail2ban, WireGuard, Guacamole — код в своих модулях) подключаются через `register_monitor`. Длинные списки в TG режутся на чанки по 3000 символов.
## Возможности
- `scanner` `{}` → движок сканирования (кеш устройств)
- `cache_file` `{}` → путь кеша устройств
- `ignored_file` `{}` → путь игнор-листа
- `devices_snapshot` `{}` → `{total, online, devices[]}` — обогащённый снимок для мониторинга
- `register_monitor` `{name, factory, interval_s, type, silent}` → плагин доп. источника
## Права
- `nmap_manage` — Сканер сети (GET/POST /api/admin/nmap*)
- `receive_notifications_nmap` — Уведомления сканера сети (новые/потерянные устройства)
- `receive_notifications_nmap_edit` — Право менять себе уведомления сканера сети
## Telegram
- кнопка «📡 Сканирование» → меню, постраничные списки устройств и статистики (просмотр — право `view_net_status`, изменения — `nmap_manage`)
- переименование устройств диалогом (`net_setname` / `nmap_setname`)
## Web
- `GET /api/network/devices` — устройства для мониторинга
- `GET /api/admin/nmap` — устройства + игнор-лист
- `POST /api/admin/nmap/name` — подписать имя `{mac, name}`
- `POST /api/admin/nmap/ignore` — игнор `{action: add|remove, mac}`
- `POST /api/network/nmap/delete` — удалить устройство (только веб, в TG удаления нет)
- карточка «Сканер сети»
## События шины
- излучает `network.device_new`, `network.device_reconnected`, `network.device_disconnected`, `network.device_ip_changed` (по одному на устройство)
## Конфигурация (`config.schema.json`)
- обязательных нет; опциональные (дефолты):
  - `SCAN_NETWORK_RANGE` = `10.10.10.0/24` — диапазон сканирования
  - `CHECK_DURATION_NSCAN_LONG` = `30` — длинный цикл, сек
  - `CHECK_DURATION_NSCAN_FAST` = `5` — быстрый цикл, сек
  - `DEBOUNCE_COUNT` = `2` — пропусков до «пропал»
  - `AGGREGATION_INTERVAL` = `300` — окно склейки уведомлений, сек
  - `AGGREGATION_MAX_CHARS` = `3500` — лимит склеенного текста
  - `NOTIF_MAX_RETRIES` = `3` — ретраи уведомлений
  - `NOTIF_RETRY_BACKOFF` = `1.5` — backoff ретраев
  - `F2B_ENABLED` = `1` — штатный монитор fail2ban вкл

Манифест

{
  "name": "network",
  "version": "0.3.8",
  "category": "extra",
  "description": "Сеть: сканер устройств, WireGuard/Guacamole/fail2ban-мониторы, MAC-блокировки, сниффер.",
  "requires": [],
  "rights": [],
  "api_methods": [],
  "web_routes": [],
  "commit": "2d7d04615b31be9f5bbd91d5d61671182164bf39",
  "updated": "2026-09-16 16:35:50 +0300",
  "integrity": "sha256:d3b1ccc1fee0850c875620129b6dde2063fa3aa066fbc98ff4d793ce3938a6ef",
  "tree_url": "http://10.10.10.30:3000/euk0r/bot_modular/src/branch/main/modules/network",
  "raw_url": "http://10.10.10.30:3000/euk0r/bot_modular/raw/branch/main/modules/network/module.py",
  "files": "[13 файлов — см. вкладки ниже]",
  "note": "Модуль проверки локальной сети",
  "_extra": {
    "api": "",
    "events_emitted": "",
    "events_subscribed": "[]",
    "audit_allow": "",
    "uses_rights": "",
    "shared_routes": "",
    "config_schema": "config.schema.json",
    "env_example": ".env.example"
  }
}

Файлы и исходники

Дерево файлов

  • · корень
    • 3.8 КБ
    • 2.8 КБ
    • 0.3 КБ
    • 6.6 КБ
    • 2.3 КБ
    • 11.3 КБ
    • 38.4 КБ
    • 6.1 КБ
    • 16.3 КБ
    • 1.2 КБ
    • 4.5 КБ
  • web/
    • 1.1 КБ
    • 6.0 КБ

Предпросмотр

Выберите файл в дереве выше — код откроется здесь.