Firewall und Datenresidenz.
DXPR Builder speichert Ihre Seiten in Ihrer eigenen Drupal-Datenbank. Es kontaktiert DXPR-Dienste für Lizenzprüfungen, Editor-Assets und KI-Anfragen. Diese Seite listet jede Verbindung auf, was jede überträgt, wo die DXAI-Kavya-Modelle laufen, wie der Produktschlüssel gespeichert wird und was funktioniert, wenn der ausgehende Zugriff eingeschränkt ist.
Verbindungen im Überblick
| Host | Hergestellt von | Zweck | Benötigt für |
|---|---|---|---|
dxpr.com |
Drupal-Server | Lizenzstatus, Domainprüfung, Synchronisierung lizenzierter Benutzer | Bearbeitung |
cdn2.dxpr.com |
Browser der Redaktion | Editor-JavaScript und -CSS (primär) | Bearbeitung |
cdn.dxpr.com |
Browser der Redaktion | Editor-JavaScript und -CSS (Fallback) | Bearbeitung |
kavya.dxpr.com |
Drupal-Server | KI-Anfragen und KI-Credit-Guthaben | KI-Funktionen |
html-extract.dxpr.com |
Browser der Redaktion | KI-„Clone from URL“ | KI-Funktionen |
r.jina.ai (Drittanbieter) |
Browser der Redaktion | Liest Webseiten, deren URLs in einem Prompt erscheinen | KI-Funktionen |
tuur.dxpr.com |
Browser der Redaktion | Editor-Nutzungsanalyse | Optional |
Alle Verbindungen nutzen HTTPS auf Port 443. Besucher der Website
laden niemals etwas von DXPR-Servern:
Veröffentlichte Seiten werden aus in der
Datenbank gespeichertem HTML gerendert und das Frontend-Skript
(dxpr_builder/dxpr_frontend.min.js) wird im
Modul mitgeliefert. app.dxpr.com erscheint nur in Links,
die Administratoren gezeigt werden.
Lizenzprüfungen (dxpr.com)
Der Drupal-Server ruft vier Endpunkte auf, definiert in
src/Service/DxprBuilderLicenseServiceInterface.php,
jeden mit dem Produktschlüssel als
Authorization: Bearer-Header.
| Endpunkt | Wann | Gesendete Daten |
|---|---|---|
GET /api/user-license |
Alle 24 Stunden wenn autorisiert, alle 30 Minuten wenn nicht | gba und users_tier (Anzahl Konten mit der Berechtigung edit with dxpr builder und die Stufe, in die sie fällt), values_count (Inhaltselemente mit Builder-Feld), site_base_url, site (ein HMAC des Hash-Salts der Website; der Salt selbst wird nicht gesendet), site_mail (aus system.site), project, version |
GET /api/domain-blacklist/{hostname} |
Stündlich | Nur der Hostname; kein Autorisierungs-Header |
POST /api/central-user-storage/{add,remove,sync} |
Wenn sich Konten, Berechtigungen oder der Produktschlüssel ändern; Folgeaufrufe werden in eine Warteschlange gestellt und per Cron ausgeführt | Hostname plus, für jedes Konto mit der Bearbeitungsberechtigung, seine E-Mail-Adresse und Rollennamen. Konten ohne gültige E-Mail-Adresse werden übersprungen |
GET /api/user-license/users |
Wenn die Seite User Licenses geöffnet wird | Nichts außer dem Schlüssel |
Seiteninhalte sind niemals Teil einer Lizenzanfrage.
Das Modul gibt zudem ein verstecktes <div> auf der
Startseite aus, das eine feste Markierungszeichenkette, die
Lizenzstufe, die Zahl der Bearbeitenden und die Speicherzahl enthält
(dxpr_builder_page_bottom() in
dxpr_builder.module). Es ist im Seitenquelltext lesbar.
Editor-Assets (cdn2.dxpr.com, cdn.dxpr.com)
Wenn Editor Assets auf Cloud steht (die Vorgabe),
lädt der Browser der Redaktion das Builder-JavaScript
und -CSS von https://cdn2.dxpr.com/<version>/,
mit Fallback auf https://cdn.dxpr.com/<version>/
nach einer fehlgeschlagenen /health-Prüfung. Der Produktschlüssel wird
an jede Asset-URL als jwt-Abfrageparameter angehängt
(dxpr_builder_library_info_build()).
Das CDN prüft diesen Schlüssel: Eine 401-Antwort lässt
js/editor_validation.js „Your product key
is not valid“ anzeigen.
Die Optionen Local (minified) und Local (unminified)
erscheinen nur auf dem Einstellungsformular, wenn eine
gebaute Kopie des Editors im
dxpr_builder/-Verzeichnis des Moduls liegt, und eine solche Kopie wird
automatisch genutzt, selbst wenn Cloud gewählt ist. Das Git-
Repository trackt diese gebauten Dateien nicht, sodass ein von
drupal.org heruntergeladenes Release den
Editor vom CDN lädt.
KI-Anfragen (kavya.dxpr.com)
Der Browser kontaktiert kavya.dxpr.com niemals. Der
Editor postet an Routen auf Ihrer eigenen Website
(/dxpr_builder/ajax/ai/chat,
/dxpr_builder/ajax/ai/image,
/dxpr_builder/ajax/ai/image/edit; alle erfordern
die Berechtigung edit with dxpr builder, ein CSRF-
Token und ein lizenziertes Konto). Die Website leitet
jede Anfrage über den DXPR-Anbieter des Drupal-AI-Moduls
(ai_provider_dxpr) an
https://kavya.dxpr.com/v1/chat/completions,
/v1/images/generations oder /v1/images/edits weiter,
authentifiziert mit dem im Key-Modul gespeicherten DXPR-API-Schlüssel. Die
host-Einstellung des Anbieters
(ai_provider_dxpr.settings) kann Anfragen an einen
anderen Host richten. Separat ruft die KI-Einstellungsseite
GET https://kavya.dxpr.com/v1/account/balance
mit dem Produktschlüssel auf, um Ihr Credit-Guthaben zu zeigen.
Was eine KI-Anfrage enthält
Nur KI-Funktionen senden Seiteninhalte von der Website weg,
und nur, wenn Sie sie auslösen
(dxpr_builder/build/dxpr-global/ai-service.js).
| Anfrage | Gesendeter Inhalt |
|---|---|
| Text- und Seitengenerierung | System-Prompt, Ihr Prompt, Chatverlauf |
| Mit ausgewähltem Element | Das äußere HTML des Elements: ganz, wenn 500 Zeichen oder weniger, sonst seine ersten und letzten 200 Zeichen |
| Operationen auf Seitenebene | Das bestehende Seiten-HTML, bis zu 50.000 Zeichen; die vollständige Seite, wenn die ganze Seite ersetzt wird |
| Optionale Felder | Modellname, Reihenfolge aktivierter Anbieter, ein vorhergesagtes HTML-Ergebnis, erlaubte Tags und Klassen, ein web_search-Flag, ein Antwortformat |
| Bildgenerierung | Prompt, Größe, Qualität, Hintergrund |
| Bildbearbeitung | Dasselbe plus das Quellbild, base64-codiert |
Zwei Hilfen holen Webseiten aus Ihrem Browser
(ai-service-url-fetch.js): Eine URL in einem
Prompt wird mit angehängtem .md angefragt und, wenn
das fehlschlägt, über https://r.jina.ai/<url>, einen
Drittanbieter-Lesedienst, der nicht von DXPR betrieben wird;
ein Prompt, der das Klonen einer Seite verlangt, sendet die URL
an https://html-extract.dxpr.com/?url=.... In
beiden Fällen wird nur die URL gesendet.
KI-Ausgaben werden auf dem Rückweg gefiltert. Erlaubte
Domains, blockierte Tags und erlaubte Tags werden unter
/admin/dxpr_studio/dxpr_builder/ai_settings
unter AI Output Filtering gesetzt.
Wo die DXAI-Kavya-Modelle laufen
DXPR Builder bietet drei Modelle
(src/Constants/AiModelConstants.php):
| Modell | API-Name | In Einstellungsformular gezeigte Beschreibung |
|---|---|---|
| DXAI Kavya M1 | kavya-m1 |
Beste Leistung (OpenAI, Google Gemini, Anthropic) |
| DXAI Kavya M1 EU | kavya-m1-eu |
Datenschutzorientiert (MistralAI) |
| DXAI Kavya M1 Fast | kavya-m1-fast |
Schnellste Antworten, geringere Qualität |
Es gibt in keinem der Module eine Regionseinstellung. Die Datenresidenz wird über das Modell und die aktivierten Upstream-Anbieter gewählt:
kavya-m1wechselt zwischen fünf Anbietern, aufgeführt mit ihrem Land im DXPR-AI-Anbieter-Einstellungsformular: Anthropic (Vereinigte Staaten), Google Gemini (Vereinigte Staaten), MistralAI (Frankreich), OpenAI (Vereinigte Staaten), XAI (Vereinigte Staaten). Im Modus Manual priority ziehen Sie Anbieter zwischen Enabled und Disabled und legen ihre Reihenfolge fest.kavya-m1-eunutzt nur MistralAI. Die README des DXPR-AI-Anbieters besagt, es „hält Daten innerhalb europäischer Grenzen (Server in den Niederlanden)“; seine Dokumentation besagt, dass der Kavya-Server in den Niederlanden läuft mit Backup in Deutschland, dass Anfragen über MistralAI-Server in Frankreich laufen und dass es niemals auf einen Nicht-EU-Anbieter zurückfällt. Diese Standorte sind von DXPR dokumentiert, nicht durch etwas im Drupal-Code erzwungen.
Mit installiertem ai_provider_dxpr wird das Modell unter
/admin/config/ai/providers/dxpr gewählt und seine
allowed_models-Einstellung steuert, welche Modelle die Redaktion
wählen darf. Ohne es werden Modell und Anbieterreihenfolge unter
/admin/dxpr_studio/dxpr_builder/ai_settings gesetzt.
Wie der Produktschlüssel gespeichert wird
Der Bereich License von
/admin/dxpr_studio/dxpr_builder/settings bietet
zwei Storage method-Optionen
(src/Form/DxprBuilderSettingsForm.php,
src/Service/DxprBuilderKeyService.php):
- Key module: Der Schlüssel wird aus der unter Key gewählten
Key-Entity gelesen.
dxpr_builder_update_9020()verschiebt einen indxpr_builder.settingsgefundenen Schlüssel in die Key-Entitydxpr_builder_jwt, deren Configuration-Anbieter ihn weiterhin exportiert. Nur der File- oder Environment-Anbieter hält den Schlüssel aus Konfigurationsexporten heraus. - Configuration storage: Der Schlüssel wird im Klartext als
dxpr_builder.settings.json_web_tokengespeichert und ist in Konfigurationsexporten enthalten.
Der Produktschlüssel ist ein JSON Web Token, das Lizenzaufrufe, den Credit-Guthaben-Aufruf und die CDN-Asset-URLs authentifiziert; behandeln Sie ihn als Berechtigungsnachweis.
Firewall-Konfiguration
| Von | Ausgehendes HTTPS erlauben an | Hinweise |
|---|---|---|
| Drupal-Server | dxpr.com |
Lizenz |
| Drupal-Server | kavya.dxpr.com |
Nur KI |
| Arbeitsplätze der Redaktion | cdn2.dxpr.com, cdn.dxpr.com |
Editor-Assets |
| Arbeitsplätze der Redaktion | html-extract.dxpr.com, r.jina.ai |
Nur KI; ein Blockieren deaktiviert nur URL-Recherche und Klonen |
| Arbeitsplätze der Redaktion | tuur.dxpr.com |
Analyse; ein Blockieren hat keine Auswirkung auf die Bearbeitung |
Analyse (dxpr_builder/build/dxpr-analytics/,
PostHog) identifiziert Ereignisse über Ihre E-Mail-Adresse
und den Hostnamen der Website. Schalten Sie sie ab mit
drush config:set dxpr_builder.settings record_analytics 0;
der Schlüssel hat kein Formularfeld. Zwei weitere Schlüssel
ohne Formularfeld werden aus
dxpr_builder.settings gelesen: cloud_url ersetzt die
CDN-Basis-URL (VERSION wird durch die Modulversion ersetzt) und
license_endpoint ersetzt den zentralen Benutzerspeicher-Endpunkt.
Setzen Sie sie mit einer Konfigurationsüberschreibung in settings.php.
Proxy-Konfiguration
Lizenz- und KI-Aufrufe nutzen Drupals HTTP-Client, daher wird
ein Proxy in settings.php konfiguriert:
$settings['http_client_config']['proxy'] = [
'http' => 'http://proxy.example.com:8080',
'https' => 'http://proxy.example.com:8080',
'no' => ['localhost', '127.0.0.1'],
];
Die Browser der Redaktion laden die CDN-Assets und rufen die Analyse- und Lesedienste direkt auf, sodass diese Anfragen den Proxy-Einstellungen des Arbeitsplatzes folgen.
Air-Gap- und On-Premise-Bereitstellungen
DXPR Builder läuft auf Ihrem eigenen Server; keine Inhalte laufen über eine gehostete Komponente. Wenn weder der Server noch die Redaktion DXPR erreicht:
| Funktion | Ohne jeglichen DXPR-Zugriff |
|---|---|
| Ausliefern veröffentlichter Seiten | Funktioniert; nichts wird von DXPR geladen |
| Inhaltsspeicherung | Funktioniert; Seiten sind Feldwerte in Ihrer Datenbank |
| Editor laden | Schlägt fehl ohne eine lokale Editor-Build in dxpr_builder/ |
| Lizenzvalidierung | Schlägt fehl. Das Modul protokolliert den Fehler, zeigt Administratoren „We are having trouble connecting to the DXPR servers“ und versucht es alle 30 Minuten erneut. Die Bearbeitung ist nicht blockiert, solange ein Produktschlüssel konfiguriert ist |
| User-Licenses-Seite | Leer; sie braucht dxpr.com |
| KI-Funktionen | Nicht verfügbar; jede Anfrage läuft über kavya.dxpr.com |
| Analyse, URL-Recherche, Klonen per URL | Wird stillschweigend übersprungen |
Ohne Produktschlüssel überhaupt wendet das Modul im Code die Grenzen der Gratis-Stufe an: ein Konto und 100 Inhaltselemente.
Eine vollständig lokale Bereitstellung funktioniert daher für
Ausliefern und Speichern von Inhalten; die Bearbeitung braucht CDN-
Zugriff oder eine lokale Editor-Build und die Lizenzvalidierung
braucht dxpr.com. Kontaktieren Sie DXPR, wenn Sie
eine intern zu hostende Editor-Build brauchen.
Wie geht es weiter?
- Installation: Produktschlüssel und Speichermethode konfigurieren
- KI-Funktionen: KI aktivieren und ein Modell wählen
- Sicherheit: Berechtigungen und Ausgabefilterung
- Lizenz und Produktschlüssel: Fehlerbehebung bei Lizenzfehlern