ostp/docs/migration_v0_3_1_ru.md

4.3 KiB
Raw Permalink Blame History

Миграция конфигурации 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 (Старый формат)

{
  "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 вы должны изменять именно новую структуру массивов.