# Миграция конфигурации OSTP на версию 0.3.1

В версии `v0.3.1` формат `config.json` проекта OSTP был значительно переработан для поддержки современной архитектуры мульти-серверных подключений. Новый формат конфигурации обеспечивает большую гибкость: теперь он разделен на входящие подключения (`inbounds`), исходящие подключения (`outbounds`) и гибкие правила маршрутизации (`routing`), заменяя устаревшую монолитную структуру прошлых версий.

## Автоматическая миграция

Ядро OSTP и GUI клиенты оснащены автоматическим мигратором. При запуске OSTP `v0.3.1` с файлом `config.json` от предыдущей версии, мигратор автоматически преобразует старый формат в новый.

После успешной миграции файл будет перезаписан в новом формате, и его заголовок будет содержать комментарий:
```json
// OSTP Configuration v0.3.1
// DO NOT EDIT THIS COMMENT - Migrator relies on it
{
  "version": "0.3.1",
  "mode": "client",
  ...
}
```

## Справочник по новому формату

Если вы предпочитаете настраивать OSTP вручную, ниже приведено сравнение и примеры нового формата.

### Устаревшая конфигурация (v0.2.x)
```json
{
  "mode": "client",
  "server": "192.168.1.100:50000",
  "access_key": "mysecretkey",
  "socks5_bind": "127.0.0.1:1088",
  "tun": {
    "enable": true,
    "kill_switch": true
  },
  "exclude": {
    "domains": ["localhost"],
    "ips": ["192.168.1.0/24"]
  }
}
```

### Новая конфигурация (v0.3.1)
```json
{
  "version": "0.3.1",
  "mode": "client",
  "api": {
    "enabled": true,
    "bind": "127.0.0.1:50001",
    "token": "admin-secret-token"
  },
  "log": {
    "level": "info"
  },
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "auto_route": true,
      "mtu": 1140
    },
    {
      "type": "socks",
      "tag": "socks-in",
      "bind_addr": "127.0.0.1:1088"
    }
  ],
  "outbounds": [
    {
      "type": "ostp",
      "tag": "proxy",
      "server": "192.168.1.100",
      "port": 50000,
      "access_key": "mysecretkey",
      "transport": {
        "type": "udp"
      },
      "multiplex": {
        "enabled": false
      }
    },
    {
      "type": "direct",
      "tag": "direct"
    },
    {
      "type": "block",
      "tag": "block"
    }
  ],
  "routing": {
    "rules": [
      {
        "domain_suffix": ["localhost"],
        "ip_cidr": ["192.168.1.0/24"],
        "outbound": "direct"
      }
    ],
    "default_outbound": "proxy"
  }
}
```

### Основные изменения
- **Outbounds (Исходящие)**: Теперь можно задать сразу несколько прокси-серверов.
- **Inbounds (Входящие)**: TUN и SOCKS5 выделены в отдельные независимые модули.
- **Routing (Маршрутизация)**: Точная маршрутизация трафика между входящими и исходящими узлами на основе доменов, IP-адресов и имен процессов.
- **Комментарии**: GUI и ядро теперь поддерживают JS-комментарии (с помощью `//`) в `config.json` вместо устаревших полей вида `"_comment"`.
