Evgeny

Evgeny 

>.<

19subscribers

11posts

Что не так с easy-xray?

1. Easy-xray не гибкий. Совсем. Если что-то нужно поменять в конфигах, то жди беды. Easy-xray предполагает, что определённые поля конфигов находятся в определённых местах, например, что api inbound стоит первым в списке входящих соединений. Если изменить его положение, то easy-xray может начать генерировать невалидные конфиги. И это трудно заметить - тестов-то нет.
Правильный подход - не использовать jq, а использовать интерполяцию строк, когда значение переменной просто подставляется в строку. Это даже в bash можно было бы сделать. "address": "${address}"

2. Bash. Трудный для чтения, неудобный, error-prone. Я не могу без ChatGPT написать код, который с помощью for или sed в правилах добавит "domain:" к каждому домену. Высокоуровневый язык был бы лучше.
3. Не декларативные конфиги. То есть конфиги всегда декларативные, но с easy-xray пользователь не пишет конфиги, он запускает команды. Команда может полностью переписать конфиг или испортить его, и бэкапы не всегда спасают.
Писать конфиги вручную совершенно неудобно, например, для добавления пользователя нужно как минимум сгенерировать два id. Выход? Сочетать два подхода. Если конфиг - это история команд, простая и понятная, которую можно править как текстовый файл, то бекап не нужен в принципе.
4. Можно п.3 рассмотреть на примере. Здесь ещё одна идея - использовать в качестве языка конфигураций не JSON, TOML или DHALL, а использовать полноценный язык программирования. Здесь Scala3. Python, Clojure (babashka), JS (deno) - все имеют плюсы и минусы. Любой из них скорее всего тоже бы подошёл.
Как это должно работать: владелец сервера заполняет часть конфига, а дальше использует команды для добавления или удаления пользователей. Эти команды только дописывают строчки в конфиг, и ничего не удаляют из него. Вся история сохраняется
Здесь .withVLUser(...) - строка, добавленная внешней командой (может быть даже написанной на bash). При желании можно добавлять такие строчки вручную.
5. Чего ещё не хватает?
- Другие порты в пользовательских конфигах, для совместимости с v2rayNG и чтобы не нужно было использовать sudo с xray в линуксе.
- Статистика расхода трафика по пользователям. Если отказываться от докера (там xray работает нестабильно) и запускать xray как сервис, то статистика сбрасывается очень часто, из-за этого она бесполезна.
- Поддержки Shadowsocks2022 (Outline) как альтернативы.
- Multi-hop. Можно организовать на стороне клиента по аналогии с vless-mixer, но иногда проброс трафика на другую машину нужен на самом сервере. Например, если входная нода в России.
- Инструмент для генерации конфигов или подписок для популярных приложений. В том числе из сторонних vless-ссылок.
- Автотесты.
- В далёком будущем - поддержка конфигураций для ядра Sing.
Subscription levels8

35

$0.47 per month
Примерно столько стоит вывод на карту.

42

$0.56 per month
35+7

Дошик

$1.32 per month
Или доменное имя для CDN.

Круассан

$1.98 per month
Или дополнительный IPv6 адрес.

Два круассана

$4 per month
Или сервер с половиной ядра.

Две пачки масла

$6.6 per month
Или VPS.

Кофе

$11.9 per month
250 г классных кофейных зёрен. Без вариантов.

\(OoO)/

$19.8 per month
Моя Прелесть.
Go up