v2.5.0: wait for telemt listener readiness

This commit is contained in:
Виталий Литвинов
2026-04-24 21:39:02 +03:00
parent 20103ccac8
commit fe6d91c3a5

View File

@@ -195,18 +195,45 @@ EOF
# previous Pro config (tls_domain=anten-ka.com) and was rejecting SNI=google.com
# clients with unknown_sni_action=Drop even though the on-disk config said
# tls_domain=google.com.
wait_telemt_ready() {
local timeout="${1:-90}"
local port elapsed=0
port=$(awk '
/^\[server\]/ { in_server=1; next }
/^\[/ && in_server { exit }
in_server && $1 == "port" {
sub(/^[^=]*=[[:space:]]*/, "")
gsub(/[[:space:]]/, "")
print
exit
}
' "$TELEMT_CONFIG" 2>/dev/null)
[[ "$port" =~ ^[0-9]+$ ]] || port=443
while [ "$elapsed" -lt "$timeout" ]; do
if ! systemctl is-active --quiet "$TELEMT_SERVICE" 2>/dev/null; then
return 1
fi
if ss -ltnp 2>/dev/null | grep -E ":${port}\b" | grep -q "telemt"; then
return 0
fi
sleep 1
elapsed=$((elapsed + 1))
done
return 1
}
start_telemt() {
if systemctl is-active --quiet "$TELEMT_SERVICE" 2>/dev/null; then
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
else
systemctl start "$TELEMT_SERVICE" 2>/dev/null
fi
sleep 2
if systemctl is-active --quiet "$TELEMT_SERVICE"; then
if wait_telemt_ready 90; then
log_success "telemt запущен"
return 0
else
log_error "telemt не запустился"
log_error "telemt не запустился или не открыл порт"
journalctl -u "$TELEMT_SERVICE" --no-pager -n 10 2>/dev/null
return 1
fi
@@ -223,12 +250,12 @@ stop_telemt() {
restart_telemt() {
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
sleep 2
if systemctl is-active --quiet "$TELEMT_SERVICE"; then
if wait_telemt_ready 90; then
log_success "telemt перезапущен"
return 0
else
log_error "telemt не перезапустился"
log_error "telemt не перезапустился или не открыл порт"
journalctl -u "$TELEMT_SERVICE" --no-pager -n 10 2>/dev/null
return 1
fi
}