Привет, всемогущий all!
Сначала представлюсь: Ниббл, "kinda oldskool hacker", музыкант раз в неделю, программист когда захочется, reverse engineer (иногда злонамеренно и за деньги, да), кибер-извращенец по мнению более конформистских коллег и просто хороший человек.
В этой теме я опишу историю Интернет-радио "Моминьмай", созданного и работающего на базе роутера D-Link DIR-620 разных ревизий с конца 2012-го и до сегодняшних дней. Буду рад поделиться техническими тонкостями процесса.
История, для тех, кому интересно:
В 2011-м мне посчастливилось купить D-Link DIR-620, просто потому, что рекомендованного 300-го не оказалось, а хотелось "прямо сейчас". Да и обещанная полная N-ка по Wi-Fi подкупила. ЕМНИП, это была первая аппаратная ревизия, A1.
Роутер завёлся легко, при правильном применении мозгов обеспечил стабильную и быструю сеть дома. Однако, всё началось когда я обнаружил на нём консольку по telnet. Невыбранные ресурсы, которые показывали
Код:
top
и
Код:
free
требовали действий. И я, поскольку уже обладал "белым" IP-адресом, решил устроить на роутере хотя бы микро-хостинг. К тому же, жестокая гроза, которая выжгла WAN-порт, подстегнула изучение внутренностей прошивки. В которой нашлись штатные инструменты для переопределения одного из LAN-портов в WAN-порт.
Родная прошивка не умела монтировать файловые системы с флэшки, поэтому начались поиски, за которые мне сейчас уже слегка стыдно (
пост 1 |
пост 2 |
пост 3)
Игрушки с тулчейнами, плюс вовремя посмотренный фильм "Рок-Волна" ("Boat That Rocked"), привели ко сборке Icecast и Ices, первым попыткам запустить собственное радио, обнаружению, что на сжатие OGG в реальном времени не хватает мощностей и в итоге реализации радио с эфиром на заранее сжатых OGG. В итоге, 24-е декабря, 2012-го теперь считается "Днём Рождения радио Моминьмай", по дате
этого постаПервая "аппаратная платформа" радио с флэшкой на 512 Мб, на которой были бинарники и музыка,
выглядела так.
Спустя примерно два года роутер благополучно помер. Может, виновата та самая гроза, а может недостаточное охлаждение чипа. Не важно. На замену в тот же день был приобретён другой 620-й, уже ревизии C1. После минимальной настройки и запуска startup-скрипта с флэшки, роутер легко завёлся и радио снова вышло в эфир. Downtime был около 8-ми часов.
С тех пор радио пережило несколько переездов, в том числе в другой город, смены провайдеров и массу доработок, включая последовательные замены флэшек с 512-ти Мб на 8 Гб и далее на 16 Гб.
Итак, технические особенности радио в данный момент:
- Оборудование: D-Link DIR-620 rev.C1 / Toshiba 16 Gb Flash Drive:
фото
(На фото предыдущая флэшка Transcend 8 Gb)
- Прошивка: 1.0.8, штатная.
- Уникальных слушателей в месяц: чуть меньше сотни (мы не гонимся за популярностью)
- Уникальных слушателей в год: полтысячи набирается
- Музыки в ротации: 101 час.
- Прямые эфиры: минимум раз в неделю.
- Адрес радио: http://momingmy.tk
(да, именно, по ссылке вы видите lighttpd на роутере)
Самореклама окончена, спасибо всем прочитавшим.
Теперь полезности. За почти пять лет развития радио на базе 620-го я знаю о нём (в софтовой части) много чего. И хочу поделиться с сообществом тем, что может быть интересно, нужно и полезно. Сразу предупреждаю, типичные вопросы, на которые уже был неоднократно дан ответ на этом форуме, я буду встречать "с холодком". Ссылку, если найду, напишу. Не более. А эту тему давайте оставим для нестандартных использований (суть, "хаков") штатной прошивки.
Итак, о чём я могу рассказать:
- О тулчейне (под Linux), подходящем для сборки бинарников для штатной прошивки и о способе запуска бинарников с флэшки без перепрошивки роутера.
- Об организации системы частой записи данных (логов, к примеру), чтобы не "убить" флэшку.
- О локальной геолокации по IP на чистом шелле с базой данных в CSV (т.е. без использования любой СУБД). Интересующимся для начала в проект на гитхабе.
- О написании CGI web-бэкенда (в наше время это называлось server-side) на чистом шелле. И почему на роутере это лучше чем PHP или Perl или Python.
- О подъёме на роутере SSH-daemon'а и организации туннеля через него по ключам (своеобразный "VPN для бедных")
- О всяких прочих милых мелочах, вроде получения температуры внутри роутера одной командой.
- О всём, что интересно вам и мне.
Цитируйте заинтересовавший пункт, буду расписывать подробно.
Ну и "бонус". О чём мне было бы интересно узнать от разработчиков софта/железа D-Link'а:
- Есть ли штатный механизм запуска чего-либо с флэшки при загрузке роутера? В ранних прошивках я совал путь к моему скрипту в backquotes в уязвимый параметр в конфиге, откуда он передавался в шелл без изменения. В свежих вы это починили. Искать новые дырки лень.
- Тут про ревизию C1 сказано, что у неё "на борту" 64 метра оперативки. Что, очевидно, не так. Но то же самое сказано и про ревизию F1, имеющую, в добавок, более интересный проц. Подтвердите / опровергните 64 Мб у F1, пожалуйста!
- Как вы вообще относитесь к такому использованию вашего железа? Просто интересно.
--
best regards, nibb13