Перейти к содержимому

⚙️ Настройки

Два файла JSON. Команды proxy config path и proxy settings path точно показывают, какие именно файлы используются в данный момент.

ОСДиректория
macOS~/Library/Application Support/tspm/
Linux~/.config/tspm/ (учитывается XDG_CONFIG_HOME)

config.json

  1. Флаг --config-file <ПУТЬ>
  2. Переменная TSPM_CONFIG
  3. Поле config_path в settings.json — относительный путь разрешается относительно директории, в которой находится settings.json, а не относительно текущей рабочей директории.
  4. Системная директория настроек (см. выше)

settings.json

  1. Флаг --settings-file <ПУТЬ>
  2. Переменная TSPM_SETTINGS
  3. Системная директория настроек (см. выше)
  4. Файл ./settings.json в текущей рабочей директории

Рабочий каталог намеренно стоит последним. settings.json — распространённое имя файла, и если бы любой каталог, в котором вы оказались, имел приоритет над вашей собственной конфигурацией, поведение программы зависело бы от места запуска.

Оба файла создаются со значениями по умолчанию при первом запуске. Существующий файл с некорректным JSON не перезаписывается — программа сообщает об ошибке в stderr и оставляет файл нетронутым, поэтому опечатка не уничтожит ваши профили.


settings.json
{
"config_path": null,
"lang": "ru"
}
ПолеТипОписание
config_pathстрока или nullПуть к своему config.json. ~ раскрывается. null — системный каталог конфигурации.
langстрокаЯзык интерфейса: "ru" или "en". По умолчанию "ru".

Изменяется командами proxy settings set --config-path ~/proxies.json или proxy lang en.


config.json
{
"active_profile": "work",
"profiles": {
"work": {
"name": "Рабочий SOCKS",
"host": "127.0.0.1",
"port": 1080,
"protocol": "socks5"
},
"lab": {
"name": "Лабораторный HTTP",
"host": "127.0.0.1",
"port": 8080,
"protocol": "http"
}
},
"ping_targets": [
{ "name": "Google", "url": "https://www.google.com" },
{ "name": "GitHub", "url": "https://github.com" },
{ "name": "OpenAI", "url": "https://status.openai.com/api/v2/status.json" },
{ "name": "Anthropic", "url": "https://www.anthropic.com" },
{ "name": "Cloudflare", "url": "https://1.1.1.1" }
],
"diagnose_endpoints": [
{ "name": "GitHub API", "url": "https://api.github.com" }
],
"geo_apis": [
"https://ifconfig.co/json",
"http://ip-api.com/json"
],
"ipv4_api": "https://api4.ipify.org",
"ipv6_api": "https://api6.ipify.org",
"health_check_url": "https://www.gstatic.com/generate_204",
"speedtest_url": "https://speed.cloudflare.com/__down?bytes=2097152"
}

Полный актуальный пример поставляется в файле configs/config.default.json.

ПолеТипИспользуетсяОписание
active_profileстрокавездеКлюч активной записи в profiles
profilesобъектвездеКлюч профиля → объект профиля
ping_targetsмассивping, benchmark, best, monitor, dashЭндпоинты для замера задержки
diagnose_endpointsмассивdiagnoseЭндпоинты для проверки доступности
geo_apisмассивstatus, dashJSON API геолокации, перебираются по порядку до первого ответа
ipv4_apiстрокаstatusТекстовый эндпоинт, возвращающий внешний IPv4
ipv6_apiстрокаstatusТекстовый эндпоинт, возвращающий внешний IPv6
health_check_urlстрокаmonitorПроверяется для оценки работоспособности прокси. Лучше указывать адрес, отвечающий 204.
speedtest_urlстрокаspeedtestЗагружается для замера скорости

Все поля необязательны. Конфигурация без какого-либо из них — в том числе созданная старой версией — загрузится, подставив значения по умолчанию.

ПолеТипОписание
nameстрокаОтображаемое имя
hostстрокаИмя хоста или IP. Допустимы только буквы, цифры, ., -, _, :, [, ].
portчисло1–65535
protocolстрокаhttp, https, socks4, socks4a, socks5, socks5h. По умолчанию socks5.

Профили проверяются при каждой записи — и через profile set, и через import. Некорректный профиль отклоняется, а не сохраняется, поскольку его значения попадают в URL прокси и в команды shell.

Примечание при обновлении с 2.1.x: неиспользуемое поле верхнего уровня enabled удалено. Существующие файлы продолжают работать — поле просто игнорируется.

Схема

Перетаскивайте схему. Масштаб — двумя пальцами или колесом. Клавиши: стрелки, +, −, 0.