453f485f36
Тонкая обвязка поверх rustdesk@1.4.9: preconfigure.sh патчит RENDEZVOUS_SERVERS+RS_PUB_KEY в hbb_common, build-windows.ps1 — локальный оркестратор сборки. Значения сервера/ключа не в репо (config/server.env в .gitignore, в CI — gitea secrets). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
3.3 KiB
Bash
56 lines
3.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Вшивает адрес сервера и публичный ключ в клон RustDesk перед сборкой.
|
|
# Патчит две константы в сабмодуле hbb_common:
|
|
# pub const RENDEZVOUS_SERVERS: &[&str] = &["rs-ny.rustdesk.com"];
|
|
# pub const RS_PUB_KEY: &str = "OeVu...";
|
|
#
|
|
# Значения берутся из окружения (см. config/server.env.example):
|
|
# RUSTDESK_SERVER — хост(ы) hbbs. Несколько — через запятую. Порт по умолчанию 21116,
|
|
# нестандартный указывать как host:port.
|
|
# RUSTDESK_PUB_KEY — публичный ключ сервера (содержимое id_ed25519.pub, base64).
|
|
# RUSTDESK_API_SERVER — (опц.) URL API-сервера (RustDesk Server Pro). Пусто — пропустить.
|
|
#
|
|
# Использование: RUSTDESK_SERVER=... RUSTDESK_PUB_KEY=... ./scripts/preconfigure.sh <путь-к-клону-rustdesk>
|
|
set -euo pipefail
|
|
|
|
SRC="${1:?укажи путь к клону rustdesk первым аргументом}"
|
|
CFG="$SRC/libs/hbb_common/src/config.rs"
|
|
|
|
[ -f "$CFG" ] || { echo "ОШИБКА: не найден $CFG — сабмодуль hbb_common не инициализирован?" >&2; exit 1; }
|
|
: "${RUSTDESK_SERVER:?не задан RUSTDESK_SERVER}"
|
|
: "${RUSTDESK_PUB_KEY:?не задан RUSTDESK_PUB_KEY}"
|
|
|
|
# Собираем Rust-массив &["a", "b"] из запятой-разделённого списка серверов.
|
|
IFS=',' read -ra SRV <<< "$RUSTDESK_SERVER"
|
|
ARR=""
|
|
for s in "${SRV[@]}"; do
|
|
s="$(echo -n "$s" | tr -d '[:space:]')"
|
|
[ -n "$s" ] && ARR="${ARR}\"${s}\", "
|
|
done
|
|
ARR="&[${ARR%, }]"
|
|
|
|
# Экранируем спецсимволы sed-замены (& | \) в подставляемых значениях.
|
|
esc() { printf '%s' "$1" | sed -e 's/[\\&|]/\\&/g'; }
|
|
ARR_ESC="$(esc "$ARR")"
|
|
KEY_ESC="$(esc "$RUSTDESK_PUB_KEY")"
|
|
|
|
# Патч RENDEZVOUS_SERVERS
|
|
sed -i -E "s|^pub const RENDEZVOUS_SERVERS: &\[&str\] = .*;|pub const RENDEZVOUS_SERVERS: \&[\&str] = ${ARR_ESC};|" "$CFG"
|
|
# Патч RS_PUB_KEY
|
|
sed -i -E "s|^pub const RS_PUB_KEY: &str = .*;|pub const RS_PUB_KEY: \&str = \"${KEY_ESC}\";|" "$CFG"
|
|
|
|
# Проверяем, что патч применился (значения не печатаем целиком — только факт).
|
|
grep -q "^pub const RENDEZVOUS_SERVERS: &\[&str\] = &\[\"" "$CFG" || { echo "ОШИБКА: не удалось пропатчить RENDEZVOUS_SERVERS" >&2; exit 1; }
|
|
if grep -q "OeVuKk5nlHiXp" "$CFG"; then
|
|
echo "ОШИБКА: RS_PUB_KEY остался дефолтным RustDesk" >&2; exit 1
|
|
fi
|
|
|
|
echo "[preconfigure] RENDEZVOUS_SERVERS -> ${#SRV[@]} сервер(ов), RS_PUB_KEY вшит."
|
|
|
|
# Опциональный API-сервер (RustDesk Server Pro). По умолчанию у hbbs/hbbr его нет.
|
|
if [ -n "${RUSTDESK_API_SERVER:-}" ]; then
|
|
# В 1.4.9 отдельной const API_SERVER нет; дефолт задаётся через overrideConfig/filename.
|
|
# Оставляем маркер для ручной доработки, если понадобится Pro-API.
|
|
echo "[preconfigure] RUSTDESK_API_SERVER задан ($RUSTDESK_API_SERVER) — вшивание API требует доп. патча (см. docs/CODEMAP.md)."
|
|
fi
|