4.3 KiB
Миграция конфигурации OSTP v0.3.1
В версии OSTP 0.3.1 мы полностью переработали архитектуру конфигурации config.json для клиента. Старая монолитная структура (где все настройки были в корневом объекте) заменена на модульную систему на базе массивов inbounds (входящие соединения) и outbounds (исходящие соединения), аналогично Xray/V2Ray/Sing-box.
Это позволяет OSTP масштабироваться, поддерживать несколько прокси-серверов, несколько точек входа (SOCKS5, TUN) и сложную маршрутизацию (routing).
Автоматическая миграция
В ядро ostp встроен автоматический мигратор. При запуске любой программы (cli, gui, flutter) ядро проверит ваш config.json.
Если в конфигурации отсутствует поле "version": "0.3.1", OSTP автоматически конвертирует ваш старый конфиг в новый модульный формат и сохранит его на диск без потери данных.
Что происходит при миграции:
- TUN и SOCKS5 -> преобразуются в массив
inbounds.- Настройка
socks5_bindстановится входящимlocal_proxy(SOCKS). - Настройка
tunстановится входящимtun.
- Настройка
- Сервер OSTP -> переносится в массив
outbounds.- Параметры
server,access_key,transport,muxобъединяются вoutboundс типом"ostp".
- Параметры
- Split Tunneling (Exclude) -> преобразуется в
routingправила.- Старые
domainsиipsконвертируются в правила, направляющие трафик в"direct"outbound. - Все остальные запросы по умолчанию направляются в
"proxy"outbound.
- Старые
- Поля
version- Добавляется поле
"version": "0.3.1", чтобы предотвратить повторную миграцию в будущем. Поле_commentбыло удалено.
- Добавляется поле
Пример изменения
До 0.3.1 (Старый формат)
{
"mode": "client",
"log_level": "info",
"server": "1.2.3.4:50000",
"access_key": "secret",
"socks5_bind": "127.0.0.1:1088",
"tun": {
"enable": true
},
"exclude": {
"domains": ["localhost"]
}
}
После 0.3.1 (Новый формат)
{
"mode": "client",
"version": "0.3.1",
"log": {
"level": "info"
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"auto_route": true,
"mtu": 1140
},
{
"type": "local_proxy",
"tag": "socks-in",
"protocol": "socks",
"listen": "127.0.0.1",
"port": 1088
}
],
"outbounds": [
{
"type": "ostp",
"tag": "proxy",
"server": "1.2.3.4",
"port": 50000,
"access_key": "secret",
"transport": {
"type": "udp"
}
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
}
],
"routing": {
"rules": [
{
"domain_suffix": ["localhost"],
"outbound": "direct"
}
],
"default_outbound": "proxy"
}
}
Информация для разработчиков GUI (ostp-gui, ostp-flutter)
Если вы разрабатываете интеграции или сторонние клиенты, вам больше не нужно парсить старые поля. Вы должны использовать массивы inbounds и outbounds. Если GUI передает serde_json::Value в ядро, ядро само проведет миграцию перед запуском. Однако для сохранения изменений из UI вы должны изменять именно новую структуру массивов.