Commit Graph
100 Commits
Author SHA1 Message Date
Dushnilin a8384c7c17 UI: Improve connection status for VPN/AWG sections 2026-07-19 13:54:54 +03:00
Dushnilin d18af208d7 Translations: add RU for new list description strings
- 'Domain and IP lists' → 'Списки доменов и IP'
- '.lst lists containing domains and subnets' → 'с доменами и подсетями'
- '.lst lists containing domains. IP entries are ignored' → 'IP игнорируются'
- '.srs/.json lists. Subnets are ignored by default' → 'Подсети по умолчанию игнорируются'
2026-07-19 12:49:16 +03:00
Dushnilin 7eafb48c6b DNS device filter, bypass exclusivity, list descriptions, rule-set error detection, mask private_key+url
- dependsOnRuleConditions(): show Device filter also for DNS when conditions are set
- makeDeviceOptionsExclusive(): prevent same device in Device filter + Forced routing simultaneously
- fullyRoutedOption: also shows for DNS action
- ruleSetOption: 'Subnets are ignored by default' (was: Only domain rules)
- domainIpListsOption: renamed 'Domain and IP lists', retain=true, dependsOnRoutingAction, write/remove handlers
- dnsDomainListsOption: new field for DNS action showing 'Domain lists' with IP-ignored note
- _dns_domain_ip_lists: added to dependsOnRuleConditions DNS conditions
- isErrorLogLine: detect sing-box rule-set download errors
- maskDiagnostics: mask option private_key and option url
2026-07-19 12:49:16 +03:00
Dushnilin aedc7cba19 Flag emoji (Twemoji), monitoring CSS vars for third-party themes, HTTP proxy removed from proxy URL 2026-07-19 12:49:16 +03:00
Dushnilin 73c0cda51a Remove russia_inside/regional restrictions on built-in lists 2026-07-19 12:49:16 +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 0152f4df38 Добавлена загрузка конфига .conf для AmneziaWG
- Новая кнопка 'Загрузить .conf' в настройках AWG-секции
- Парсинг INI-формата AmneziaWG .conf файлов на стороне браузера
- Нормализация поля Address: добавляет /32 (IPv4) и /128 (IPv6) если нет
- Автоконвертация I1-I5 из формата UCI binary <b 0xHEX> в чистый hex
- Заполняет все поля: PrivateKey, Address, PublicKey, Endpoint, Jc/Jmin/Jmax, S1-S4, H1-H4, I1-I5, PresharedKey
- Визуальная обратная связь: состояния success/error с автосбросом
- Переводы добавлены в ru.po
2026-07-19 11:20:17 +03:00
Dushnilin 387a78aebb Кнопка Generate WARP Config: исправление binary UCI и стилизация
- Добавлен генератор WARP конфигурации (warp_generator.uc)
- Исправлена запись binary UCI значений (<b 0x...>) в поля awg_i1-i5:
  warp_generator.uc использует to_hex(), section.js очищает значения перед записью
- generator.uc: добавлена защита uci_bin_to_hex() при чтении awg параметров
- generator.uc: поля awg_i3/i4/i5 со значением '0' пропускаются
- section.js: кнопка Generate WARP Config переработана в стиле Tachyon UI
  (cbi-button-neutral, состояния loading/success/error с анимациями)
2026-07-17 22:22:08 +03:00
Dushnilin ad03951a1d fix(firewall): добавить постоянные правила mss clamping в конфигурацию nftables 2026-07-17 19:45:36 +03:00
Dushnilin 4604053e20 watchdog: fix syntax error invalid character range in smart_detect_run regex
[COMMIT_END]
2026-07-17 19:19:12 +03:00
Dushnilin f71a4d054e telegram bot: исправить порядок объявления функций и перенаправить stdout/stderr в лог; вернуть CI-сценарии 2026-07-17 18:57:04 +03:00
Dushnilin 4af1a6de19 fix(telegram): перенести вспомогательные функции clash выше get_system_status для исправления ошибки hoisting в ucode 2026-07-17 18:42:55 +03:00
Dushnilin 8292e96f57 fix(luci): добавить retain = true в настройки Telegram-бота для предотвращения удаления конфигурации при выключении бота 2026-07-17 18:30:16 +03:00
Dushnilin d1510da248 fix(singbox): рефакторинг исходящего соединения amneziawg в эндпоинт для поддержки sing-box 1.13+ 2026-07-17 18:01:29 +03:00
Dushnilin a6c9907def fix(warp): починить пустой список в Registration Detour, используя стандартный генератор выбора (subscriptionDownloadTargetChoices) 2026-07-17 17:07:35 +03:00
Dushnilin 0ac49385a0 feat(warp): добавить поддержку detour (Registration Detour) для WARP и обрезку пробелов в токене 2026-07-17 17:01:59 +03:00
Dushnilin 38e228950d fix(warp): исправить структуру WARP-эндпоинта (заменить массив profiles на объект profile) 2026-07-17 16:57:52 +03:00
Dushnilin a86f77aaaa fix(route): добавить поддержку новых протоколов и WARP в целевые действия маршрутизации, исправить ошибку unsupported action 2026-07-17 16:54:48 +03:00
Dushnilin 69d851867b fix(warp): убрать валидацию обязательности поля warp_access_token в UI 2026-07-17 16:52:43 +03:00
Dushnilin ab3671d98d fix(warp): сделать warp_access_token необязательным — достаточно private_key и account_id 2026-07-17 16:50:10 +03:00
Dushnilin 510f4d2baf fix(generator): убрать trailing comma в add_anytls_outbound, ломавшую парсинг generator.uc 2026-07-17 16:46:45 +03:00
Dushnilin 216485b345 ci: обновить версии GitHub Actions для устранения предупреждений Node.js 20 2026-07-17 16:31:24 +03:00
Dushnilin 422a206b4b feat(extended): добавить все протоколы sing-box-extended с правильным гейтированием 2026-07-17 16:21:48 +03:00
Dushnilin 3dc96c7a11 i18n(ru): добавить русские переводы для всех 283 непереведённых строк 2026-07-17 16:21:48 +03:00
Dushnilin 04f5c7144f feat: добавить поддержку действия WARP через эндпоинты sing-box-extended 2026-07-17 16:21:48 +03:00
Dushnilin 57ea9f1775 chore: триггер CI для бэкенда после исправления локализации 2026-07-17 16:21:48 +03:00
Dushnilin e2c72a14a9 fix: синхронизировать RU PO файлы fe-app-tachyon и luci-app-tachyon 2026-07-17 16:21:48 +03:00
Dushnilin 6e5aad9009 chore: триггер CI для бэкенда 2026-07-17 16:21:47 +03:00
Dushnilin 6de48622d9 chore: триггер CI для бэкенда 2026-07-17 16:21:47 +03:00
Dushnilin 53f513f703 fix: перевод строки "Cannot save settings" в RU каталоге 2026-07-17 16:21:47 +03:00
Dushnilin f4197b7ae3 feat: добавить поддержку параметров обфускации awg-openwrt v2 (S3, S4, I1-I5) 2026-07-17 16:21:47 +03:00
Dushnilin b533c4db41 feat: показывать автоопределённые домены в виджете Smart Detect и разрешить их редактирование в секциях маршрутизации 2026-07-17 16:21:47 +03:00
Dushnilin bc2bcde14c fix: интегрировать виджет Smart Detect в конвейер сохранения LuCI, исправить разбор Babel AST 2026-07-17 16:21:47 +03:00
Dushnilin 88b9091ebe fix: заполнить переводы статических JS-строк в RU каталоге, сохранять их в generate-po.js 2026-07-17 12:59:25 +03:00
Dushnilin d360ed1150 fix: синхронизировать RU каталог переводов (excluded_ips, описание) 2026-07-17 12:36:44 +03:00
Dushnilin 48360df6eb fix: обновить фикстуры тестов под новое поле excluded_ips в сигнатуре 2026-07-17 12:33:32 +03:00
Dushnilin 3459f253cb feat: исключение устройств из маршрутизации секции (excluded_ips)
- LuCI: новое поле 'Исключить устройства' в форме секции (addLocalDeviceSubnetDynamicField)
- Перевод RU: 'Исключить устройства' + описание
- sing-box: add_excluded_ips_rule() — direct-bypass правило с наивысшим приоритетом
- nftables: nft_excluded_source_match_args() — негативный матч saddr в правилах маркировки
- Сигнатуры: nft/apply.uc + service/state.uc — отслеживание изменений excluded_ips
- TypeScript: поле excluded_ips в типе секции
- Диагностика: IP исключённых устройств маскируются в логах поддержки
2026-07-17 12:29:43 +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 7c04189955 fix: handle_rule_view - восстановить s=get_all, экранировать HTML-лейбл, показывать user_domains, добавить обработку ошибок 2026-07-17 12:12:09 +03:00
Dushnilin 0aeb853376 fix: режим отправки telegram считывает неверное смещение ARGV при вызове через бинарник tachyon 2026-07-17 12:03:33 +03:00
Dushnilin 01c7b85dea i18n: добавить русские переводы для статуса Watchdog и виджетов Smart Detect 2026-07-17 11:43:57 +03:00
Dushnilin 22c7455e57 fix: фильтровать секции Smart Detect по тестируемым действиям (connection/proxy/vpn/zapret/zapret2/byedpi) 2026-07-17 11:36:16 +03:00
Dushnilin 5aaf8c7ec2 fix: использовать правильный тип UCI 'section' для секций маршрутизации в виджете Smart Detect 2026-07-17 11:26:28 +03:00
Dushnilin 3e58783977 feat: переместить расширенные настройки на вкладку «Настройки», добавить выбор секции для теста доменов 2026-07-17 10:09:52 +03:00
Dushnilin 5391d860e7 feat: панель расширенных настроек LuCI - Watchdog, Smart Detect, маршрутизация по устройствам 2026-07-17 09:33:14 +03:00
Dushnilin 4cf3ab99df feat: per-device routing, smart detect, telegram full control, multilang bot
- watchdog.uc: Smart Detect self-healing routing - auto-detects blocked
  domains from sing-box logs, verifies via proxy, auto-adds to section
- watchdog.uc: Pause auto-resume - watchdog monitors PAUSE_FILE and
  auto-resumes Tachyon when pause duration expires
- telegram.uc: Full command suite: /pause, /resume, /watchdog,
  /add, /bypass, /rules, /devices, /backup, /speed, /doctor
- telegram.uc: RU/EN auto-detect from LuCI language setting
- telegram.uc: /watchdog shows daemon status with start/stop buttons
- telegram.uc: /add, /bypass with interactive section picker buttons
- telegram.uc: callback handlers for /wd_start, /wd_stop, /do_pick
- tachyon CLI: watchdog_start and watchdog_stop commands
- types.ts: fully_routed_ips, user_domains, smart_detect fields
- config: smart_detect and language options in default UCI config
- worker(): language-aware command list registration in Telegram
2026-07-17 09:11:10 +03:00
Dushnilin ab92110bad fix: предотвратить состояние гонки (race conditions) nft в list_update при reload-firewall 2026-07-16 19:11:39 +03:00
Dushnilin becc129a49 fix: исправлен race condition nft + управление Telegram ботом в LuCI
- backend: исправлена гонка данных (race condition) при старте роутера,
  когда list_update пытался добавить элементы в nft-сеты, пока reload-firewall
  ещё пересоздавал таблицу TachyonTable. Фаза применения nft теперь защищена
  RELOAD_LOCK_DIR, что устраняет ошибку 'nft add element ... No such file or directory'

- backend: добавлены CLI-команды telegram_status, telegram_start, telegram_stop
  в /usr/bin/tachyon для управления ботом из LuCI

- luci: добавлен виджет статуса Telegram-бота на вкладке настроек —
  показывает состояние (запущен/остановлен с PID), кнопки Запустить/Остановить,
  автообновление каждые 10 секунд без перезагрузки страницы

- frontend: пересобран main.js (yarn ci — 507 тестов прошли успешно)
- версия npm-пакета: 1.2.0
2026-07-16 16:55:13 +03:00
Dushnilin b7ccf19993 docs: удалить разделы 6 и 7 из README 2026-07-16 12:34:25 +03:00
Dushnilin 63e24b089f docs: обновить README.md подробным списком функций и удалить раздел пожертвований 2026-07-16 12:33:36 +03:00
Dushnilin 689aaf2dd5 fix(telegram,diagnostics): кастомный IP-адрес external_controller для API Clash и надежный откат MSS clamping 2026-07-16 11:48:32 +03:00
Dushnilin 881ad5e647 fix: экспортировать cursor в core.uci 2026-07-16 11:27:14 +03:00
Dushnilin 1981cec706 feat: интерактивное управление правилами маршрутизации в Telegram-боте 2026-07-16 11:18:55 +03:00
Dushnilin 573aa49ef3 fix: добавить недостающий метод validateRequiredText в section.js 2026-07-16 06:42:55 +03:00
Dushnilin 536bfb59c7 fix: синхронизировать локали и логику генератора awg 2026-07-15 23:45:28 +03:00
Dushnilin 9ef5384c6a feat: нативная поддержка AmneziaWG и защита от утечек P2P 2026-07-15 23:41:13 +03:00
Dushnilin 36ccc7a9cd Fix: исправить параллельный запуск тестов CI и переменную BUILD_OUT в скрипте E2E Docker 2026-07-15 22:53:39 +03:00
Dushnilin 4ad624ce61 Clean: очистить код запуска E2E и восстановить стандартный вывод сборки 2026-07-15 22:49:27 +03:00
Dushnilin 05a7afbe80 Fix: исправить права на выполнение build.sh внутри E2E-контейнера 2026-07-15 22:33:17 +03:00
Dushnilin 97b29f230c feat(telegram): добавить динамические инлайн-кнопки и инструменты диагностики в боте, установить права исполнения для скриптов 2026-07-15 22:23:58 +03:00
Dushnilin 7471b8c965 feat(telegram): добавить переключатель watchdog в настройках и применить исправления для бота 2026-07-15 21:45:26 +03:00
Dushnilin faa6e70202 i18n(ru): обновить русские переводы для вкладки Telegram Bot 2026-07-15 18:05:02 +03:00
Dushnilin 509cf128b8 Merge: объединить изменения из upstream forkop в tachyon, разрешить конфликты и исправить тесты E2E 2026-07-15 17:56:18 +03:00
Dushnilin f0d6af0d6f Исправление: Внедрен hot-reload (SIGHUP) для sing-box при обновлениях 2026-07-14 20:45:46 +03:00
Dushnilin 50cd1f59c9 Поднятие версии до 1.1.4 2026-07-14 19:28:01 +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 8223d0de68 Release 1.1.3: исправить захардкоженный IP-адрес Clash API в боте и сопоставить команду doctor CLI с функцией global_check 2026-07-14 10:26:52 +03:00
Dushnilin 7a8e891a34 Release 1.1.2: предотвратить сбой установки пакета, когда запуск службы postinst возвращает ненулевой код 2026-07-14 10:04:43 +03:00
Dushnilin 162915a94c Release 1.1.1: исправить отсутствующий вызов process_command и недостающий хелпер double float в старых средах ucode 2026-07-14 09:54:50 +03:00
Dushnilin 2f825f80a3 Release 1.1.0: экспортировать command_success_from_args в core/common.uc 2026-07-14 09:47:00 +03:00
Dushnilin 59c375fc02 Release 1.0.9: реализовать расширенные функции Telegram-бота 2026-07-14 09:37:44 +03:00
Dushnilin b60fd322c9 Release 1.0.8: обновить TACHYON_RELEASE_REPO на Dushnilin/tachyon 2026-07-14 09:27:51 +03:00
Dushnilin 445603ddca Release 1.0.7: исправить захардкоженный IP-адрес роутера в Telegram-боте 2026-07-14 09:16:32 +03:00
Dushnilin 46ef97fe89 Release 1.0.6: синхронизировать изменения из upstream и исправить баг фильтра URLTest/Priority 2026-07-14 08:56:31 +03:00
Dushnilin bb1de1fd83 Merge branch 'temp-upstream-rebrand' into main
Resolves merge conflicts:
- install.sh, build.sh, .github/workflows/build.yml: Reverted to Dushnilin's versions to avoid installing SourceForge mirrors.
- fe-app-tachyon: Resolved type, formatting and copyOutbound conflicts, keeping both Dushnilin's custom features and ushan0v's frontend performance optimizations.
- backend: Kept Dushnilin's ucode refactorings, Telegram bot integration, and release repository URL (Dushnilin/tachyon) while merging updates.uc cache format v8 & persistent cache format v7.
- tests: Merged tests from both branches, preserving ucode -L wrappers for local test execution.
2026-07-14 08:01:45 +03:00
Dushnilin 6e867ca2c4 Cleanup: удалить старые файлы forkop 2026-07-14 07:49:37 +03:00
Dushnilin 14df12a18d Rebrand upstream: переименовать forkop в tachyon 2026-07-14 07:48:33 +03:00
Dushnilin 8e95b79841 Исправление ошибок рефакторинга (packages.uc, state.uc, cache.uc) 2026-07-13 23:58:48 +03:00
Dushnilin baea672ee3 Исправление оставшихся синтаксических ошибок от скрипта дедупликации (updates.uc, rulesets.uc, constants.uc) 2026-07-13 22:55:32 +03:00
Dushnilin f71b24fc84 Исправление синтаксической ошибки в migration.uc 2026-07-13 22:47:06 +03:00
Dushnilin f017d01a52 Рефакторинг кода: дедупликация ucode, исправления shellcheck и глобальное улучшение install.sh 2026-07-13 22:38:24 +03:00
Dushnilin 970ca5c3fe fix(core): ошибка запуска sing-box (сбой WAN) 2026-07-13 21:58:51 +03:00
Dushnilin 85c8e52488 Интеграция кнопки Tachyon Doctor в исходный код фронтенда 2026-07-13 21:13:21 +03:00
Dushnilin e41f30213f Установка лимитов скорости curl в установщике для предотвращения зависаний 2026-07-13 20:33:25 +03:00
Dushnilin 8c9bb8734b Рефакторинг и стабилизация: обновление установщика, бэкенд-утилит и оптимизация фронтенда
- Установщик (install.sh): внедрена верификация хешей sha256sums.txt, нормализована очерёдность бутстрапа ucode до языковых проверок.
- Сборщик (build.sh): добавлена автоматическая генерация sha256sums.txt для пакетов релиза.
- Бэкенд: права на honeypot FIFO ограничены до 0660 в watchdog.uc, исправлена опечатка в SUBNETS_TELEGRAM, удалён helpers.old.uc.
- Тесты бэкенда: написаны тесты для core_ip, core_url и config_connections.
- Фронтенд: реализовано автопереподключение WebSocket с экспоненциальным бэкоффом, проведена дедупликация виджетов и модальных окон в initController.ts, мигрирован CSS-префикс с fkp_ на tachyon_.
- Тесты фронтенда: добавлен initController.test.ts для тестирования загрузки дашборда.
2026-07-13 20:23:33 +03:00
Dushnilin ea19b48dd9 fix(telegram): закрыть fd 1000 в фоновом воркере для предотвращения утечки блокировок procd 2026-07-13 20:02:03 +03:00
Dushnilin 555297ae46 fix(core): вернуть разбор URL к циклам из-за ограничений posix regex в ucode 2026-07-13 19:34:39 +03:00
Dushnilin d657f5ae92 fix(core): удалить невалидные незахватывающие группы PCRE в регулярном выражении IP 2026-07-13 19:22:40 +03:00
Dushnilin 05cc378872 fix(watchdog): закрыть fd 1000 в фоновых задачах для предотвращения утечки блокировок procd 2026-07-13 19:21:02 +03:00
Dushnilin 229f82718f рефакторинг(ядро): оптимизация ucode, устранение дублирования и ручного парсинга
- Вынесена логика вызова команд shell в core.common
- Удалено дублирование реализации чтения stdin и извлечения параметров UCI
- Громоздкие циклы парсинга URL в helpers.uc переписаны на регулярные выражения
- Проверка IPv4/IPv6 упрощена до использования регулярных выражений вместо построчного разбора
- Использованы встроенные функции ucode (lc, length) вместо ручных аналогов
- Очистка фронтенда: удален функционал мониторинга прямого трафика и лишняя колонка 'Add to' из UI таблиц
2026-07-13 19:04:58 +03:00
Dushnilin 6321aca163 feat(luci): добавление недостающих настроек уведомлений Telegram и локализации 2026-07-13 16:39:05 +03:00
Dushnilin 0db51ff9dd feat(telegram): автоматическая регистрация и синхронизация списка команд бота при запуске 2026-07-13 16:38:56 +03:00
Dushnilin 61cbe3bcc4 fix(telegram): исправление порядка объявления функций start_runtime и stop_runtime для корректной работы ucode 2026-07-13 16:35:16 +03:00
Dushnilin aa10487b5e feat(telegram): реализация полного набора функций бота: клавиатуры, задержка серверов, статистика, тесты и скорость 2026-07-13 16:29:40 +03:00
Dushnilin 04f8ed0e9b fix: инициализация секции Telegram и улучшение детализации вывода установщика 2026-07-13 16:15:24 +03:00
Dushnilin ed9fb7ba5d fix(updates): обеспечение успешной установки пакетов в apk-системах при некритических ошибках apk add 2026-07-13 16:05:59 +03:00
Dushnilin bafe70dd66 feat: перенос демона Telegram-бота с Go на Ucode, добавление вкладки настроек LuCI и локализации 2026-07-13 15:59:29 +03:00
Dushnilin b3bfcea547 i18n: добавление перевода для кнопки автоматического исправления ошибок 2026-07-13 15:43:01 +03:00
Dushnilin 06da41a45b feat(fe): добавление кнопки запуска автоисправления ошибок во вкладку диагностики 2026-07-13 15:31:37 +03:00