mirror of https://github.com/ospab/ostp.git
103 lines
4.3 KiB
Markdown
103 lines
4.3 KiB
Markdown
# Миграция конфигурации 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 **автоматически** конвертирует ваш старый конфиг в новый модульный формат и сохранит его на диск без потери данных.
|
||
|
||
### Что происходит при миграции:
|
||
|
||
1. **TUN и SOCKS5** -> преобразуются в массив `inbounds`.
|
||
- Настройка `socks5_bind` становится входящим `local_proxy` (SOCKS).
|
||
- Настройка `tun` становится входящим `tun`.
|
||
2. **Сервер OSTP** -> переносится в массив `outbounds`.
|
||
- Параметры `server`, `access_key`, `transport`, `mux` объединяются в `outbound` с типом `"ostp"`.
|
||
3. **Split Tunneling (Exclude)** -> преобразуется в `routing` правила.
|
||
- Старые `domains` и `ips` конвертируются в правила, направляющие трафик в `"direct"` outbound.
|
||
- Все остальные запросы по умолчанию направляются в `"proxy"` outbound.
|
||
4. **Поля `version`**
|
||
- Добавляется поле `"version": "0.3.1"`, чтобы предотвратить повторную миграцию в будущем. Поле `_comment` было удалено.
|
||
|
||
## Пример изменения
|
||
|
||
### До 0.3.1 (Старый формат)
|
||
```json
|
||
{
|
||
"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 (Новый формат)
|
||
```json
|
||
{
|
||
"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 вы должны изменять именно новую структуру массивов.
|