Add support for Subscription's URL with HWID headers and etc#325
Add support for Subscription's URL with HWID headers and etc#325yandexru45 wants to merge 76 commits into
Conversation
|
добавь поддержку сырых (vless://) ключей, а не только жсон, и цены тебе не будет |
в podkop это уже есть и по умолчанию. мой PR нацелен на добавление поддержки ссылок подписок, но в виду грядущих сильных изменений в архитектуре podkop, скорее всего мой PR будет отложен в долгий ящик. Если всё же вам нужна данная функция, то мой форк уже готов. Когда-нибудь это появится и в мейн репозитории Podkop. |
|
у тебя есть поддержка подписки, если она жсон, а мне надо поддержку подписки, если в ней кучу vless:// ключей |
|
@yandexru45 подскажите, пожалуйста, формат подписки, который забирается по url. пробовал добавлять url подписки из платного бота - все нормально, а когда меняю в json в секции outbounds список vless (tcp) на свои - не срабатывает все время ошибка No proxy outbounds found in subscription for section 'main'. Также вопрос, в случае если установлен sing-box extended - поддерживаются ли xhttp подключения в этом режиме Subscription ? |
|
Привет @yandexru45! С 3x-ui не добавляются подписки? У меня в ошибку падает с двух разных панелей. С телефонов и с пк эти же подписки работают. |
|
как установить? |
|
Зачем вы продвигаете HWID в openwrt? Сбросить MAC WAN секундное дело. |
К сожалению форк не поддерживает подписки, которые отдают gzip → base64 → список vless:// ссылок. И схему VLESS + Reality + XHTTP. С помощью LLM у себя локально наладил работу с такими подписками. Как раз была изначально такая ошибка. |
можешь подсказать, пожалуйста, как именно наладил? |
Выжимку скопировал с chatgpt. При наличии проблем обращаться к нейросетям :) Решение: Podkop + подписка gzip → base64 → vless:// XHTTP Проблема была в том, что подписка отдавалась не как готовый sing-box JSON, а в таком формате:
После распаковки начало выглядело так:
dmxlc3M6Ly9 — это base64-представление строки:
Для стандартного режима Podkop:
такой формат не подходил, потому что Podkop ожидал JSON вида: Также обычный режим urltest_proxy_links не подходил, потому что Podkop пытался сам парсить vless://...type=xhttp... и падал с ошибками: Решение: поставить sing-box-extended с поддержкой XHTTP и добавить в Podkop конвертер подписки:
Ожидаемо:
Патч добавляет поддержку формата:
и конвертирует vless://...type=xhttp... в готовый sing-box outbound. Ожидаемый результат:
Проверка, что XHTTP-ноды появились в итоговом конфиге:
У меня получилось:
Проверка тегов:
Пример результата:
|
|
Чтоб не искать. Рекомендации по исправлению: https://t.me/itdogchat/142500/1175801 Исправлять не нужно, не тратье сейчас своё время. |
При холодном старте подкоп вызывает prepare_subscription_caches_for_startup до запуска sing-box. Если включена опция download_lists_via_proxy=1, функция пытается скачать подписку через прокси 127.0.0.1:4534 (SB_SERVICE_MIXED_INBOUND), который ещё не существует, потому что sing-box запускается только после prepare_subscription_caches_for_startup. В результате wait_for_subscription_connectivity безуспешно делает 12 попыток по 5 секунд (60 секунд ожидания), после чего стартует retry worker, который крутится в цикле каждые 10 секунд и тоже использует прокси — но sing-box никогда не запустится без подписки. Получается deadlock: подписка нужна для старта sing-box, а sing-box нужен для скачивания подписки через прокси. Ситуация усугубляется тем, что /tmp/sing-box/subscriptions лежит в tmpfs, поэтому на холодном старте кэш всегда пустой и cache_needs_refresh=1. На этапе bootstrap скачиваем подписку напрямую, игнорируя download_lists_via_proxy. После старта sing-box subscription_update и list_update продолжают использовать прокси согласно настройке.
Исправить deadlock при холодном старте с download_lists_via_proxy=1
Синхронизация с netshift
Описание изменений
Добавил в Podkop поддержку подписок(URL подписок от провайдеров), а также, для обеспечения совместимости со всеми панелями провайдеров добавлена отправка HWID и ещё пары заголовков.
Что изменено
Детальное описание изменений:
sing-box check, чтобы в конфиг не попали невалидные аутбаунды, на случай, если вдруг провайдер возвращает что-то очень необычное или какой-то конкретный аутбаунд не поддерживается ядром singboxUser-Agent: singbox/ (сделано, чтобы по умолчанию сработало со всеми провайдерами, кто поддерживает клиенты на базе singbox)
X-HWID: (первые несколько символов от md5 для строки с mac + моделью устройства)
X-Device-OS: OpenWrt Linux (константа)
X-Device-Model: (модель роутера)
X-Ver-OS: (версия ядра Linux)
Скриншот меню настройки:

Скриншот из дашборда:
