HTTPS: адрес без номера порта — 443 и 80

«Сервер: HTTPS» → «Адрес без номера порта»: bj слушает 443 (тот же HTTPS) и
80 (переход на https://имя/), переходы и адреса — без «:8443». Право на
порты <1024 — drop-in systemd AmbientCapabilities=CAP_NET_BIND_SERVICE
через root-помощника (bj-system-admin ports on|off, bj перезапускается).
Нет права/порт занят — bj работает по 8443, в настройках видна причина.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-22 13:33:42 +03:00
parent 77b0ab1117
commit 76e6f82369
6 changed files with 177 additions and 22 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ process_one(){
# датчик случайных чисел Валидаты: проверка и сеанс «двигайте мышью» (движения — из мастера bj)
rng-status|rng-start|rng-cancel) out=$(/usr/local/sbin/bj-validata-rng "${action#rng-}" 2>&1) ;;
# системные настройки сервера: серверы времени (NTP)
system-ntp|system-tz|system-sync) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-system-admin "${action#system-}" 2>&1) ;;
system-ntp|system-tz|system-sync|system-ports) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-system-admin "${action#system-}" 2>&1) ;;
# резервное копирование и восстановление (настройки bj → bj-backup-admin); параметры — JSON в extra
backup-config|backup-test|backup-run|backup-list|backup-verify|backup-restore) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-backup-admin "${action#backup-}" 2>&1) ;;
# Перезапуск службы модуля из админки. Список закрытый: чужую службу
+13
View File
@@ -4,12 +4,25 @@
# ntp — серверы времени (BJ_EXTRA: "ntp1.example.ru ntp2.example.ru"): ntpd, chrony или systemd-timesyncd —
# что стоит на сервере. Время важно для подписей и обмена с НРД.
# sync — поставить часы сейчас по серверам службы времени (не ждать её плавной подстройки)
# ports — адрес bj без номера порта (BJ_EXTRA: on|off): службе bj-server право слушать 443/80
# (drop-in AmbientCapabilities=CAP_NET_BIND_SERVICE), перезапуск bj через 3 с
set -uo pipefail
q() { python3 -c "import json,sys;print(json.dumps(sys.argv[1],ensure_ascii=False))" "$1"; }
ok() { echo "{\"ok\":true,\"output\":$(q "$1")}"; }
err() { echo "{\"ok\":false,\"error\":$(q "$1")}"; exit 0; }
cmd=${1:-}
case "$cmd" in
ports)
d=/etc/systemd/system/bj-server.service.d; f=$d/50-bj-std-ports.conf
case "${BJ_EXTRA:-on}" in
on) mkdir -p "$d" && printf '%s\n' '[Service]' '# bj слушает 443 (HTTPS) и 80 (переход на https://) — адрес без номера порта' 'AmbientCapabilities=CAP_NET_BIND_SERVICE' > "$f" || err "не удалось записать $f" ;;
off) rm -f "$f" ;;
*) err "ports: on или off" ;;
esac
systemctl daemon-reload || err "systemctl daemon-reload не выполнился"
systemd-run --quiet --on-active=3 /bin/systemctl restart bj-server.service >/dev/null 2>&1 || { (sleep 3; systemctl restart bj-server.service) >/dev/null 2>&1 & }
ok "порты 443/80: ${BJ_EXTRA:-on}; bj перезапустится через 3 с"
;;
ntp)
servers=$(printf '%s' "${BJ_EXTRA:-}" | tr ',;' ' ' | xargs)
[ -n "$servers" ] || err "не указан сервер времени"