Выпуски
Текущий выпуск ретранслятора — 1.1.0. Примечания к выпуску — в выпуске на GitHub, а на странице загрузок перечислены все файлы с размером и контрольной суммой.
- Версии имеют вид
MAJOR.MINOR.PATCH. Версия совпадает с указанной вCargo.tomlретранслятора. - Каждый выпуск помечается тегом
vX.Y.Zв rchat-core и сопровождается выпуском на GitHub со всеми исполняемыми файлами, их файлами.sha256иSHA256SUMS.txt. - Выпуск 1.1.0 поддерживает только протокол версии 2. Следующий выпуск, 2.0.0, поддерживает только протокол версии 3 (постквантовое шифрование, слепое сопряжение, равномерный трафик, приглашения на ретранслятор, возобновление TLS, собственный сайт-приманка для каждого ретранслятора). Ретранслятор и приложение должны использовать одну версию протокола: старые приложения получают отказ «client too old; update rChat». Обновляйте их вместе.
Где лежат файлы
Заголовок раздела «Где лежат файлы»| URL | Содержимое |
|---|---|
https://assets.r-chat.net/VERSION | Номер текущей версии. install.sh читает его, если не указан --version. Он меняется, только когда загружены все файлы выпуска. |
https://assets.r-chat.net/install.sh | Установщик. |
https://assets.r-chat.net/<версия>/<файл> | Исполняемые файлы, по одному <файл>.sha256 на каждый и SHA256SUMS.txt. |
https://assets.r-chat.net/<версия>/rchat-server.service | Юнит systemd, который install.sh устанавливает в Linux. |
https://assets.r-chat.net/<версия>/rchat.rc | rc-скрипт, который install.sh устанавливает во FreeBSD. |
Исполняемые файлы
Заголовок раздела «Исполняемые файлы»Файлы называются rchat-server-<arch>-<os>, с суффиксом -gnu или -static для двух сборок Linux:
| Файл | Платформа |
|---|---|
rchat-server-x86_64-linux-static | Linux x86_64, статическая компоновка (musl). Работает в любом дистрибутиве. |
rchat-server-aarch64-linux-static | Linux ARM64, статическая компоновка (musl). |
rchat-server-x86_64-linux-gnu | Linux x86_64, нужна glibc. |
rchat-server-aarch64-linux-gnu | Linux ARM64, нужна glibc. |
rchat-server-armv7-linux | Linux ARMv7 (hard float), нужна glibc. |
rchat-server-riscv64gc-linux-gnu | Linux RISC-V 64, нужна glibc. |
rchat-server-x86_64-freebsd | FreeBSD x86_64. |
rchat-server-macos-arm64 | macOS, Apple silicon. |
rchat-server-macos-x86_64 | macOS, Intel. |
rchat-server-macos-universal | macOS, обе архитектуры (этот файл использует install.sh). |
Выпуск может не включать цель, которая не собралась; страница загрузок показывает ровно то, что опубликовано.
Контрольные суммы
Заголовок раздела «Контрольные суммы»<файл>.sha256содержит только хеш SHA-256 файла<файл>: 64 шестнадцатеричных символа, без имени файла.SHA256SUMS.txtперечисляет хеш и имя каждого исполняемого файла выпуска, по одному в строке, в формате, который читаетsha256sum -c.
Проверка загрузки
Заголовок раздела «Проверка загрузки»В Linux, на примере файла rchat-server-x86_64-linux-static (подставьте имя скачанного файла):
curl -LO https://assets.r-chat.net/1.1.0/rchat-server-x86_64-linux-staticcurl -LO https://assets.r-chat.net/1.1.0/rchat-server-x86_64-linux-static.sha256echo "$(cat rchat-server-x86_64-linux-static.sha256) rchat-server-x86_64-linux-static" | sha256sum -cНа macOS используйте shasum -a 256 rchat-server-macos-universal; во FreeBSD — sha256 -q rchat-server-x86_64-freebsd и сравните результат с файлом контрольной суммы на глаз.
install.sh выполняет ту же проверку сам и ничего не устанавливает, если хеш не совпадает (код выхода 3).
Файлы для macOS подписаны сертификатом Developer ID, с hardened runtime и защищённой меткой времени, и нотариально заверены Apple. К отдельному исполняемому файлу нельзя прикрепить (staple) билет нотариального заверения, поэтому билет хранится у Apple, а не внутри файла.
Манифест выпуска
Заголовок раздела «Манифест выпуска»Страница загрузок генерируется из манифеста выпуска, который пишет сборка выпуска. Для каждого выпуска он содержит:
| Поле | Значение |
|---|---|
version | Версия выпуска, например 1.1.0. |
date | Дата выпуска. |
notes_url | Примечания к выпуску на GitHub. |
base_url | https://assets.r-chat.net/<версия>/. |
artifacts | По одной записи на исполняемый файл: file, os, arch, variant (gnu, static или нет), size в байтах и sha256. |
Сборка сайта завершается ошибкой, если версия в манифесте отличается от версии в Cargo.toml ретранслятора или у какого-либо файла нет sha256. Скрипт загрузки отказывается работать, если манифест не совпадает с файлами в dist/: версия, набор файлов и каждый sha256 должны совпадать с настоящим хешем файла.
Сборка из исходного кода
Заголовок раздела «Сборка из исходного кода»Ретранслятор и общая клиентская библиотека открыты под лицензией AGPL-3.0-or-later в rchat-core:
git clone https://github.com/PDG-Global/rchat-core.gitcd rchat-core/rchatcargo build --release --locked --bin rchat-serverЧтобы собрать помеченный выпуск, сначала переключитесь на его тег (git checkout v1.1.0). Нужны набор инструментов Rust, компилятор C и CMake; см. Установка.