Commit Graph
19 Commits
Author SHA1 Message Date
Dushnilin 488bbfefd5 fix: комплексный аудит и исправление ucode кодовой базы
Критические исправления:
- safe_proxy_restart: удаление lock-файла после фонового перезапуска
  с защитой от stale lock (>300 сек)
- write_json_file: атомарная запись через tmp+mv вместо прямой
- write_reload_state: атомарная запись через tmp+mv
- state_add_list: отклонение значений с пробелами

Исправления безопасности:
- killall logread заменён на pkill -f 'logread -f'
- SIGTERM→SIGKILL для Telegram и sing-box при остановке
- Recover OOM scale: инкремент +0.05 каждые 10 минут
- nfqueue и byedpi: trap для корректного завершения дочерних процессов
- nfqueue: валидация стратегий и откат при ошибке запуска
- nfqueue: flush mangle_output перед добавлением правил
- Исправлен парсинг exit code в 14 файлах (status & 127)

Улучшения стабильности:
- init.d: trap для start_service/stop_service
- watchdog: signal traps для legacy fallback loop
- lifecycle: логирование ошибок при остановке компонентов
- singbox/priority: SIGTERM→SIGKILL при остановке
- telegram: exponential backoff (1x→300s) при ошибках API
- telegram: process_updates возвращает boolean для отслеживания успеха
- watchdog: кэш proxy port для уменьшения чтения конфига sing-box
- singbox/generator: упрощён atomic_write_json_file
- packages.uc: переупорядочивание apk_version (лёгкие запросы первыми)
- dns/apply: проверка PID sing-box перед настройкой dnsmasq
- server/service: cleanup_orphaned_server_certs перед вызовом
2026-08-06 00:03:51 +03:00
Dushnilin 0a428083af fix: watchdog/state/telegram crash bugs (ucode JS-isms + SIGHUP race)
- watchdog: fix 'left-hand side is not a function' tick crashes
  - safe_call: replace String(e)/instanceof Error with as_string(e)
  - ai_heal_empty_sections: list_option/read_json_file -> common.*
  - read_dns_recovery_state/ai_heal_dns_loop: read_json_file -> common.*
  - common.is_connections_action -> connections.is_connections_action
    (add missing 'config.connections' module import)
  - wrap check_singbox_process/check_auto_resume_pause/ai_full_health_audit
    in safe_call to prevent uncaught exceptions in tick loop
- state: SIGHUP race condition: fall back to sing-box start instead of
  exit(1) when process dies between config generation and signal delivery
- telegram: fix String(e)/instanceof Error crash in update catch block
2026-08-03 16:50:08 +03:00
Dushnilin 448267335b feat: добавлена поддержка TUIC протокола и DNS over QUIC (DoQ) с ECH 2026-07-31 16:49:55 +03:00
Dushnilin 7bcf7590ea fix(tests): актуализация сигнатур nftables и паритета хэшей в state.uc 2026-07-30 18:04:27 +03:00
Dushnilin 53e3f1f041 feat(routing): add traffic type / protocol filtering and exclusion per section 2026-07-28 21:46:18 +03:00
Dushnilin e11316f7d7 fix(tests): update nft signature fixtures in state.uc and tests for DSCP parity 2026-07-27 17:16:05 +03:00
Dushnilin 1409b6ed3d Рефакторинг и оптимизация Tachyon: модульный генератор sing-box, атомарная запись файлов, graceful shutdown в watchdog, ускорение nftables, доработка трассировщика правил и локализация 2026-07-23 10:07:15 +03:00
Dushnilin 16b4c39693 chore: bump version to 1.2.20 & optimize ucode scripts 2026-07-21 23:35:25 +03:00
Dushnilin af41f6ddba Revert "FakeIP кэш перенесён в персистентное хранилище /etc/sing-box/"
This reverts commit 4e6b1d776c.
2026-07-19 12:04:33 +03:00
Dushnilin 4e6b1d776c FakeIP кэш перенесён в персистентное хранилище /etc/sing-box/
- Дефолтный путь cache.db изменён: /tmp → /etc/sing-box/cache.db
- При перезагрузке роутера fakeip маппинги сохраняются (overlay fs)
- При SIGHUP hot-reload sing-box читает полный кэш без потерь
- При tachyon stop кэш удаляется (clean state)
- UI настроек обновлён: Persistent выбран по умолчанию, RAM помечен как 'lost on reboot'
- Удалён устаревший Flash (/usr/share) вариант
2026-07-19 12:02:49 +03:00
Dushnilin 66d326e064 feat: excluded_ips - exclude devices from section routing
- LuCI section.js: new 'Excluded devices' field (after fully_routed_ips)
- po/ru: translations for new field and description
- singbox/generator.uc: add_excluded_ips_rule() - direct bypass rule, highest priority
- nft/apply.uc: nft_excluded_source_match_args() - negative saddr match in nft rules
- nft/apply.uc + service/state.uc: signature tracking for config change detection
- fe-app-tachyon/src/tachyon/types.ts: excluded_ips type field
- maskDiagnostics.ts: redact excluded_ips in support logs
2026-07-17 12:24:35 +03:00
Dushnilin f0d6af0d6f Исправление: Внедрен hot-reload (SIGHUP) для sing-box при обновлениях 2026-07-14 20:45:46 +03:00
Dushnilin 3a02e91a6e Исправление цикла перезапусков и утечки процессов в Watchdog
- Добавлена очистка зомби-процессов tail, слушающих honeypot fifo
- Внедрена блокировка concurrent-запусков через проверку lock-файлов и состояния CLI (tachyon_cli_running)
- Добавлен 30-секундный интервал (debounce) для автоматических перезапусков
- Устранены ошибки старта sing-box и ложные удаления таблиц nftables из-за накладывающихся вызовов
2026-07-14 19:27:07 +03:00
Dushnilin 46ef97fe89 Release 1.0.6: синхронизировать изменения из upstream и исправить баг фильтра URLTest/Priority 2026-07-14 08:56:31 +03:00
Dushnilin 8e95b79841 Исправление ошибок рефакторинга (packages.uc, state.uc, cache.uc) 2026-07-13 23:58:48 +03:00
Dushnilin f017d01a52 Рефакторинг кода: дедупликация ucode, исправления shellcheck и глобальное улучшение install.sh 2026-07-13 22:38:24 +03:00
Dushnilin 05cc378872 fix(watchdog): закрыть fd 1000 в фоновых задачах для предотвращения утечки блокировок procd 2026-07-13 19:21:02 +03:00
Dushnilin f57dac6b52 refactor(rebrand): полный ребрендинг в Tachyon и перенос служб watchdog/doctor на Ucode 2026-07-13 14:09:38 +03:00
Dushnilin e89a795566 refactor(rebrand): полный ребрендинг в Tachyon и перенос служб watchdog/doctor на Ucode 2026-07-13 14:03:31 +03:00