Добавлены рекомендации по обработке ошибки превышения лимита запросов к API reg.ru. Внедрены задержки перед запросами для защиты от rate limit. Обновлены сообщения об ошибках с инструкциями по устранению неполадок.
This commit is contained in:
@@ -89,6 +89,42 @@ curl -s https://ipinfo.io/ip
|
|||||||
sudo letsencrypt-regru --test-api
|
sudo letsencrypt-regru --test-api
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## ❌ Issue: "IP exceeded allowed connection rate"
|
||||||
|
|
||||||
|
### Cause
|
||||||
|
Reg.ru API limits request frequency from single IP (typically 10-20 requests per minute).
|
||||||
|
|
||||||
|
### ✅ Solution
|
||||||
|
|
||||||
|
1. **Wait 5-10 minutes**
|
||||||
|
```bash
|
||||||
|
# Wait before next attempt
|
||||||
|
sleep 600 # 10 minutes
|
||||||
|
sudo letsencrypt-regru --obtain
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Configure automation properly**
|
||||||
|
```bash
|
||||||
|
# Check certificates once per day
|
||||||
|
sudo systemctl enable letsencrypt-regru.timer
|
||||||
|
sudo systemctl start letsencrypt-regru.timer
|
||||||
|
|
||||||
|
# Check schedule
|
||||||
|
sudo systemctl cat letsencrypt-regru.timer
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Request frequency recommendations**
|
||||||
|
- ✅ Automatic check: **once per day**
|
||||||
|
- ✅ Manual check: **no more than once per hour**
|
||||||
|
- ❌ Avoid frequent `--test-api` tests
|
||||||
|
- ❌ Don't create frequent cron jobs
|
||||||
|
|
||||||
|
4. **Use --check instead of --obtain**
|
||||||
|
```bash
|
||||||
|
# Check without creating certificate
|
||||||
|
sudo letsencrypt-regru --check
|
||||||
|
```
|
||||||
|
|
||||||
## ❌ Issue: Connection timeout
|
## ❌ Issue: Connection timeout
|
||||||
|
|
||||||
### ✅ Solution
|
### ✅ Solution
|
||||||
|
|||||||
@@ -89,6 +89,42 @@ curl -s https://ipinfo.io/ip
|
|||||||
sudo letsencrypt-regru --test-api
|
sudo letsencrypt-regru --test-api
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## ❌ Проблема: "IP exceeded allowed connection rate"
|
||||||
|
|
||||||
|
### Причина
|
||||||
|
API reg.ru ограничивает частоту запросов с одного IP (обычно 10-20 запросов в минуту).
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
|
||||||
|
1. **Подождите 5-10 минут**
|
||||||
|
```bash
|
||||||
|
# Подождите перед следующей попыткой
|
||||||
|
sleep 600 # 10 минут
|
||||||
|
sudo letsencrypt-regru --obtain
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Настройте автоматизацию правильно**
|
||||||
|
```bash
|
||||||
|
# Проверка сертификатов 1 раз в день
|
||||||
|
sudo systemctl enable letsencrypt-regru.timer
|
||||||
|
sudo systemctl start letsencrypt-regru.timer
|
||||||
|
|
||||||
|
# Проверить расписание
|
||||||
|
sudo systemctl cat letsencrypt-regru.timer
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Рекомендации по частоте запросов**
|
||||||
|
- ✅ Автоматическая проверка: **1 раз в день**
|
||||||
|
- ✅ Ручная проверка: **не чаще 1 раза в час**
|
||||||
|
- ❌ Избегайте частых тестов `--test-api`
|
||||||
|
- ❌ Не создавайте cron с частым запуском
|
||||||
|
|
||||||
|
4. **Используйте --check вместо --obtain**
|
||||||
|
```bash
|
||||||
|
# Проверка без создания сертификата
|
||||||
|
sudo letsencrypt-regru --check
|
||||||
|
```
|
||||||
|
|
||||||
## ❌ Проблема: Таймаут подключения
|
## ❌ Проблема: Таймаут подключения
|
||||||
|
|
||||||
### ✅ Решение
|
### ✅ Решение
|
||||||
|
|||||||
@@ -220,6 +220,26 @@ class RegRuAPI:
|
|||||||
self.logger.error("❌ Неверные учетные данные")
|
self.logger.error("❌ Неверные учетные данные")
|
||||||
self.logger.error("🔧 Проверьте username и password в конфигурации")
|
self.logger.error("🔧 Проверьте username и password в конфигурации")
|
||||||
self.logger.error("=" * 80)
|
self.logger.error("=" * 80)
|
||||||
|
elif "IP exceeded allowed connection rate" in error_msg or error_code == "IP_EXCEEDED_ALLOWED_CONNECTION_RATE":
|
||||||
|
self.logger.error("=" * 80)
|
||||||
|
self.logger.error("⏱️ ОШИБКА: ПРЕВЫШЕН ЛИМИТ ЗАПРОСОВ К API")
|
||||||
|
self.logger.error("=" * 80)
|
||||||
|
self.logger.error("❌ IP адрес превысил допустимую частоту подключений к API reg.ru")
|
||||||
|
self.logger.error("")
|
||||||
|
self.logger.error("🔧 РЕШЕНИЕ ПРОБЛЕМЫ:")
|
||||||
|
self.logger.error("1. Подождите 5-10 минут перед следующей попыткой")
|
||||||
|
self.logger.error("2. Не запускайте скрипт слишком часто")
|
||||||
|
self.logger.error("3. Используйте --test-api только для диагностики")
|
||||||
|
self.logger.error("4. Настройте systemd timer для автоматических проверок (раз в день)")
|
||||||
|
self.logger.error("")
|
||||||
|
self.logger.error("📊 ЛИМИТЫ API REG.RU:")
|
||||||
|
self.logger.error(" • Обычно: не более 10-20 запросов в минуту с одного IP")
|
||||||
|
self.logger.error(" • Рекомендация: проверка сертификатов 1-2 раза в день")
|
||||||
|
self.logger.error("")
|
||||||
|
self.logger.error("⚙️ АВТОМАТИЗАЦИЯ:")
|
||||||
|
self.logger.error(" sudo systemctl enable letsencrypt-regru.timer")
|
||||||
|
self.logger.error(" sudo systemctl start letsencrypt-regru.timer")
|
||||||
|
self.logger.error("=" * 80)
|
||||||
else:
|
else:
|
||||||
self.logger.error(f"Ошибка API reg.ru: {error_msg} (код: {error_code})")
|
self.logger.error(f"Ошибка API reg.ru: {error_msg} (код: {error_code})")
|
||||||
|
|
||||||
@@ -247,6 +267,10 @@ class RegRuAPI:
|
|||||||
"""
|
"""
|
||||||
self.logger.info(f"Получение DNS записей для домена: {domain}")
|
self.logger.info(f"Получение DNS записей для домена: {domain}")
|
||||||
|
|
||||||
|
# Задержка перед запросом (защита от rate limit)
|
||||||
|
import time
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"domain": domain,
|
"domain": domain,
|
||||||
}
|
}
|
||||||
@@ -275,6 +299,10 @@ class RegRuAPI:
|
|||||||
"""
|
"""
|
||||||
self.logger.info(f"Добавление TXT записи: {subdomain}.{domain} = {txt_value}")
|
self.logger.info(f"Добавление TXT записи: {subdomain}.{domain} = {txt_value}")
|
||||||
|
|
||||||
|
# Задержка перед запросом (защита от rate limit)
|
||||||
|
import time
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"domain": domain,
|
"domain": domain,
|
||||||
"subdomain": subdomain,
|
"subdomain": subdomain,
|
||||||
@@ -323,6 +351,10 @@ class RegRuAPI:
|
|||||||
self.logger.info("Проверка доступности API reg.ru...")
|
self.logger.info("Проверка доступности API reg.ru...")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# Небольшая задержка перед запросом (защита от rate limit)
|
||||||
|
import time
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
# Простой запрос для проверки доступа
|
# Простой запрос для проверки доступа
|
||||||
params = {}
|
params = {}
|
||||||
result = self._make_request("user/get_balance", params)
|
result = self._make_request("user/get_balance", params)
|
||||||
|
|||||||
Reference in New Issue
Block a user