mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 11:26:03 +00:00
v2.5.0: wait for telemt listener readiness
This commit is contained in:
@@ -195,18 +195,45 @@ EOF
|
|||||||
# previous Pro config (tls_domain=anten-ka.com) and was rejecting SNI=google.com
|
# 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
|
# clients with unknown_sni_action=Drop even though the on-disk config said
|
||||||
# tls_domain=google.com.
|
# 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() {
|
start_telemt() {
|
||||||
if systemctl is-active --quiet "$TELEMT_SERVICE" 2>/dev/null; then
|
if systemctl is-active --quiet "$TELEMT_SERVICE" 2>/dev/null; then
|
||||||
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
|
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
|
||||||
else
|
else
|
||||||
systemctl start "$TELEMT_SERVICE" 2>/dev/null
|
systemctl start "$TELEMT_SERVICE" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
sleep 2
|
if wait_telemt_ready 90; then
|
||||||
if systemctl is-active --quiet "$TELEMT_SERVICE"; then
|
|
||||||
log_success "telemt запущен"
|
log_success "telemt запущен"
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
log_error "telemt не запустился"
|
log_error "telemt не запустился или не открыл порт"
|
||||||
journalctl -u "$TELEMT_SERVICE" --no-pager -n 10 2>/dev/null
|
journalctl -u "$TELEMT_SERVICE" --no-pager -n 10 2>/dev/null
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -223,12 +250,12 @@ stop_telemt() {
|
|||||||
|
|
||||||
restart_telemt() {
|
restart_telemt() {
|
||||||
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
|
systemctl restart "$TELEMT_SERVICE" 2>/dev/null
|
||||||
sleep 2
|
if wait_telemt_ready 90; then
|
||||||
if systemctl is-active --quiet "$TELEMT_SERVICE"; then
|
|
||||||
log_success "telemt перезапущен"
|
log_success "telemt перезапущен"
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
log_error "telemt не перезапустился"
|
log_error "telemt не перезапустился или не открыл порт"
|
||||||
|
journalctl -u "$TELEMT_SERVICE" --no-pager -n 10 2>/dev/null
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user