Фаєрвол і резидентність даних.
DXPR Builder зберігає ваші сторінки у вашій власній базі даних Drupal. Він звертається до сервісів DXPR для перевірок ліцензії, ресурсів редактора й запитів ШІ. Ця сторінка перелічує кожне з’єднання, що кожне несе, де працюють моделі DXAI Kavya, як зберігається ключ продукту і що працює за обмеженого вихідного доступу.
З’єднання одним поглядом
| Хост | Хто звертається | Призначення | Потрібно для |
|---|---|---|---|
dxpr.com |
Сервер Drupal | Статус ліцензії, перевірка домену, синхронізація ліцензованих користувачів | Редагування |
cdn2.dxpr.com |
Браузер редактора | JavaScript і CSS редактора (основні) | Редагування |
cdn.dxpr.com |
Браузер редактора | JavaScript і CSS редактора (резервні) | Редагування |
kavya.dxpr.com |
Сервер Drupal | Запити ШІ й баланс кредитів ШІ | Функції ШІ |
html-extract.dxpr.com |
Браузер редактора | «Клонування з URL» ШІ | Функції ШІ |
r.jina.ai (сторонній) |
Браузер редактора | Читає вебсторінки, URL-адреси яких з’являються в запрошенні | Функції ШІ |
tuur.dxpr.com |
Браузер редактора | Аналітика використання редактора | Необов’язково |
Усі з’єднання використовують HTTPS на порті 443. Відвідувачі
сайта ніколи нічого не завантажують із серверів DXPR:
опубліковані сторінки відображаються з HTML, збереженого в
базі даних, а скрипт інтерфейсу
(dxpr_builder/dxpr_frontend.min.js) постачається всередині
модуля. app.dxpr.com з’являється лише в посиланнях,
показаних адміністраторам.
Перевірки ліцензії (dxpr.com)
Сервер Drupal викликає чотири кінцеві точки, визначені у файлі
src/Service/DxprBuilderLicenseServiceInterface.php,
кожну з ключем продукту як заголовком
Authorization: Bearer.
| Кінцева точка | Коли | Надіслані дані |
|---|---|---|
GET /api/user-license |
Кожні 24 години за авторизації, кожні 30 хвилин без неї | gba і users_tier (кількість облікових записів із дозволом edit with dxpr builder і тариф, до якого вона потрапляє), values_count (елементи вмісту з полем конструктора), site_base_url, site (HMAC геш-солі сайта; сама сіль не надсилається), site_mail (з system.site), project, version |
GET /api/domain-blacklist/{hostname} |
Щогодини | Лише назва хоста; без заголовка авторизації |
POST /api/central-user-storage/{add,remove,sync} |
Коли змінюються облікові записи, дозволи або ключ продукту; подальші дії ставляться в чергу й виконуються за cron | Назва хоста плюс, для кожного облікового запису з дозволом редагування, його адреса електронної пошти й назви ролей. Облікові записи без дійсної адреси електронної пошти пропускаються |
GET /api/user-license/users |
Коли відкривається сторінка «Ліцензії користувачів» | Нічого, крім ключа |
Вміст сторінки ніколи не є частиною запиту ліцензії.
Модуль також друкує прихований <div> на
головній сторінці з фіксованим рядком-маркером,
тарифом ліцензії, кількістю редакторів і кількістю збережень
(dxpr_builder_page_bottom() у файлі
dxpr_builder.module). Його видно у джерелі сторінки.
Ресурси редактора (cdn2.dxpr.com, cdn.dxpr.com)
Коли для параметра Ресурси редактора задано Хмара (стандарт),
браузер редактора завантажує JavaScript і CSS конструктора
з https://cdn2.dxpr.com/<version>/,
переходячи на https://cdn.dxpr.com/<version>/
після невдалої перевірки /health. Ключ продукту
додається до кожної URL-адреси ресурсу як параметр запиту
jwt (dxpr_builder_library_info_build()).
CDN перевіряє цей ключ: відповідь 401 змушує
js/editor_validation.js показати «Ваш ключ продукту
недійсний».
Варіанти Локальні (мініфіковані) і Локальні (немініфіковані)
з’являються у формі налаштувань, лише коли зібрана копія редактора існує в каталозі
dxpr_builder/ модуля, і така копія використовується
автоматично, навіть коли вибрано «Хмара». Репозиторій git
не відстежує ці зібрані файли, тож реліз,
завантажений із drupal.org, завантажує редактор
з CDN.
Запити ШІ (kavya.dxpr.com)
Браузер ніколи не звертається до kavya.dxpr.com.
Редактор надсилає запити на маршрути вашого власного сайта
(/dxpr_builder/ajax/ai/chat,
/dxpr_builder/ajax/ai/image,
/dxpr_builder/ajax/ai/image/edit; усі потребують
дозволу edit with dxpr builder, токена CSRF
і ліцензованого облікового запису). Сайт ретранслює
кожен запит через постачальника DXPR модуля AI Drupal
(ai_provider_dxpr) на
https://kavya.dxpr.com/v1/chat/completions,
/v1/images/generations або /v1/images/edits
з автентифікацією ключем DXPR API, збереженим у
модулі Key. Налаштування host постачальника
(ai_provider_dxpr.settings) може спрямувати запити
на інший хост. Окремо сторінка налаштувань ШІ
викликає GET https://kavya.dxpr.com/v1/account/balance
з ключем продукту, щоб показати ваш баланс кредитів.
Що містить запит ШІ
Лише функції ШІ надсилають вміст сторінки за межі сайта,
і лише коли редактор їх запускає
(dxpr_builder/build/dxpr-global/ai-service.js).
| Запит | Надісланий вміст |
|---|---|
| Генерування тексту й сторінок | Системне запрошення, запрошення редактора, історія чату |
| З вибраним елементом | Зовнішній HTML елемента: цілком, якщо 500 символів або менше, інакше його перші й останні 200 символів |
| Операції рівня сторінки | Наявний HTML сторінки до 50 000 символів; уся сторінка, коли замінюється ціла сторінка |
| Необов’язкові поля | Назва моделі, порядок увімкнутих постачальників, передбачуваний результат HTML, дозволені теги й класи, прапорець web_search, формат відповіді |
| Генерування зображень | Запрошення, розмір, якість, тло |
| Редагування зображень | Те саме плюс вихідне зображення, закодоване base64 |
Дві зручності отримують вебсторінки з браузера редактора
(ai-service-url-fetch.js): URL-адреса в запрошенні
запитується з доданим .md, а в разі невдачі через
https://r.jina.ai/<url>, сторонній сервіс читання,
яким не керує DXPR; запрошення, що просить клонувати сторінку, надсилає
URL-адресу на https://html-extract.dxpr.com/?url=.... В
обох випадках надсилається лише URL-адреса.
Вивід ШІ фільтрується на зворотному шляху. Дозволені
домени, заблоковані теги й дозволені теги задаються за адресою
/admin/dxpr_studio/dxpr_builder/ai_settings
у розділі Фільтрування виводу ШІ.
Де працюють моделі DXAI Kavya
DXPR Builder пропонує три моделі
(src/Constants/AiModelConstants.php):
| Модель | Назва API | Опис у формі налаштувань |
|---|---|---|
| DXAI Kavya M1 | kavya-m1 |
Найкраща продуктивність (OpenAI, Google Gemini, Anthropic) |
| DXAI Kavya M1 EU | kavya-m1-eu |
Орієнтована на приватність (MistralAI) |
| DXAI Kavya M1 Fast | kavya-m1-fast |
Найшвидші відповіді, нижча якість |
В жодному модулі немає налаштування регіону. Резидентність даних вибирається моделлю й тим, яких висхідних постачальників ви вмикаєте:
kavya-m1перемикається між п’ятьма постачальниками, переліченими з їхньою країною у формі налаштувань постачальника DXPR AI: Anthropic (Сполучені Штати), Google Gemini (Сполучені Штати), MistralAI (Франція), OpenAI (Сполучені Штати), XAI (Сполучені Штати). У режимі Ручний пріоритет ви перетягуєте постачальників між Увімкнено і Вимкнено і задаєте їхній порядок.kavya-m1-euвикористовує лише MistralAI. README постачальника DXPR AI стверджує, що він «тримає дані в межах Європи (сервери в Нідерландах)»; його документація стверджує, що сервер Kavya працює в Нідерландах із резервом у Німеччині, що запити йдуть через сервери MistralAI у Франції і що він ніколи не переходить на постачальника поза ЄС. Ці розташування задокументовано DXPR, а не забезпечено чимось у коді Drupal.
Зі встановленим ai_provider_dxpr модель вибирається
за адресою /admin/config/ai/providers/dxpr, і його
налаштування allowed_models керує тим, які моделі
можуть вибирати редактори. Без нього модель і порядок постачальників
задаються за адресою
/admin/dxpr_studio/dxpr_builder/ai_settings.
Як зберігається ключ продукту
Розділ Ліцензія сторінки
/admin/dxpr_studio/dxpr_builder/settings пропонує
два варіанти Спосіб зберігання
(src/Form/DxprBuilderSettingsForm.php,
src/Service/DxprBuilderKeyService.php):
- Модуль Key: ключ читається з сутності Key,
вибраної в полі Ключ.
dxpr_builder_update_9020()переміщує ключ, знайдений уdxpr_builder.settings, до сутності Keydxpr_builder_jwt, чий постачальник Configuration усе ще його експортує. Лише постачальник File або Environment тримає ключ поза експортом конфігурації. - Зберігання в конфігурації: ключ зберігається у
відкритому вигляді як
dxpr_builder.settings.json_web_tokenі включається до експорту конфігурації.
Ключ продукту це вебтокен JSON, що автентифікує виклики ліцензії, виклик балансу кредитів і URL-адреси ресурсів CDN; ставтеся до нього як до облікових даних.
Конфігурація фаєрвола
| Звідки | Дозволити вихідний HTTPS до | Примітки |
|---|---|---|
| Сервер Drupal | dxpr.com |
Ліцензія |
| Сервер Drupal | kavya.dxpr.com |
Лише ШІ |
| Робочі станції редакторів | cdn2.dxpr.com, cdn.dxpr.com |
Ресурси редактора |
| Робочі станції редакторів | html-extract.dxpr.com, r.jina.ai |
Лише ШІ; блокування вимикає тільки дослідження URL і клонування |
| Робочі станції редакторів | tuur.dxpr.com |
Аналітика; блокування не впливає на редагування |
Аналітика (dxpr_builder/build/dxpr-analytics/,
PostHog) визначає події за адресою електронної пошти
редактора й назвою хоста сайта. Вимкніть її командою
drush config:set dxpr_builder.settings record_analytics 0;
ключ не має поля форми. Ще два ключі
без поля форми читаються з
dxpr_builder.settings: cloud_url замінює
базову URL-адресу CDN (замість VERSION підставляється
версія модуля), а license_endpoint замінює
кінцеву точку центрального сховища користувачів. Задайте їх
перевизначенням конфігурації у файлі settings.php.
Конфігурація проксі
Виклики ліцензії й ШІ використовують HTTP-клієнт Drupal, тож
проксі налаштовується у файлі settings.php:
$settings['http_client_config']['proxy'] = [
'http' => 'http://proxy.example.com:8080',
'https' => 'http://proxy.example.com:8080',
'no' => ['localhost', '127.0.0.1'],
];
Браузери редакторів завантажують ресурси CDN і викликають сервіси аналітики й читання безпосередньо, тож ці запити наслідують налаштування проксі робочої станції.
Ізольовані й локальні розгортання
DXPR Builder працює на вашому власному сервері; жоден вміст не проходить через розміщений компонент. Коли ні сервер, ні редактори не можуть досягти DXPR:
| Можливість | Без будь-якого доступу DXPR |
|---|---|
| Обслуговування опублікованих сторінок | Працює; нічого не завантажується з DXPR |
| Зберігання вмісту | Працює; сторінки це значення полів у вашій базі даних |
| Завантаження редактора | Не вдається, якщо локальної збірки редактора немає в dxpr_builder/ |
| Перевірка ліцензії | Не вдається. Модуль журналює помилку, показує адміністраторам «У нас виникли проблеми з підключенням до серверів DXPR» і повторює кожні 30 хвилин. Редагування не блокується, поки налаштовано ключ продукту |
| Сторінка «Ліцензії користувачів» | Порожня; їй потрібен dxpr.com |
| Функції ШІ | Недоступні; кожен запит іде через kavya.dxpr.com |
| Аналітика, дослідження URL, клонування з URL | Тихо пропускаються |
Без ключа продукту взагалі модуль застосовує ліміти безкоштовного тарифу в коді: один редактор і 100 елементів вмісту.
Повністю локальне розгортання тому працює для
обслуговування й зберігання вмісту; редагування потребує доступу CDN
або локальної збірки редактора, а перевірка ліцензії
потребує dxpr.com. Зверніться до DXPR, якщо вам потрібна
збірка редактора для внутрішнього хостингу.
Що далі?
- Встановлення: налаштуйте ключ продукту й спосіб зберігання
- Функції ШІ: увімкніть ШІ й виберіть модель
- Безпека: дозволи й фільтрування виводу
- Ліцензія й ключ продукту: усунення помилок ліцензії