Firewall und Datenresidenz.

DXPR Builder lernenWebsite verwaltenCompliance erfüllen

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-m1 wechselt 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-eu nutzt 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 in dxpr_builder.settings gefundenen Schlüssel in die Key-Entity dxpr_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_token gespeichert 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?