Zapora sieciowa i przechowywanie danych.
DXPR Builder przechowuje twoje strony we własnej bazie Drupala. Kontaktuje się z usługami DXPR w sprawie kontroli licencji, zasobów edytora i żądań AI. Ta strona wymienia każde połączenie, co każde niesie, gdzie działają modele DXAI Kavya, jak przechowywany jest klucz produktu i co działa przy ograniczonym dostępie wychodzącym.
Połączenia w skrócie
| Host | Wykonuje | Cel | Potrzebny do |
|---|---|---|---|
dxpr.com |
Serwer Drupala | Status licencji, sprawdzenie domeny, synchronizacja licencjonowanych użytkowników | Edycja |
cdn2.dxpr.com |
Przeglądarka redaktora | JavaScript i CSS edytora (główny) | Edycja |
cdn.dxpr.com |
Przeglądarka redaktora | JavaScript i CSS edytora (zapasowy) | Edycja |
kavya.dxpr.com |
Serwer Drupala | Żądania AI i saldo kredytów AI | Funkcje AI |
html-extract.dxpr.com |
Przeglądarka redaktora | AI „klonowanie z URL” | Funkcje AI |
r.jina.ai (strona trzecia) |
Przeglądarka redaktora | Czyta strony, których URL-e pojawiają się w prompcie | Funkcje AI |
tuur.dxpr.com |
Przeglądarka redaktora | Analityka użycia edytora | Opcjonalnie |
Wszystkie połączenia używają HTTPS na porcie 443. Odwiedzający witrynę nigdy nic nie wczytują z serwerów DXPR: opublikowane strony renderują się z HTML zapisanego w bazie, a skrypt front-endowy (dxpr_builder/dxpr_frontend.min.js) jest dostarczany wewnątrz modułu. app.dxpr.com pojawia się tylko w linkach pokazywanych administratorom.
Kontrole licencji (dxpr.com)
Serwer Drupala wywołuje cztery endpointy zdefiniowane w src/Service/DxprBuilderLicenseServiceInterface.php, każdy z kluczem produktu jako nagłówkiem Authorization: Bearer.
| Endpoint | Kiedy | Wysyłane dane |
|---|---|---|
GET /api/user-license |
Co 24 godziny, gdy autoryzowany, co 30 minut, gdy nie | gba i users_tier (liczba kont z uprawnieniem edit with dxpr builder i próg, do którego wpada), values_count (elementy treści używające pola kreatora), site_base_url, site (HMAC soli hash witryny; sól nie jest wysyłana osobno), site_mail (z system.site), project, version |
GET /api/domain-blacklist/{hostname} |
Co godzinę | Tylko nazwa hosta; bez nagłówka autoryzacji |
POST /api/central-user-storage/{add,remove,sync} |
Gdy zmieniają się konta, uprawnienia albo klucz produktu; kolejne są kolejkowane i wykonują się na cronie | Nazwa hosta plus, dla każdego konta z uprawnieniem edycji, jego adres e-mail i nazwy ról. Konta bez prawidłowego adresu e-mail są pomijane |
GET /api/user-license/users |
Gdy otwiera się stronę licencji użytkowników | Nic poza kluczem |
Treść strony nigdy nie jest częścią żądania licencji. Moduł drukuje też ukryty <div> na stronie głównej z ustalonym ciągiem znacznika, progiem licencji, liczbą redaktorów i liczbą zapisów (dxpr_builder_page_bottom() w dxpr_builder.module). Da się go odczytać w źródle strony.
Zasoby edytora (cdn2.dxpr.com, cdn.dxpr.com)
Gdy Editor Assets jest Cloud (domyślnie), przeglądarka redaktora wczytuje JavaScript i CSS kreatora z https://cdn2.dxpr.com/<version>/, z powrotem do https://cdn.dxpr.com/<version>/ po nieudanym teście /health. Klucz produktu jest dołączany do każdego URL-a zasobu jako parametr jwt (dxpr_builder_library_info_build()). CDN sprawdza ten klucz: odpowiedź 401 sprawia, że js/editor_validation.js pokazuje „Your product key is not valid”.
Opcje Local (minified) i Local (unminified) pojawiają się na formularzu ustawień tylko, gdy w katalogu dxpr_builder/ modułu istnieje zbudowana kopia edytora, a taka kopia jest używana automatycznie, nawet gdy wybrano Cloud. Repozytorium git nie śledzi tych zbudowanych plików, więc wydanie pobrane z drupal.org wczytuje edytor z CDN.
Żądania AI (kavya.dxpr.com)
Przeglądarka nigdy nie kontaktuje się z kavya.dxpr.com. Edytor wysyła do tras we własnej witrynie (/dxpr_builder/ajax/ai/chat, /dxpr_builder/ajax/ai/image, /dxpr_builder/ajax/ai/image/edit; wszystkie wymagają uprawnienia edit with dxpr builder, tokena CSRF i licencjonowanego konta). Witryna przekazuje każde żądanie przez provider DXPR modułu Drupal AI (ai_provider_dxpr) do https://kavya.dxpr.com/v1/chat/completions, /v1/images/generations albo /v1/images/edits, uwierzytelnione kluczem DXPR API przechowywanym w module Key. Ustawienie host providera (ai_provider_dxpr.settings) może skierować żądania na inny host. Osobno strona ustawień AI wywołuje GET https://kavya.dxpr.com/v1/account/balance z kluczem produktu, aby pokazać saldo kredytów.
Co zawiera żądanie AI
Tylko funkcje AI wysyłają treść strony poza witrynę i tylko, gdy redaktor je uruchomi (dxpr_builder/build/dxpr-global/ai-service.js).
| Żądanie | Wysyłana treść |
|---|---|
| Generowanie tekstu i stron | Prompt systemowy, prompt redaktora, historia czatu |
| Z wybranym elementem | Zewnętrzny HTML elementu: cały, gdy 500 znaków albo mniej, w przeciwnym razie pierwsze i ostatnie 200 znaków |
| Operacje na poziomie strony | Istniejący HTML strony, do 50 000 znaków; cała strona, gdy zastępowana jest cała strona |
| Pola opcjonalne | Nazwa modelu, kolejność włączonych providerów, przewidywany wynik HTML, dozwolone znaczniki i klasy, flaga web_search, format odpowiedzi |
| Generowanie obrazu | Prompt, rozmiar, jakość, tło |
| Edycja obrazu | To samo plus obraz źródłowy, zakodowany base64 |
Dwie wygody pobierają strony z przeglądarki redaktora (ai-service-url-fetch.js): URL w prompcie jest żądany z dopisanym .md, a gdy to się nie uda, przez https://r.jina.ai/<url>, usługę czytającą strony, nieobsługiwaną przez DXPR; prompt proszący o sklonowanie strony wysyła URL do https://html-extract.dxpr.com/?url=.... W obu przypadkach wysyłany jest tylko URL.
Wyjście AI jest filtrowane w drodze powrotnej. Dozwolone domeny, zablokowane znaczniki i dozwolone znaczniki ustawia się na /admin/dxpr_studio/dxpr_builder/ai_settings w sekcji AI Output Filtering.
Gdzie działają modele DXAI Kavya
DXPR Builder oferuje trzy modele (src/Constants/AiModelConstants.php):
| Model | Nazwa API | Opis pokazywany w formularzu ustawień |
|---|---|---|
| DXAI Kavya M1 | kavya-m1 |
Najlepsza wydajność (OpenAI, Google Gemini, Anthropic) |
| DXAI Kavya M1 EU | kavya-m1-eu |
Prywatność przede wszystkim (MistralAI) |
| DXAI Kavya M1 Fast | kavya-m1-fast |
Najszybsze odpowiedzi, niższa jakość |
Nie ma ustawienia regionu w żadnym z modułów. Rezydencja danych jest wybierana modelem i tym, których providerów nadrzędnych włączysz:
kavya-m1przełącza między pięcioma providerami, wymienionymi z krajem w formularzu ustawień providera DXPR AI: Anthropic (Stany Zjednoczone), Google Gemini (Stany Zjednoczone), MistralAI (Francja), OpenAI (Stany Zjednoczone), XAI (Stany Zjednoczone). W trybie Manual priority przeciągasz providerów między Enabled a Disabled i ustawiasz ich kolejność.kavya-m1-euużywa tylko MistralAI. README providera DXPR AI stwierdza, że „keeps data within European boundaries (servers in Netherlands)”; jego dokumentacja stwierdza, że serwer Kavya działa w Holandii z kopią zapasową w Niemczech, że żądania przechodzą przez serwery MistralAI we Francji i że nigdy nie przełącza na providera spoza UE. Te lokalizacje dokumentuje DXPR; nic w kodzie Drupala ich nie wymusza.
Gdy zainstalowano ai_provider_dxpr, model wybiera się na /admin/config/ai/providers/dxpr, a jego ustawienie allowed_models kontroluje, które modele mogą wybierać redaktorzy. Bez niego model i kolejność providerów ustawia się na /admin/dxpr_studio/dxpr_builder/ai_settings.
Jak przechowywany jest klucz produktu
Sekcja License na /admin/dxpr_studio/dxpr_builder/settings oferuje dwie opcje Storage method (src/Form/DxprBuilderSettingsForm.php, src/Service/DxprBuilderKeyService.php):
- Key module: klucz jest odczytywany z encji Key wybranej w sekcji Key.
dxpr_builder_update_9020()przenosi klucz znaleziony wdxpr_builder.settingsdo encji Keydxpr_builder_jwt, której provider Configuration wciąż go eksportuje. Tylko provider File albo Environment trzyma klucz poza eksportami konfiguracji. - Configuration storage: klucz jest zapisywany jawnym tekstem jako
dxpr_builder.settings.json_web_tokeni jest dołączany do eksportów konfiguracji.
Klucz produktu to token JSON Web Token, który uwierzytelnia wywołania licencji, wywołanie salda kredytów i URL-e zasobów CDN; traktuj go jak poświadczenie.
Konfiguracja zapory sieciowej
| Z | Zezwól na wychodzący HTTPS do | Uwagi |
|---|---|---|
| Serwer Drupala | dxpr.com |
Licencja |
| Serwer Drupala | kavya.dxpr.com |
Tylko AI |
| Stacje robocze redaktorów | cdn2.dxpr.com, cdn.dxpr.com |
Zasoby edytora |
| Stacje robocze redaktorów | html-extract.dxpr.com, r.jina.ai |
Tylko AI; zablokowanie wyłącza jedynie sprawdzanie adresów URL i klonowanie |
| Stacje robocze redaktorów | tuur.dxpr.com |
Analityka; blokowanie nie wpływa na edycję |
Analityka (dxpr_builder/build/dxpr-analytics/, PostHog) rozpoznaje zdarzenia po adresie e-mail redaktora i nazwie hosta witryny. Wyłącz ją przez drush config:set dxpr_builder.settings record_analytics 0; klucz nie ma pola w formularzu. Dwa kolejne klucze bez pola w formularzu są odczytywane z dxpr_builder.settings: cloud_url zastępuje bazowy URL CDN (VERSION jest podmieniane na wersję modułu), a license_endpoint zastępuje endpoint centralnego przechowywania użytkowników. Ustaw je nadpisaniem konfiguracji w settings.php.
Konfiguracja proxy
Wywołania licencji i AI używają klienta HTTP Drupala, więc proxy konfiguruje się w 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'],
];
Przeglądarki redaktorów wczytują zasoby CDN i wywołują usługi analityki i czytania bezpośrednio, więc te żądania podlegają ustawieniom proxy stacji roboczych.
Wdrożenia odizolowane (air-gapped) i lokalne (on-premise)
DXPR Builder działa na twoim własnym serwerze; żadna treść nie przechodzi przez hostowany komponent. Gdy ani serwer, ani redaktorzy nie mogą dotrzeć do DXPR:
| Możliwość | Bez żadnego dostępu do DXPR |
|---|---|
| Udostępnianie opublikowanych stron | Działa; nic nie jest wczytywane z DXPR |
| Przechowywanie treści | Działa; strony są polami w twojej bazie |
| Wczytywanie edytora | Nie działa, chyba że lokalna kompilacja edytora znajduje się w dxpr_builder/ |
| Walidacja licencji | Nie działa. Moduł loguje błąd, pokazuje administratorom „We are having trouble connecting to the DXPR servers” i ponawia co 30 minut. Edycja nie jest blokowana, gdy skonfigurowano klucz produktu |
| Strona licencji użytkowników | Pusta; potrzebuje dxpr.com |
| Funkcje AI | Niedostępne; każde żądanie przechodzi przez kavya.dxpr.com |
| Analityka, badanie adresów URL, klonowanie z URL-a | Pomijane po cichu |
Bez żadnego klucza produktu moduł stosuje w kodzie limity darmowego progu: jeden redaktor i 100 elementów treści.
W pełni lokalne wdrożenie działa więc do udostępniania i przechowywania treści; edycja potrzebuje dostępu do CDN albo lokalnej kompilacji edytora, a walidacja licencji potrzebuje dxpr.com. Skontaktuj się z DXPR, jeśli potrzebujesz kompilacji edytora do hostowania wewnętrznego.
Co dalej?
- Instalacja: skonfiguruj klucz produktu i metodę przechowywania
- Funkcje AI: włącz AI i wybierz model
- Bezpieczeństwo: uprawnienia i filtrowanie wyjścia
- Licencja i klucz produktu: rozwiązywanie błędów licencji