# Socks

Стандартная реализация протокола Socks, совместимая с [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol), [Socks 4a](https://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol) и Socks 5.

::: danger
**Протокол Socks не обеспечивает шифрования передачи, поэтому он не подходит для передачи данных через общедоступные сети.**
:::

## OutboundConfigurationObject

```json
{
  "servers": [
    {
      "address": "127.0.0.1",
      "port": 1234,
      "users": [
        {
          "user": "test user",
          "pass": "test pass",
          "level": 0
        }
      ]
    }
  ]
}
```

> `servers`: \[ [ServerObject](#serverobject) \]

Список Socks-серверов, где каждый элемент представляет собой конфигурацию сервера.

### ServerObject

```json
{
  "address": "127.0.0.1",
  "port": 1234,
  "users": [
    {
      "user": "test user",
      "pass": "test pass",
      "level": 0
    }
  ]
}
```

> `address`: address

Адрес сервера, обязательный параметр.

::: tip
Поддерживается подключение только к Socks 5 серверам.
:::

> `port`: number

Порт сервера, обязательный параметр.

> `users`: \[ [UserObject](#userobject) \]

Массив, представляющий список пользователей, где каждый элемент представляет собой конфигурацию пользователя.

Если список не пуст, Socks-клиент будет использовать информацию о пользователе для аутентификации; если не указан, аутентификация не выполняется.

Значение по умолчанию: пустой массив.

#### UserObject

```json
{
  "user": "test user",
  "pass": "test pass",
  "level": 0
}
```

> `user`: string

Имя пользователя, тип данных: строка. Обязательный параметр.

> `pass`: string

Пароль, тип данных: строка. Обязательный параметр.

> `level`: number

Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя.

Значение userLevel соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0.