Опубликован свободный проект NightShift, который выполняет роль сервера для приборов охранно-пожарной сигнализации Астра Дозор. Сервер реализует такие функции, как ведение лога и разбор сообщений от прибора, а также передачу команд управления на прибор (постановка и снятие с охраны, включение и выключение зон, реле, перезагрузка устройства). Код написан на языке Си и распространяется под лицензией GPLv3...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=53201
Какие-то странные название придумывали
нормальное название, night shift - ночная смена.
Вот iPony129412 действительно звучит странно.
> iPony129412Я как увидел в этом нике слово "ипонутый", так и не могу развидеть.
Ты и ипоня - два сапога пара. Пара хайпонубов.
Единорог.
Уже завербовано — в этом проблема.
Искать трудно.ЗЫ: истории GVFS можно вспомнить. Microsoft же переименовали или нет?
Какие проблемы? Напишите в Надзор. Он других забанит.
Сразу будет легко найти.
Это движок opennet так парсит некоторые символы.Например: http://unicode.scarfboy.com/?s=🦄
Т.е. это должно быть iPony🦄 -> iPony🦄
Точно так же, по рассказу Аноним84701, он должен был называться Аноним -> Аноним№1
Простите, опять парсер всё скушал. Вот тут мой ответ без форматирования: https://paste.debian.net/1153235/
> Какие-то странные название придумывалиПредлагаю Night Watch. Хорошее дополнение к министерству мира.
Пейсатель может засудить.
Это пейсателю повезло, что его не может засудить Рембрандт, поскольку очень уж давно умер.
>Dead men don't bite
>>Dead men don't biteДисней с мышонком Микки готов с этим поспорить :P
> Это пейсателю повезло, что его не может засудить Рембрандт, поскольку очень уж давно умер.Нелогично. Могут засудить наследники, собственники произведений или поклонники.
AstraLinux, коллектив, абонентский пункт ... безопасный и отечественный.
> ... безопасный и отечественный.ем йогурт и одновременно красивая!
ня!а тут все такие опасные и иностранные!
> Астра
> GPLv3O_o
Отлично, но посмотрим как будут латать дыры тогда.
Соблюдать лицензии в стране, где до сих пор карательная психиатрия..
> Соблюдать лицензии в стране, где до сих пор карательная психиатрия..И тут вы такой врываетесь с толстой папкой отчётов, статистик, расследований огромного числа случаев, которые дают право заявлять об этом, как о очевидно присутствуещем явлении, настолько ясным для всех, что об этом можно так, запросто, между делом, "упомянуть" на форуме.
Про реформу ПНИ только глухой не слышал.
> Соблюдать лицензии в стране, где до сих пор карательная психиатрия..А тебя, бедненького, галоперидолом обделили?
libdozor.c:21:10: fatal error: dozor-crypto.h: Нет такого файла или каталога
device-event.c:23:10: fatal error: device-event.h: Нет такого файла или каталога
dozor-crypto.c:20:10: fatal error: dozor-crypto.h: Нет такого файла или каталога
rc4.c:22:10: fatal error: rc4.h: Нет такого файла или каталога
event.c:20:10: fatal error: event.h: Нет такого файла или каталога
../libdozor/dozor.h:20:10: fatal error: session.h: Нет такого файла или каталога
../libdozor/dozor.h:20:10: fatal error: session.h: Нет такого файла или каталога
command.c:22:10: fatal error: ./command.h: Нет такого файла или каталога
event-stream.c:21:10: fatal error: event-stream.h: Нет такого файла или каталога
../libdozor/dozor.h:20:10: fatal error: session.h: Нет такого файла или каталогаИсходников недоложили. И зачем было заливать эту помойку в git? Такое в виде архивов выкладывают.
так ведь тандер его логистик!
Исправил, не пинайте сильно)) Первый опыт с autotools...
> Исправил, не пинайте сильно)) Первый опыт с autotools...Ладно, объяснительную напишешь, на стол положишь, на первый раз с тебя не спишут.
Что за жирные тролли повылезли? Штука довольно прикольная на вид, хоть и для непонятной проприетарной фигни. Видимо она у чела была - ну он и накодил. И вообще, dozord определенно доставляет :)
> Первый опыт с autotools...Раз такое дело, то разовью свою мысль. Во-первых, либо надо уж разбивать проект на три и выкладывать их по отдельности, либо объединить в один, без дублирования configure.ac и всего прочего в каждом подкаталоге. Во-вторых, автоматически сгенерированные файлы (configure, Makefile.in, compile, install-sh и т. д.) в VCS не коммитятся. Это лишено смысла, потому что при чекауте файлы получат рандомные временные метки, и может оказаться, например, что configure.ac якобы новее, чем configure, и в таком случае юзер запускает ./configure, потом make, а make решает перегенерировать «устаревший» configure, после чего перезепустит его заново, и только потом начнёт что-то компилировать (ну или упадёт, потому что в системе нет autoconf). То есть добавление этих файлов в репозиторий не только не облегчает сборку и не уменьшает число сборочных зависимостей, но, наоборот, может её удлинить. Чтобы юзер мог гарантированно собрать код привычным ./configure && make, не имея в системе autoconf & co., надо выдавать ему архив, сделанный make dist. Там хаоса временных меток не будет, и всё соберётся как должно.
А более глобально, не вижу смысла сейчас использовать в новом проекте autotools. Это просто сборник граблей, создающий проблем больше, чем решает. Есть ведь cmake, есть всякое прочее модное и не очень, но вот найти что-то более уродливое, чем autotools — затруднительно.
ОК, если используем autotools, то коммитить имеет смысл только *.in файлы, описывающие сборку? А результат выполнения make dist выкладывать как release на github?CMake я рассматривал, и понятнее оно не показалось. Возможно, нужно было пройти этап с autotools, получить работающий билд, и потом вернуться к cmake.
> если используем autotools, то коммитить имеет смысл только *.in файлы, описывающие сборку?configure.ac, Makefile.am, нестандартные макросы, если таковые есть. В общем, только то, что написано руками, а не нагенерировано скриптами.
> А результат выполнения make dist выкладывать как release на github?
Ну да, он для этого предназначен.
>> если используем autotools, то коммитить имеет смысл только *.in файлы, описывающие сборку?
> configure.ac, Makefile.am, нестандартные макросы, если таковые есть. В общем, только то,
> что написано руками, а не нагенерировано скриптами.
>> А результат выполнения make dist выкладывать как release на github?
> Ну да, он для этого предназначен.Супер, наконец у меня в голове на место встало, как все должно быть! Внес изменения.
Разложил по полкам! А ещё некоторые на Анонимов бочку катят, что мол от них ничего хорошего! Анонимы то как раз и делают весь основной контент!
> Анонимы то как раз и делают весь основной контент!Учист у Аноним (9) как контент правильно делать. Вот он крут, да - почитал код, отписался о лаже. Эпичный чувак.
И по сишечке.
https://github.com/frozer/nightshift/blob/master/libdozor/li... — совсем детский use after free.
Утечки памяти тут: https://github.com/frozer/nightshift/blob/master/libdozor/de... и в https://github.com/frozer/nightshift/blob/master/libdozor/ev... в куче мест (не освобождаешь полученное от getData() и getCommonEventData()).
Кругом strcpy, strcat — ну нельзя же так… И с strncpy вот так https://github.com/frozer/nightshift/blob/master/dozord/comm... тоже нельзя. Там настолько до фига возможных переполнений буфера, что даже пытаться перечислять лень.
Неиспользуемые переменные:
https://github.com/frozer/nightshift/blob/master/libdozor/ut...
https://github.com/frozer/nightshift/blob/master/tools/parse...
Ну и, само собой, вот это всё не переносимо на big endian-архитектуры:
https://github.com/frozer/nightshift/blob/989effce7148ae3d07...
о-о-о, круто!Спасибо за код-ревью :-) С одной стороны, задачи перенести на big-endian у меня разумеется не стояло, с другой - всегда полезно узнавать что-то новое.
Кстати, а что не так с strcpy/strcat? Вроде память не течет... проверял примерно неделю, ничего не падает. Хотя, возможно это эффект "на моей машине работает".
> что не так с strcpy/strcat?Не так с ними то, что можно записать за границы буфера-получателя. Особенно если речь идёт о данных, полученных извне (от сетевого устройства, из пользовательской команды).
> Исправил, не пинайте сильно)) Первый опыт с autotools...На будущее -- перед анонсом проектов полезно хотя бы попытаться их собрать, ну и когда разработка/публикация носит характер экспериментальной -- тоже как-то это отметить.
Если что, в текст новости можно предложить правки и постфактум (ссылка "исправить" под ним).
Но всяко с почином ;-)
Спасибо, учту.
ржунимагу
https://www.teko.biz/catalog/434/1362/
Снят с призводства! Самое время выложить софт для него.
Одна из заявленных целей опенсорса - поддерживать то, на что положил болт разработчик. Чтобы пользователи сами могли доработать и использовать, а не выкидывать на свалку. Правда, далеко не все опенсорсники сами этому следуют. Таких монстров клепают, что только самое свежее железо это хоть как-то тянет.
Писалось для себя - являюсь одним из счастливых обладателей девайса, который сначала сняли с производства, а потом перестали обслуживать в "бесплатном" сервисе производителя. Ощущения, что в один прекрасный день твой дом остался без контроля - несколько напрягают.
Молодец человек, все правильно сделал. Не обращай внимание на троллоту, они иногда лютуют по причине флуктуаций магнитной активности солнца, или типа того.
О, а какое неожиданное архитектурное решение:> Отправка команд осуществляется путем записи команд в файл commands.txt:
echo "REBOOT:" > commands.txt
Ну дык правокликаИшь на раб стол выбиреИшь создать текстовый файл... Инженер знал только этот подход.
И дебагать удобно - клац-клац и файлик открывается в блокноте
Глобально и надежно!
Там же дальше написано про это: устройства с некоторой периодичностью стучатся на сервер, в ответ им можно послать команду. Постоянно поддерживаемым соединением или другим способом обхода NAT производитель, очевидно, не заморочился.> отправить на устройство ничего нельзя пока устройство само не отправит сообщение
Минутка саморекламки? ;)
Неа, минутка альтруизма. Решение писалось для себя, кусок который можно выложить - выложил
А чего такого в минуте саморекламы для опенсорсных проектов?
RC4 дырявый же не?
или для данного решения и так сойдет?
> RC4 дырявый же не?Так это ж железкой навязано как я понял. Но ты в своем праве переписать неведомой вундервафле фирмварь если сможешь.
Очень странные коммиты: "...Thanks to anonym from opennet.ru". Это надежда на то, что человек зайдет в список коммитов и расплачется от умиления?
Ну отправка команд через текстовый файл в 21 веке - такое себе.
Лет десять назад написал свой сервер для пожаро-охранной сигнализации.Ptython (риалтайм) + Postgresql
При поступлении события оно пишется в базу и принудительно шлется на все клиенты.
Сервер свободен. В инеты не выкладывал. А вот клиент написан другим человеком и проприетарный.
> Ptython (риалтайм) + PostgresqlЫгы, по сравнению с мелкой шняге на сях... ну ты понял :)))
> В инеты не выкладывал.
(и это к лучшему, вемакачьего гомна и так на планете завалы)
А что хоть за охранно-пожарная сигнализация? Если сервер свободен и нигде не выложен, то толку от проприетарного клиента никакого.