Skip to content
Эта страница переведена с помощью ИИ и может содержать неточности. Помогите улучшить перевод на GitHub.

Участие в разработке ​

Gately — проект с открытым кодом, развиваемый сообществом; Issue и Pull Request приветствуются. Репозиторий: https://github.com/wangwanjie/gately

Локальная разработка ​

Зависимости: Go 1.26+, Node.js 24+, pnpm.

bash
make web      # сборка фронтенда (вывод в web/dist, встраивается через go:embed)
make build    # компиляция bin/gately
make test     # go test -race ./...
make lint     # gofmt, go vet, проверка типов фронтенда

При разработке фронтенда запустите cd web && pnpm dev: запросы /api проксируются на локальный 127.0.0.1:16680.

Правила ​

  • Код совместимости должен опираться только на публично наблюдаемое поведение, интерфейсы и форматы конфигурации. Не отправляйте код, скопированный из сторонних бинарных файлов или фронтенд-сборок.
  • Новому модулю нужны: структура конфигурации и валидация, запуск и остановка во время работы, REST-интерфейс, юнит-тесты; модуль, который можно мигрировать из Lucky, реализует luckyimport.Importer, а модуль, статус которого показывается на странице «Обзор», реализует module.Summarizer.
  • Комментарии в коде пишутся на китайском; в управляющих конструкциях обязательны фигурные скобки.

Дополнительные тесты ​

Часть тестов по умолчанию пропускается и требует дополнительных условий:

ТестКак включить
Сквозной тест ACME (Pebble)Установите pebble и pebble-challtestsrv, задайте GATELY_PEBBLE_BIN, GATELY_PEBBLE_SRC
Реальные публичные STUN-серверыGATELY_NET_TEST=1
Проверка импорта на реальной конфигурации LuckyGATELY_LUCKY_SAMPLE и другие, см. TestImportRealSample в каждом модуле

Лицензия ​

Apache License 2.0

Переводы ​

  • Строки интерфейса управления хранятся в web/src/locales/<language>/<namespace>.json. Исходный язык — упрощённый китайский; при добавлении или изменении строк обновите как минимум zh-CN и en и перед отправкой выполните cd web && node scripts/check-i18n.mjs. Правила описаны в web/src/locales/README.md.
  • Языковые пакеты сайта хранятся в website/.vitepress/i18n/<language>.json, а страницы каждого языка — в website/<language dir>/.
  • Тексты бэкенда во время работы (сообщения об ошибках, журналы, уведомления, документация API) используют в качестве ключей китайские строковые литералы из исходного кода, а переводы хранятся в internal/i18n/locales/<language>.json. После добавления или изменения китайского текста выполните go run ./internal/i18n/cmd/i18nsync -root ., чтобы добавить новые ключи во все языковые файлы, и заполните переводы; go test ./internal/i18n проверяет, что каждый язык заполнен полностью и спецификаторы формата совпадают с исходными. Для предложений с подставляемыми значениями используйте одну строку формата fmt.Sprintf на всё предложение и не склеивайте несколько китайских фрагментов, чтобы каждый язык мог использовать свой порядок слов.
  • Документация API генерируется программой для каждого языка: make api-docs записывает её в docs/api/<language>/, вручную синхронизировать ничего не нужно.
  • Поддерживаемые языки: 简体中文, English, 繁體中文, 日本語, 한국어, Español, Français, Deutsch, Русский, Português (Brasil).

Распространяется по лицензии Apache-2.0.