"Кто дома?" через Zyxel Keenetic
-
Получаем информацию с роутера о телефонах которые находятся в домашней сети
Для получение данных необходимо создать устройство
Актуатор универсальный бинарный
и необходимо заполнить следующие параметры:mac
- мак адрес устройства (телефона) для поиска
ip
- йп роутера
port
- порт роутера, 80 по умолчанию
login
- логин роутера
password
- пароль роутераУбедитесь что установлена актуальная версия прошивки.
/** * New snippet */ const crypto = require('crypto'); const http = require('http'); module.exports = callback => { const mac = '88:28:b3:41:fb:00'; // mac-address phone or any device const ip = '192.168.0.1'; // ip router const port = 80; // port router const login = 'admin'; // login router const password = '12345' // pass router let sessionid = '' let realm = ''; let token = ''; function getHash() { const a = `${login}:${realm}:${password}`; const b = crypto.createHash('md5').update(a).digest('hex'); const c = token + b; const d = crypto.createHash('sha256').update(c).digest('hex'); return d; } function auth() { const postData = JSON.stringify({ login, password: getHash(), }, null, 2); const options = { host: ip, port: port, path: '/auth', method: 'POST', headers: { 'Content-Length': Buffer.byteLength(postData), 'Cookie': `_authorized=${login}; sysmode=router; session_id=${sessionid}`, 'Cache-Control': 'no-cache', 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json;charset=UTF-8', } }; const req = http.request(options, (res) => { res.setEncoding('utf8'); res.on('data', (chunk) => {}); res.on('end', () => { api(); }); }); req.write(postData); req.end(); } function api() { const options = { host: ip, port: port, path: `/rci/show/ip/hotspot?mac=${mac}`, method: 'GET', headers: { 'Cookie': `_authorized=${login}; sysmode=router; session_id=${sessionid}`, 'Cache-Control': 'no-cache', 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json;charset=UTF-8', } }; http.get(options, (resp) => { let body = ''; resp.on('data', (chunk) => { body += chunk; }); resp.on('end', () => { const data = JSON.parse(body); if (data.host !== undefined && data.host[0]) { callback(null, data.host[0].link === 'up' ? 1 : 0); } else { callback(null, 0); } }); }); } http.get(`http://${ip}:${port}/auth`, (resp) => { let body = ''; resp.on('data', (chunk) => {}); resp.on('end', () => { token = resp.headers['x-ndm-challenge']; realm = resp.headers['x-ndm-realm']; sessionid = resp.headers['set-cookie'][0].split(';')[0].slice(11); auth(); }); }); };
-
Можно еще для mikrotikа инструкцию.
-
@amgstone Добрый день, добавим обязательно
-
Добрый вечер всем! я заметил что когда работают снипеты к кинетику происходит зависание самого роутера через пару дней. у кого нибудь такое же наблюдается?
-
Пользователь @m_n61rus написал в "Кто дома?" через Zyxel Keenetic:
Добрый вечер всем! я заметил что когда работаю`
У меня KN1010 , не замечал
-
@dev Решил по интересоваться. Скоро ли будет для микротика снипплет ?
-
Приветствую!
у кого нибудь работает снипет?
-
@m_n61rus Добрый день, на момент написание сниппета все работало
-
На момент написания снипета у меня работала .
но после последних прошивок перестал работать ть
-
@m_n61rus Спасибо за информацию, будем иметь ввиду