home_router
Nokia / Airtel GPON Home Router API & Web Dashboard
Управляйте, автоматизируйте и администрируйте ваш Nokia G-2425G-A GPON Home Gateway (обычно предоставляемый Airtel Xstream Fiber и другими интернет-провайдерами) через Web Dashboard, MCP (Model Context Protocol), REST API и CLI — с постоянными псевдонимами устройств (SQLite) и без автоматизации браузера!
💡 Почему этот проект?
Проблема
Большинство домашних оптоволоконных роутеров (таких как Nokia GPON ONT от Airtel) не предоставляют официального API или интеграции для экосистем умного дома. Всякий раз, когда вы хотите:
Проверить, какие устройства в данный момент подключены к вашей Wi-Fi сети,
Назначить понятные псевдонимы (например, "Akanksha Phone", "Guestroom TV"),
Заблокировать доступ в интернет для конкретного устройства (например, для контроля экранного времени детей),
Или автоматизировать сетевые правила на основе времени или состояний умного дома...
...вам приходится вручную открывать браузер, перемещаться по медленному веб-порталу, вводить учетные данные и кликать через множество вложенных меню настроек.
Хуже того, из-за того, что веб-портал роутера использует сложную клиентскую гибридную схему шифрования (RSA-1024 + AES-128-CBC через пользовательский JavaScript SJCL), простые curl-скрипты или стандартные HTTP-запросы не работают. Большинство разработчиков прибегают к тяжелой и хрупкой автоматизации браузера (например, Selenium или Puppeteer).
Решение
Этот проект полностью восстанавливает криптографическое рукопожатие RSA + AES роутера на чистом Python.
Он взаимодействует напрямую с внутренними эндпоинтами роутера с временем отклика менее секунды и без накладных расходов на браузер. Он объединяет локальную базу данных SQLite для хранения постоянных метаданных устройств (псевдонимы, пользовательские заметки, первое/последнее появление) и оборачивает это ядро в четыре готовых к использованию интерфейса:
🌐 Web Dashboard — элегантное тёмное веб-приложение в стиле glassmorphism с живым поиском, редактированием псевдонимов и переключателями блокировки/разблокировки в один клик.
🤖 MCP Server — позволяет ИИ-агентам (таким как Antigravity, Claude, Cursor) управлять вашим Wi-Fi и блокировать/разблокировать устройства по понятным псевдонимам.
⚡ REST API (FastAPI) — отлично подходит для Home Assistant, вебхуков и пользовательской автоматизации.
🖥️ CLI — мгновенные команды в терминале и bash-скрипты.
Related MCP server: OpenWRT SSH MCP Server
🎯 Практические сценарии использования
1. 🤖 Голосовое и чат-управление через ИИ-агента (через MCP)
Подключите этот проект к любому MCP-совместимому ИИ-ассистенту (например, Claude Desktop, Antigravity IDE, Cursor). Вы можете просто сказать:
"Установи псевдоним 'Akanksha Phone' для устройства f6:cf:28:1c:bd:e5."
"Заблокируй доступ в интернет для Guestroom TV."
"Подключен ли сейчас Living Room TV к Wi-Fi?"
"Разблокируй Akanksha Phone."
ИИ-агент проверит ваши подключенные устройства, определит цель по псевдониму/имени хоста/IP/MAC и автоматически выполнит действие на вашем роутере.
2. 🌐 Визуальная веб-панель управления
Откройте http://localhost:8000/, чтобы отслеживать все подключенные устройства в адаптивном веб-интерфейсе:
Живая панель статистики: общее количество устройств, активных онлайн, заблокированных и с пользовательскими псевдонимами.
Мгновенный поиск и фильтрация: фильтрация по всем, онлайн, заблокированным или пользовательским псевдонимам.
Встроенный редактор псевдонимов: назначайте понятные псевдонимы и заметки о местоположении любому устройству.
Блокировка/разблокировка в один клик: переключайте доступ с мгновенными индикаторами загрузки и всплывающими уведомлениями.
3. 🏠 Интеграция с Home Assistant
Интегрируйте ваш роутер в Home Assistant с помощью REST API:
Автоматизация перед сном: автоматически блокируйте детские планшеты и игровые консоли в 22:00 в учебные дни.
Определение присутствия: запускайте автоматизации, когда определенные телефоны подключаются к сети или покидают её.
Переключатели на панели управления: создавайте выделенные кнопки-переключатели «Блокировать / Разблокировать интернет» на панели Lovelace в Home Assistant.
✨ Возможности
🏷️ Постоянные псевдонимы устройств — хранятся в SQLite (
data/router.db), поэтому вы можете ссылаться на устройства по понятным именам, например "Guestroom TV".🎯 Умное разрешение нескольких целей — блокировка/разблокировка/запрос по псевдониму, имени хоста, IP-адресу или MAC-адресу (поддерживается частичное совпадение без учета регистра).
🔍 Список подключенных устройств — имя хоста, IP-адрес, MAC-адрес, статус онлайн и интерфейс подключения (Ethernet, 2.4GHz 802.11, 5GHz 802.11ac).
🚫 Блокировка устройств — блокируйте доступ в интернет 24/7 для любого устройства с помощью правил родительского контроля.
✅ Разблокировка устройств — мгновенно удаляйте правила блокировки.
📋 Список заблокированных политик — просматривайте все активные политики ограничения доступа и расписания.
🔄 Автосинхронизация и самовосстанавливающиеся сессии — автоматический повторный вход и восстановление сессии при истечении сессий роутера.
🔐 Ноль накладных расходов на браузер — чистая криптографическая аутентификация через
pycryptodomeиrequests.
🏗️ Архитектура: четыре способа взаимодействия
Interface | Best For | Entry Point |
Web Dashboard | Визуальное управление, редактирование псевдонимов, живой список устройств |
|
MCP Server | ИИ-агенты (Claude, Antigravity, Cursor) |
|
REST API | Home Assistant, Node-RED, пользовательская автоматизация |
|
CLI | Быстрый доступ из терминала, cron-задачи, shell-скрипты |
|
📦 Установка
# Clone the repository
git clone https://github.com/surajnai567/airtel-router-api.git
cd airtel-router-api
# Install dependencies
pip install -r requirements.txtЗависимости: requests, pycryptodome, python-dotenv, fastapi, uvicorn, mcp
⚙️ Конфигурация
Создайте файл .env в корневом каталоге (или скопируйте из .env.example):
ROUTER_IP=192.168.1.1
ROUTER_USERNAME=admin
ROUTER_PASSWORD=your_router_password
# Optional: REST API & Dashboard settings
API_HOST=0.0.0.0
API_PORT=8000🔒 Примечание по безопасности: файлы
.envиdata/*.dbвключены в.gitignore, поэтому ваши учетные данные роутера и локальная база данных никогда не попадут в коммиты.
🌐 1. Web Dashboard и REST API
Запустите сервер:
python -m api.serverОткройте
http://localhost:8000/в вашем браузере, чтобы просмотреть Web Dashboard.Откройте
http://localhost:8000/docsдля интерактивной документации Swagger API.
REST-эндпоинты
Method | Path | Description | Payload |
|
| Список всех подключенных устройств с псевдонимами и статусом блокировки | — |
|
| Список всех заблокированных устройств с псевдонимами | — |
|
| Установить или очистить понятный псевдоним |
|
|
| Заблокировать устройство по псевдониму, имени хоста, IP или MAC |
|
|
| Разблокировать устройство по псевдониму, имени хоста, IP или MAC |
|
|
| Проверка работоспособности и статус подключения к роутеру | — |
🤖 2. Использование MCP-сервера (для ИИ-агентов)
Предоставьте инструменты роутера напрямую ИИ-агентам с помощью Model Context Protocol (MCP).
Доступные MCP-инструменты
list_devices()— возвращает отформатированную таблицу сNickname,Hostname,IP,MAC,Active,BlockedиInterface.set_device_nickname(target, nickname, notes=None)— устанавливает или обновляет понятный псевдоним устройства.block_device(target, policy_name=None)— блокирует устройство по псевдониму (например,"Guestroom TV"), имени хоста, IP или MAC.unblock_device(target)— разблокирует устройство по псевдониму, имени хоста, IP или MAC.list_blocked_devices()— возвращает активные заблокированные устройства с их псевдонимами и политиками.
Конфигурация MCP
Добавьте этот сервер в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json или mcp_config.json):
{
"mcpServers": {
"home_router": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "d:/project/routerapi"
}
}
}🖥️ 3. Использование CLI
# List all connected/known devices (with nicknames)
python -m cli.main list
# List all currently blocked devices
python -m cli.main blocked
# Block a device by MAC address or Nickname
python -m cli.main block AA:BB:CC:DD:EE:FF
# Block a device with a custom policy name
python -m cli.main block AA:BB:CC:DD:EE:FF --name "Kid_Tablet_Block"
# Unblock a device by MAC address
python -m cli.main unblock AA:BB:CC:DD:EE:FF🐍 4. Использование Python-библиотеки
from core import RouterAPI
# Initialize and authenticate
router = RouterAPI(ip_address="192.168.1.1", username="admin", password="admin_password")
if router.login():
# 1. Set a friendly nickname
router.set_nickname("f6:cf:28:1c:bd:e5", "Akanksha Phone")
# 2. Get all devices (auto-synced with SQLite)
devices = router.list_devices()
for d in devices:
print(f"[{'ONLINE' if d['active'] else 'OFFLINE'}] {d['nickname'] or d['hostname']} ({d['ip']}) - {d['mac']}")
# 3. Block directly by nickname!
router.block_device("Akanksha Phone")
# 4. Unblock by nickname!
router.unblock_device("Akanksha Phone")
# Clean up session
router.logout()📁 Структура проекта
routerapi/
├── core/ # Core business logic (the engine)
│ ├── __init__.py # Re-exports RouterAPI, DB helpers, and crypto
│ ├── client.py # RouterAPI client class with smart target resolution
│ ├── crypto.py # AES-CBC + RSA encryption implementation
│ └── db.py # SQLite database layer for persistent nicknames
│
├── api/ # REST API & Web Dashboard
│ ├── __init__.py
│ ├── server.py # FastAPI server with CORS, static routes, & models
│ └── static/ # Web Dashboard assets
│ ├── index.html # Dashboard HTML template
│ ├── style.css # Dark glassmorphism stylesheet
│ └── app.js # Frontend state management & async API calls
│
├── mcp_server/ # Model Context Protocol interface
│ ├── __init__.py
│ └── server.py # MCP server exposing router tools to AI
│
├── cli/ # Terminal interface
│ ├── __init__.py
│ └── main.py # Argparse CLI entry point
│
├── data/ # Local SQLite storage (git-ignored)
│ └── router.db # Persistent device metadata & nicknames
│
├── .env # Credentials (git-ignored)
├── .env.example # Template environment configuration
├── .gitignore
├── requirements.txt # Project dependencies
└── Readme.md # Project documentation⚠️ Примечания и отказ от ответственности
Истечение сессии и самовосстановление: сессии роутера естественным образом истекают после неактивности. API и MCP-серверы автоматически управляют повторной аутентификацией при последующих вызовах.
Совместимость с родительским контролем: поддерживает как новую прошивку (групповой контроль доступа
NPCProfileList), так и старую прошивку (политики доступаpc_config).Протестированное оборудование: протестировано на Nokia G-2425G-A GPON Home Gateway (Airtel Xstream Fiber).
📄 Лицензия
Этот проект лицензирован под лицензией MIT — подробнее см. в файле LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Ubiquiti UniFi network infrastructure for monitoring devices, managing clients, and performing configuration tasks like blocking/unblocking devices and viewing network health.101GPL 3.0
- AlicenseAqualityFmaintenanceEnables AI agents to manage OpenWRT routers remotely via SSH, supporting system monitoring, network management, OpenThread Border Router configuration, and package management through natural language commands.1914MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage UniFi network infrastructure through 50+ tools covering devices, clients, networks, WiFi, firewall rules, and guest access using the official UniFi Network API.52585MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with direct access to multi-vendor network devices for tasks like configuration management, health checks, and topology discovery through 35 specialized tools. It enables natural language control over platforms including Cisco, Juniper, and Nokia using SSH, NETCONF, and SNMP protocols.11MIT
Related MCP Connectors
Search 200+ UnoRouter models (most free), check pricing, and chat through one key
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/surajnai567/airtel-router-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server