lleo (lleo) wrote,
lleo
lleo

Category:

Поиск 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 адресов происходит очень быстро и весело, весь процесс занимает пару секунд — нужный хост быстро отзывается, и всю остальную балалайку картинок мы просто грохаем, не дожидаясь загрузки, а браузер сам разберется, не маленький. Сам процесс, понятное дело, приятно виден на дисплее:

Теоретически конечно надо бы png для такой цели всякий раз создавать искусственно с SVG-шифровками внутри — для безопасности, чтоб избежать подделки. Но я решил не париться — сети там, говорят, закрытые, данные не сильно значимы, откуда там и зачем там взлом. Лучше бы мне подумать, какую бы фичу туда привинтить, чтобы послеживала, не подвис ли браузер на третью неделю работы, а если подвис, то перезапустить его или всё LXDE или просто restart сделать. Но думаю не особо напряженно, потому что через час поезд в Харьков (ребенка забирать от дедушки с бабушкой), еду на один световой день и везу кучу инструментов, чтоб бывшей теще поставить кондиционер. В Харькове +30... Дай бог пережить завтрашний день, всё успеть, просверлить и поставить, и вернуться с понедельничка в холодную Москву.

А чем вы развлекаетесь летом?



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

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments