Перейти к содержанию

Ponywka

Участники форума
  • Постов

    44
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Весь контент Ponywka

  1. Это знаю. У меня висят хэндлеры на это. Проблема в том, что тут совпадают тайминги с запуском программы и началом очистки, от чего программа падает
  2. Учитывая, что разработчики программы сами подцепляются к Keenetic NDMS - то они должны учитывать тот формат, который сам Keenetic и предоставляет. Главное документировать! А зачем TCP/UDP в рамках одного устройства? Если нужно подцепляться удалённо, то пускай свой сервис пишут для этого, который будет оборачивать UNIX в TCP. Но суть понял... Что-ж... Ладно
  3. Ну как минимум не придется городить свои костыли для приёма таких сообщений
  4. И чем это будет отличаться от socat который я описал выше? Мне не нужно плодить новый процесс - мне нужно чтобы уже имеющийся мог знать о событиях!
  5. Здравствуйте! В продолжение темы "Keenetic NDMS очищает IPTables во время запуска программы" хотел бы дополнить свои хотелки на счёт событий "/opt/etc/ndm/***". Так получилось, что мой софт не является Bash скриптом, и чтобы ловить события "netfilter.d" - мне пришлось написать небольшой костыль, который тянет за собой пакет "socat" и с помощью него "пробрасывает" это событие в мою программу: https://github.com/MagiTrickle/MagiTrickle/blob/0cc26dd0762e69294476a173502068e3359cb2c3/opt/etc/ndm/netfilter.d/100-magitrickle #!/bin/sh SOCKET_PATH="/opt/var/run/magitrickle.sock" [ -S "$SOCKET_PATH" ] || exit BODY="{\"type\":\"$type\",\"table\":\"$table\"}" LENGTH=$(printf "%s" "$BODY" | wc -c) socat - UNIX-CONNECT:"$SOCKET_PATH" >/dev/null 2>&1 <<EOF POST /api/v1/system/hooks/netfilterd HTTP/1.1 Host: Content-Type: application/json Content-Length: $LENGTH $BODY EOF Очень хотелось бы обойтись без подобных костылей и вместо этого получать эти события по тем же UNIX-сокетам или же любым другим способом, удобным на команды разработки Keenetic NDMS.
  6. Здравствуйте! Я являюсь разработчиком пакета MagiTrickle. В чате по моей программе неоднократно жаловались на проблему с автоматическим запуском программы после перезагрузки роутера. В свою очередь у меня же такой проблемы не наблюдалось и очень долго для меня было загадкой такое странное поведение программы. Добавив скрипт на автоматический перезапуск роутера и также собирая логи, в один из перезапусков я получил от своей программы следующие ошибки: Здесь сервис успел запуститься, а "error while fixing iptables in group" возникает на событие "/opt/etc/ndm/netfilter.d/***". Здесь по дублирующимся логам (вторая и третья ошибка) можно понять, что очистка IPTables вызывалась несколько раз за короткий промежуток времени, что и вызывало ошибку "iptables: No chain/target/match by that name", однако учитывая, что софт по итогу в любом случае получал событие "/opt/etc/ndm/netfilter.d/***" - я закрывал на это глаза. По итогу, когда мне предоставили логи, возникающие во время запуска моей программы, до меня наконец дошло по какой причине моя программа не запускается должным образом: Так совпало, что очистка IPTables со стороны Keenetic NDMS вызывалась в тот момент, когда моя программа только-только запускалась, т.е. по временной линии это выглядит как: MagiTrickle создаёт цепочку в IPTables с названием MT_xxxxxxxx. MagiTrickle наполняет цепочку MT_xxxxxxxx. Keenetic NDMS в этот же момент очищает IPTables. MagiTrickle упал в ошибку, ибо он все ещё наполнял цепочку, которой уже не стало. Ошибки во время запуска я игнорировать не могу, ибо неправильное заполнение IPTables (когда iptables возвращает статус 1) подразумевает неправильную работу IPTables требующего постороннего вмешательства (например, если пакет установлен на другой роутер, предположим на AsusWRT, где может не быть какого-то модуля ядра Linux расширяющего функционал IPTables - Entware всё-таки не привязан к Keenetic; а собственно мой софт тоже). Следует также помнить, что мой софт не является Bash скриптом - это исполняемый бинарный файл, который вызывается (автоматически) только один раз - во время запуска службы ("/opt/etc/init.d/***"). Из всего вышесказанного хотелось бы получить какое-то решение со стороны команды разработчиков Keenetic по поводу данной проблемы. Одни из вариантов: В Keenetic NDMS перестать очищать IPTables (предположительно требует очень много работы со стороны команды разработчиков Keenetic, так что обрасывается); Keenetic NDMS может сообщать по тем же эвентам о том, что он намеревается очистить IPTables за условные пол секунды до очистки, чтобы софт мог "подождать" работу Keenetic NDMS перед выполнением своих команд (предполагает добавление таймаутов, что будет являться костылём в Keenetic NDMS); Добавить в Keenetic NDMS возможность блокировать очистку IPTables на условные 5 секунд, когда сама программа (а по факту скрипт запуска службы в файле "/opt/etc/init.d/***") будет сообщать Keenetic NDMS о том, что сейчас лучше не очищать IPTables и требуется подождать. Буду рад ответу со стороны команды разработчиков Keenetic!
  7. Вообще пока софт находится в разработке - это не имеет смысла. Так например я сейчас исправляю некоторые косяки - применяю другие подходы - конфиг будет постоянно обновляться и поэтому я не вижу смысла в подробном описании
  8. Именно Step-by-step инструкцию? Или что под этим имеется ввиду?
  9. IPv6 отключен, потому что продукт не умеет в маршрутизацию IPv6 трафика. Если нужен резолвинг IPv6 адресов, то выставьте "disableDropAAAA" в "true"!
  10. v0.1.8 (GitHub Release) * Исправлен баг, когда при запуске вылезала ошибка `failed to initialize ipset: failed to destroy ipsets: busy`. * Исправлен баг, из-за которого MagiTrickle не запускался, ложно предполагая наличие другой запущенной копии.
  11. v0.1.7 (GitHub Release) * Правила теперь применяются и для незарегистрированных клиентов
  12. v0.1.6 (GitHub Release) * Добавлен оверлей блокирующий управление во время сохранения записей. * Добавлена поддержка события SIGHUP ("/opt/etc/init.d/S99magitrickle reconfigure"). * Добавлен флаг Enable у Group. * Убран флаг FixProtect у Group. * Улучшена совместимость Frontend с Windows 7. * Frontend теперь подстраивается под мобильный интерфейс. * Исправлен баг, когда у стороннего интерфейса (созданного вне Keenetic NDM) пропадало правила доступа в интернет. * Исправлен баг, возникающий при перемещении правил между группами. * Отрефакторена API часть Backend (спасибо @dan0102dan).
  13. v0.1.5 (GitHub Release) Добавлен полноценный WebUI (спасибо @shevernitskiy) Старый WebUI переименован в "legacy" (указать в app.httpWeb.skin) Добавлена возможность отключать обработку правил для IPv6/IPv4 (app.netfilter.disableIPv6 и app.netfilter.disableIPv4 соответственно) Группам теперь можно задавать цвета Был возвращён назад пакет socat вместо тяжелого бинарника, а также основной бинарник был сжат с помощью upx[1] [1] Могут быть проблемы на некоторых архитектурах. Мной было проверено на mipsel - полёт нормальный. Как на других роутерах, увы, неизвестно!
  14. Ну проблема максимум в том, что пакет весит 9 мегабайт в расжатом виде, а так можно. На счёт веса - будет исправлено в будущем, сейчас пока не до этого.
  15. Проблемка в том, что в Telegram нельзя к каналу привязать чат с топиками, а следить за двумя чатами я не очень хочу... В закреплённом сообщении есть ссылка на чат - можно там обсудить что да как.
  16. v0.1.4 (GitHub Release) Исправлен `config.yaml.example` Исправлено падение приложения при существующем интерфейсе в `DOWN` состоянии
  17. v0.1.3 (GitHub Release) Добавлен HTTP сервер Добавлен API (Swagger документация находится в файле docs/swagger.yaml) Реализован базовый WebUI Исправлены некоторые ошибки Произведён частичный рефакторинг кода
  18. Для v0.1.3 появится тестовый WebUI, как только я смогу убедиться, что в релизе нет критических багов.
  19. Ну... Сейчас я делаю API HTTP для CRUD записей + CLI. Условно когда доделаю API - подключится другой разработчик, который будет фронт (WebUI) делать. Сроков не дам, но предположительно уже скоро.
  20. v0.1.2 (GitHub Release) Переход от socat на свой CLI для /etc/ndm/netfilter.d Переход на HTTP в UNIX Socket
  21. Но ведь... WireGuard доступен на Keenetic из коробки... Зачем?...
  22. Перевёл автоматические сборки на GitHub: https://github.com/Ponywka/MagiTrickle/releases
  23. Ну... Адреса занял - а там посмотрю что да как... https://t.me/MagiTrickle https://t.me/MagiTrickleChat
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.