# Синхронизация доменов с reg.ru и Beget — как подключить

**Зачем это.** Чтобы картотека доменов в кабинете руководителя
(«IT-инфраструктура») сама подтягивала актуальный список доменов, даты
окончания регистрации и автопродление прямо из кабинетов reg.ru и Beget —
и руководству не нужно было заходить в разные кабинеты регистраторов.

> Термины простыми словами:
> - **API** (эй-пи-ай) — «служебное окошко» сервиса, через которое одна
>   программа спрашивает данные у другой. У reg.ru и Beget такое окошко есть:
>   можно попросить «дай список моих доменов и даты окончания».
> - **Регистратор** — компания, где куплен домен (reg.ru, Beget, hayhost.am).
> - **API-пароль** — отдельный пароль ТОЛЬКО для этого окошка, не главный
>   пароль от кабинета. Если он утечёт — риск меньше, а отозвать его можно, не
>   меняя основной пароль.
> - **Белый список IP** — список адресов серверов, которым разрешено
>   обращаться к окошку. Чужой сервер запрос сделать не сможет.

---

## ⚠️ Сначала — про безопасность (это важнее скорости)

Доступ к кабинету регистратора — это **полный контроль над доменами
компании**: их можно продлить, перенести, а в плохом сценарии и увести.
Поэтому подключаем по трём правилам, снижающим риск до минимума:

1. **Только чтение.** Панель будет лишь ЧИТАТЬ список доменов и даты. Она не
   продлевает и не меняет домены сама — это остаётся за вами и техдиректором
   в кабинете регистратора. Так даже при утечке доступа доменам ничего не
   грозит через панель.
2. **Отдельный API-пароль, где можно** (Beget поддерживает; reg.ru — пароль
   для API отдельно от входа). Не главный пароль кабинета.
3. **Привязка к IP нашего сервера** (reg.ru это требует обязательно): окошко
   отвечает только запросам с адреса нашего сервера, больше ни с чьих.
   Доступы храним в защищённых «переменных окружения» сервера (как ключи
   Яндекса/SMTP), не в коде и не на экране.

Если что-то из этого смущает — можно вообще не подключать синхронизацию и
вести картотегу вручную (она уже работает). Синхронизация — удобство, а не
обязательность.

---

## 1. reg.ru — настроить доступ к API

**Важно:** в кабинете reg.ru НЕТ отдельного переключателя «включить API /
разрешить работу». Доступ к API появляется сам, как только заданы две вещи:
**альтернативный пароль** и **разрешённый IP-адрес**. Поэтому шаги такие:

1. Войдите в кабинет: https://www.reg.ru → под своей учётной записью.
2. Откройте раздел **«Настройки API»** (в настройках профиля/аккаунта).
3. **Альтернативный пароль для API** — задайте (вы это уже сделали ✅). Это
   отдельный пароль только для API, не пароль входа. Сохраните его.
4. **Диапазон IP-адресов** — сюда добавьте IP нашего сервера:
   **`85.239.63.47`** (адрес приложения на Timeweb — тот же, на который
   указывает домен sekta-atlas.ru). Пока IP не добавлен, reg.ru запросы к API
   НЕ пропускает — это главный «рубильник». Оговорка: у облачных приложений
   исходящий адрес изредка отличается от входящего; при первом тестовом
   подключении я проверю фактический адрес и, если reg.ru не пропустит,
   назову точный IP для замены (одна правка в этом же поле).
5. **«Аутентификация SSL» / «Использовать SSL-сертификат для доступа к API»**
   — оставьте **ВЫКЛЮЧЕННОЙ** (галочку не ставьте). Это необязательная
   дополнительная защита сертификатом; мы работаем по паролю + IP, и если
   SSL включить, каждый запрос обязан нести сертификат — нам это не нужно и
   только усложнит. Если у вас уже загружен какой-то SSL-сертификат в этом
   разделе — скажите, учту в коде.
6. **Пришлите мне защищённо** (не в общий чат): логин учётной записи reg.ru +
   альтернативный пароль для API. Я положу их в переменные сервера
   (`REGRU_API_LOGIN`, `REGRU_API_PASSWORD`).

> Технический предел reg.ru — 1200 обращений в час: нам хватит с огромным
> запасом (список доменов раз в сутки — это единицы обращений).
>
> Итог по вашему вопросу: переключателя «разрешить работу» искать не нужно —
> его нет. Достаточно **альтернативного пароля (готово)** + **добавить наш IP
> в «диапазон IP-адресов»**. SSL-аутентификацию оставляем выключенной.

## 2. Beget — включить API, ОДНА галочка методов, пароль

Реальный путь в кабинете: **Безопасность → вкладка «Beget API»**.

1. **«Разрешить аутентификацию по API»** — переключатель включить (✅ если уже
   зелёный).
2. **«Разрешённые методы» — принцип минимальных прав, это важно.** Снимите
   галочку **«Все функции API»** и оставьте включённой **ТОЛЬКО ОДНУ**:
   **«Управление доменами»** — этого достаточно, чтобы панель читала список
   доменов и даты. Всё остальное СНЯТЬ: Управление DNS, FTP, MySQL, сайтами,
   почтой, аккаунтом, бэкапами, Cron, сбор статистики. Зачем: даже если
   API-пароль когда-то утечёт, максимум возможного — домены, а не доступ к
   файлам сайта, базам и бэкапам. Нажмите **«Применить»**.
3. **«Пароль API»** → кнопка **«Установить новый пароль для API»** — задайте
   отдельный пароль (не пароль входа), сохраните.
4. **Пришлите защищённо**: логин Beget + пароль для API. Положу в переменные
   сервера (`BEGET_API_LOGIN`, `BEGET_API_PASSWORD`).

## 3. hayhost.am (sekta.am, sektaeu.com) — вручную

Армянский регистратор hayhost.am публичного API (окошка для программ), как у
reg.ru/Beget, **не предоставляет**. Эти два домена остаются в картотеке на
ручном ведении — их немного, и меняются они редко. Даты по ним вписываете
руками в карточке домена.

---

## Что панель будет уметь после подключения

- **Кнопка «Обновить из reg.ru / Beget»** в разделе «IT-инфраструктура»:
  по нажатию панель читает актуальный список доменов, даты окончания
  регистрации и признак автопродления — и обновляет картотеку. Ваши ручные
  правки в примечаниях и назначении при этом сохраняются.
- **Автообновление раз в сутки** (по желанию) — чтобы данные освежались сами,
  без нажатия. Настраивается после того, как ручная синхронизация проверена.
- **Подсветка сроков** уже работает и без синхронизации: домены, у которых
  регистрация заканчивается в ближайший месяц, помечаются жёлтым, истёкшие —
  красным. С синхронизацией эти даты будут обновляться автоматически.

## Чего панель делать НЕ будет (сознательно)

Панель **не продлевает и не переносит домены сама**. Это осознанное решение
по безопасности: чтобы дать панели право менять домены, пришлось бы выдать ей
полный доступ на запись в кабинет регистратора — а это большой риск при малой
пользе (продление домена — редкое действие в пару кликов). Панель показывает,
у каких доменов подходит срок, и напоминает; само продление делаете вы или
техдиректор в кабинете регистратора.

---

**Итого что от вас (по шагам выше):**
1. reg.ru: включить API, задать API-пароль, добавить IP сервера, прислать
   логин+API-пароль защищённо.
2. Beget: включить API, задать API-пароль, прислать логин+API-пароль.
3. hayhost.am — ничего, ведём вручную.

Как пришлёте доступы — подключу синхронизацию (это уже моя работа на сервере,
дополнительных действий от вас не потребуется).

---

## Что происходит при синхронизации (кнопка уже в панели)

Кнопки «Обновить из reg.ru» и «Обновить из Beget» появились в разделе
«IT-инфраструктура» — они видны, как только ключи внесены в переменные
сервера. По нажатию панель:

1. **Читает** у регистратора список доменов и даты окончания (у Beget — ещё
   и признак автопродления; reg.ru его через API не сообщает). Только чтение,
   одно обращение, ничего у регистратора не меняется.
2. **Сопоставляет по имени домена** — кириллические домены («секта.com»,
   «нейросекта.рф») распознаются корректно: машинную запись «xn--…» панель
   переводит в обычную.
3. **Обновляет бережно.** У домена, который уже есть в картотеке, обновляются
   только: дата «Действует до», признак автопродления и — если поле пустое —
   «Регистратор». Ваши ручные записи (владелец, назначение, примечания,
   хостинг, статус) не затрагиваются. Пустую дату от регистратора панель
   существующей датой не перетирает.
4. **Добавляет новое.** Домен, которого в картотеке не было, добавляется
   строкой (имя, регистратор, срок) — остальные поля заполняете вручную.
5. **Ничего не удаляет.** Если домен числится в картотеке за регистратором,
   а в ответе его нет — панель лишь показывает мягкое предупреждение
   «не найдены у регистратора» (возможно, домен перенесён или в другом
   аккаунте). Решение — за вами.

После прогона под кнопками появляется отчёт: сколько обновлено, добавлено,
без изменений, и список «не найденных». Ошибки (не пустил по IP, неверный
пароль) показываются красным понятным текстом с подсказкой, что исправить.
Каждый прогон фиксируется в «Истории действий».
