system/agents/workers/beget.ai.md

Beget Agent

Тип: worker
Версия: 1.0.0
Коннектор: library/connectors/api/beget/
Конфиг: system/config/beget.yaml


Роль

Управляет хостингом Beget через API:
- почтовые ящики
- DNS записи
- сайты и домены
- базы данных
- тикеты поддержки


Инициализация

from library.connectors.api.beget import BegetClient

beget = BegetClient.from_config()  # читает system/config/beget.yaml
# или явно:
beget = BegetClient(login="kondurov", password="JU5-QeT-YvD-Ayg")

Почта

# Список ящиков
boxes = beget.mail.get_mailbox_list()

# Создать ящик
beget.mail.create_mailbox(
    domain="aipd.ru",
    mailbox="admin",
    password="StrongPass123!"
)

# Изменить пароль
beget.mail.change_password("aipd.ru", "admin", "NewPass!")

# Переслать на другой адрес
beget.mail.set_forward("aipd.ru", "admin", "admin@gmail.com")

# Удалить
beget.mail.delete_mailbox("aipd.ru", "admin")

DNS

# Получить все записи домена
records = beget.dns.get_data("aipd.ru")

# Добавить A-запись
beget.dns.add_records("aipd.ru", [
    {"type": "A", "value": "155.212.142.142"}
])

# Добавить TXT (SPF)
beget.dns.add_records("aipd.ru", [
    {"type": "TXT", "value": "v=spf1 include:beget.com ~all"}
])

# Добавить MX
beget.dns.add_records("aipd.ru", [
    {"type": "MX", "priority": 10, "value": "mx1.beget.com."},
    {"type": "MX", "priority": 20, "value": "mx2.beget.com."},
])

Поддержка (тикеты)

# Создать тикет
ticket = beget.support.create_ticket(
    subject="Установить PTR запись",
    message=(
        "Добрый день!\n\n"
        "Прошу установить PTR-запись (обратный DNS) для нашего VPS:\n"
        "IP: 155.212.142.142\n"
        "PTR: mail.aipd.ru\n\n"
        "Это необходимо для корректной работы почтового сервера.\n\n"
        "Спасибо!"
    )
)
ticket_id = ticket["id"]

# Список тикетов
tickets = beget.support.get_list()

# Посмотреть переписку
thread = beget.support.get_ticket(ticket_id)

# Ответить
beget.support.reply(ticket_id, "Спасибо, подтверждаем.")

# Закрыть
beget.support.close_ticket(ticket_id)

Сайты и домены

# Добавить домен в аккаунт (нужно для создания почты на нём)
beget.site.add("aipd.ru")

# Список сайтов
sites = beget.site.get_list()

# Список зарегистрированных доменов
domains = beget.domain.get_list()

# Изменить PHP версию
beget.domain.change_php_version("pirotehnika.spb.ru", "8.3")

MySQL

# Список БД
dbs = beget.mysql.get_list()

# Создать БД (имя = kondurov_suffix)
beget.mysql.add_db("newapp", "StrongPass!")

# Изменить пароль
beget.mysql.change_access_password("kondurov_newapp", "NewPass!")

Статистика

# Нагрузка всех сайтов
load = beget.stat.get_sites_list_load()

# Нагрузка конкретного
load = beget.stat.get_site_load("pirotehnika.spb.ru")

# Нагрузка БД
db_load = beget.stat.get_db_list_load()

Типичные задачи

Добавить aipd.ru и создать почту

beget = BegetClient.from_config()

# 1. Добавить домен в аккаунт
beget.site.add("aipd.ru")

# 2. Создать ящики
import secrets, string
def gen_pass():
    chars = string.ascii_letters + string.digits + "!@#$"
    return "".join(secrets.choice(chars) for _ in range(16))

admin_pass = gen_pass()
ai_pass    = gen_pass()

beget.mail.create_mailbox("aipd.ru", "admin", admin_pass)
beget.mail.create_mailbox("aipd.ru", "ai",    ai_pass)

print(f"admin@aipd.ru : {admin_pass}")
print(f"ai@aipd.ru    : {ai_pass}")

Запросить PTR у поддержки

beget = BegetClient.from_config()

ticket = beget.support.create_ticket(
    subject="Установить PTR запись для VPS",
    message=(
        "Добрый день!\n\n"
        "Прошу установить PTR-запись для IP нашего VPS:\n"
        "  IP:  155.212.142.142\n"
        "  PTR: mail.aipd.ru\n\n"
        "Запись необходима для работы почтового сервера.\n"
        "Спасибо!"
    )
)
print(f"Тикет создан: #{ticket['id']}")