August 20th, 2016

Поиск IP по картинке

это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2016/08/20.html

Сижу дома, простудился сильно. А это у меня обычно недели на полторы. В таком состоянии никакая работа невозможна, можно только программировать. Программировать — это не работа, тут ума не надо. Товарищ попросил сделать систему неких беспилотных мониторов техпроцессов для промышленного объекта. Дело нехитрое: взяли мы в домашнем хозяйстве свободную Raspberry Pi (спасибо старым друзьям за подгон), поставили почти без бубнов тамошний Debian, запустил я на нем LXDE (простого startx почему-то в системе не оказалось), привинтил браузер какой-то Midule или Midile или что-то типа того (Chromium отказывался становиться даже после длинных инструкций, да и не нужен он), поставил PHP и Apache (nginx из коробки работать отказался, а настраивать было лень). В общем, получился классический kiosk: грузится система, разворачивается на весь экран только браузер, ну и дальше он уже пляшет. Написал я на JS тонкий клиент, который всякую работу делает и аяксами лазает на местные сервера. Единственная проблема: станки эти находятся в закрытом городе, а ехать туда нет ни сил ни желания ни допусков. Поэтому надо, чтоб всё заработало из коробки. А у системы задача — найти master-сервер в местной сети и с ним взаимодействовать. А его IP, понятное дело, никто заранее не скажет, да и он смениться может. В общем, прикинул я JS к носу и придумал фантастически идиотское решение, которое оказалось очень простым и эффективным: браузер обстукивает все 254 IP в той же сетке, где ему выдали адрес (.1, .2, ..., .154) в попытках загрузить некую уникальную картинку /master/momento.png Если удалось — значит, нашел мастер-сервер, и запоминает его IP в своем браузерном хранилище (а оно всегда у браузеров есть) и отныне работает по аяксу с этим хостом. Если хост лег — снова его ищет. Обстукивание 254 адресов происходит очень быстро и весело, весь процесс занимает пару секунд — нужный хост быстро отзывается, и всю остальную балалайку картинок мы просто грохаем, не дожидаясь загрузки, а браузер сам разберется, не маленький. Сам процесс, понятное дело, приятно виден на дисплее:
Collapse )