Dienstag, 14. Januar 2020
  5 Antworten
  2.2K Besuche
  Abonnieren
Hallo,

ist es kompatibel mit Digitalocean Spaces und anderen S3 Likes?

Und ist es kompatibel mit flatsome UX Builder

Danke!
EIN
vor 2 Jahren
Hallo,

Vielen Dank, dass Sie uns hier wegen dieser Erweiterung kontaktiert haben.

Ist es kompatibel mit Digitalocean Spaces und anderen S3 Likes?

Wir haben Digital Ocean noch nicht unterstützt. Sie können Amazon S3 derzeit verwenden: Weitere Informationen:

https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library

Und ist es kompatibel mit flatsome UX Builder

Ja, es ist mit fast dem Seitenersteller kompatibel.

Ich hoffe es hilft!
Prost,
W.
vor 2 Jahren
Hallo,

danke für deine Antwort.

da DO S3 kompatibel ist, funktioniert es vielleicht mit DO-Anmeldeinformationen und Serveradresse, nein?:) hast du es probiert?
EIN
vor 2 Jahren
Hallo,

Vielen Dank, dass Sie sich mit weiteren Informationen bei mir gemeldet haben.

Da DO S3-kompatibel ist, funktioniert es möglicherweise mit DO-Anmeldeinformationen und Serveradresse, nein?:) hast du es versucht


Wir haben nicht mit DO getestet und ich denke, das ist nicht möglich.

Prost,
R.
vor 1 Jahr
Sie können es mit DigitalOcean verwenden. Es gibt einen einfachen Hack, damit es funktioniert:

digitalocean.png

Da ich es gerade für einen Kunden gemacht habe, werde ich den Hack detailliert beschreiben und dann erklären, wie Sie ihn separat zum Laufen bringen würden.

--

Obwohl wir es noch nicht zu 100% zum Laufen gebracht haben, haben wir bedeutende Fortschritte erzielt:

1. Hacken

DigitalOcean Spaces basiert auf der S3-API und wird verwendet Amazon PHP-Bibliothek "AWS SDK" (welches bundle d mit dem Plugin ist).

Als ich das entdeckte, dachte ich mir das seitdem aus DigitalOcean fördert die Verwendung des SDK mit einem eigenen ProduktEs wäre nicht allzu schwierig, einen Teil des Codes zu hacken, damit er funktioniert.

Zu diesem Zweck stellte ich fest, dass das Plugin mit zwei Klassendateien (für jeden Dienst) funktioniert.
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(für S3).

In der "admin" -Datei liegt die Front-End-Funktionalität. Die andere dient zur Anbindung an das S3 SDK. Kurz gesagt, die "admin" -Datei wird über Ajax oder das WP-Front-End geladen, und ihre Funktionalität ruft die S3-Datei (unter Verwendung gespeicherter Anmeldeinformationen) auf, sodass sie Aktionen (wie die Synchronisierung) mit Ihrem S3-Bucket ausführen kann. Dies funktioniert sehr gut, aber es gibt ein großes Problem, wenn es mit DigitalOcean funktioniert:

endpoint.png

DigitalOcean ist NICHT Region agnostisch. Dies bedeutet, dass jede Anforderung auf eine bestimmte Region beschränkt ist, S3 jedoch nicht. Dies ist an sich kein Problem (unser Hack funktioniert immer noch), aber wenn Sie "volle" Funktionalität (verschiedene Regionen / Buckets) erreichen möchten, müssen Sie sicherstellen, dass Sie die Klasse "Nicht-Administrator" mit aufrufen müssen Benutzerdefinierte Einstellungen für Anmeldeinformationen jedes Mal.

-

Der Hack besteht aus Folgendem:

a) Ändern Sie die Datei "admin", um den "Endpunkt" für Ihre DigitalOcean Spaces-Region zu verwenden
b) Stellen Sie sicher, dass die Region "us-east-1" jederzeit eingestellt ist
c) Ändern Sie die "Anhang-URL" für jeden der synchronisierten Anhänge in Ihrer Medienbibliothek

-

Der erste Schritt besteht darin, die "Standard" -Optionen in der "Admin" -Datei zu ändern:

admin.png

Ab Zeile 34 von
./class/wpmfAddonAws3Admin.php
werden Sie sehen, dass eine Reihe von Standardeinstellungen für die andere Klasse erstellt werden. Sie müssen Folgendes tun:


  • Ändern Sie die "Region" in "us-east-1".
  • Fügen Sie die Zeile hinzu
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



Im obigen Fall ist unsere "Region" AMS3. Dies kann je nach dem Ort, an dem sich Ihr Raum befindet, unterschiedlich sein.

Das Ändern dieses Codes macht nicht wirklich viel, stellt jedoch sicher, dass jedes Mal dieselben Standardeinstellungen verwendet werden (und dass der "Endpunkt" festgelegt wird, der die Grundlage für den gesamten Hack darstellt).

-

Danach wenden wir uns der anderen Klassendatei zu
./class/wpmfAws3.php
:

class.png

Dies wird, wie erwähnt, jedes Mal aufgerufen, wenn die Klasse "admin" mit S3 / DO kommunizieren möchte.

Was wir hier tun werden, ist, den Endpunkt zu "fälschen", was bedeutet, dass wir ihn hart codieren. Dadurch wird die URL geändert, an die das AWS SDK Anforderungen sendet. Dies bedeutet, dass unsere DigitalOcean-Anmeldeinformationen akzeptiert werden sollten. Fügen Sie dazu einfach die folgenden zwei Zeilen in Zeile 73 bzw. 74 hinzu:

# 73 $ args ['region'] = 'us-east-1';
# 74 $ args ['endpoint'] = 'https://ams3.digitaloceanspaces.com';

Das oben Gesagte erzwingt, dass der "Endpunkt" jedes Mal geändert wird, wenn Sie eine der "Admin" -Funktionen verwenden.

Dabei werden die oben genannten Details verwendet und mit Ihren gespeicherten S3-Anmeldeinformationen (in Ihrem Fall dem DigitalOcean-API-Schlüssel) zusammengeführt, sodass das Skript mit DO kommunizieren kann. Ich habe oben beschrieben, dass dies begrenzt ist, da dies bedeutet, dass Sie nur mit einer einzelnen DO-Region kommunizieren können (etwas, das ich in einer Minute vollständig ansprechen werde).

-

Danach müssen wir als letztes die "URL" für jeden der mit DO synchronisierten Anhänge ändern.

Dies erfolgt innerhalb der Klasse "admin" in den Funktionen "wpGetAttachmentUrl" (# 2048) und "addMetaInfo" (# 1121):

1121.png

2048.png

Ich bin mir nicht sicher, welche dieser Funktionen tatsächlich die Funktionalität bietet (ich glaube, es ist # 2048), aber ich habe beide trotzdem geändert.

Letztendlich ändern Sie lediglich den AWS-Link in einen DigitalOcean-Link. Das, was für diesen Hack gut funktioniert hat, war das Folgende:

# 2057 gibt 'https: //' zurück. $ infos ['Bucket']. '.ams3.digitaloceanspaces.com /'. str_replace ('', '% 20', $ infos ['Key']);

Dies ändert den "Link", den das WP-Medium zu DigitalOcean Spaces hat, der im Backend und Frontend Ihrer Site angezeigt werden soll.

--

Ich werde den weiteren Fix in einem anderen Beitrag detailliert beschreiben.
R.
vor 1 Jahr
2. "Voll"

Wie oben erwähnt, hängt die "vollständige" Korrektur davon ab, wie DigitalOcean mit dem AWS SDK verbunden ist.

In einfachen Worten, S3 ermöglicht es Ihnen, eine Verbindung herzustellen und dann einen Eimer in einer beliebigen Region auszuwählen. Mit DigitalOcean können Sie nur eine Verbindung herstellen und mit einem interagieren Single Region jedes Mal.

Wenn Sie die volle Funktionalität des Plugins (mit DigitalOcean) erreichen möchten, müssen in der Klasse "admin" viele Anpassungen vorgenommen werden. Grundsätzlich müssen Sie sicherstellen, dass JEDE Anforderung auf den richtigen Endpunkt ausgerichtet ist, was sowohl zeitaufwändig als auch recht teuer ist (in Bezug auf API-Verbindungen).

-

Wir haben das "irgendwie" zum Laufen gebracht, wenn auch locker. Ich schreibe dies hier, um den Fortschritt zu teilen, und vielleicht würde jemand anderes es vorziehen, ihn aufzugreifen oder so.

--

Sie müssen 4 wichtige Dinge tun, damit es separat funktioniert:

1. Erstellen Sie einen separaten "DigitalOcean" -UI-Flow
2. Entfernen Sie alle Verweise auf S3 (ersetzen Sie sie bei Bedarf durch DigitalOcean).
3. Ändern Sie den Fluss bestimmter Features, um eine bereichsübergreifende Unterstützung zu ermöglichen
4. Stellen Sie sicher, dass DO S3 nicht stört

-

1. Um eine separate Registerkarte "DigitalOcean" hinzuzufügen, müssen Sie zum ursprünglichen Plugin gehen und die Datei "cloud.php" (./class/pages/settings/cloud.php) suchen:

<div id="do" class="tab-content">
<div class="wpmf_width_100 p-tb-20 wpmf_left top_bar">
<h1 class="wpmf_left"><?php esc_html_e('DigitalOcean', 'wpmf') ?></h1>
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/submit_button.php';
?>
</div>
<div class="content-box content-wpmf-general">
<?php
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- View request, no action
if (isset($_POST['btn_wpmf_save'])) {
?>
<div class="wpmf_width_100 top_bar saved_infos" style="padding: 20px 0">
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/saved_info.php';
?>
</div>
<?php
}
?>

<div>
<div class="wpmf_row_full">
<?php
if (is_plugin_active('wp-media-folder-addon/wp-media-folder-addon.php')) {
// phpcs:ignore WordPress.Security.EscapeOutput -- Content already escaped in the method
echo $html_tabdo;
}
?>
</div>
</div>
</div>
</div>


Ich habe es gerade nach der Registerkarte S3 hinzugefügt.

Damit es funktioniert, muss die Variable $ html_tabdo ausgefüllt werden, indem zwei Dateien geändert werden.

Die erste ist die Datei ./class/pages/settings/wp-folder-options.php (Haupt- / Original-Plugin):

S3.png

Die zweite ist ./class/class-wp-folder-option.php:

html_do.png

Dadurch wird die Registerkarte mit den verschiedenen DigitalOcean-Einstellungen gefüllt.

-

2. Um S3 durch DO zu ersetzen, müssen Sie sicherstellen, dass Sie über völlig unterschiedliche Einstellungen für Dateien und Warteschlangen verfügen, um sicherzustellen, dass die beiden Systeme nicht in Konflikt geraten.

Dies erfordert eine Reihe von Aufgaben, hauptsächlich das Erstellen eines neuen Satzes von "admin" - und "connection" -Klassen. Ich werde nicht näher darauf eingehen, aber Sie möchten im Grunde genommen eine neue Gruppe von Klassen erstellen, die ihre eigenen Konfigurationseinstellungen erstellen, und diese verwenden, um eine Verbindung zu den Endpunkten für DO herzustellen:

api_code.png

-

3. Regionübergreifende Unterstützung.

Wie im obigen Beitrag erwähnt, funktioniert das DO-System anders als S3, da jede Anforderung auf eine bestimmte Region beschränkt ist (S3 ist region-agnostisch).

Dies bedeutet, dass Sie, wenn Sie mit Eimern / Räumen aus anderen Regionen arbeiten möchten, etwas Magie anwenden müssen, damit alles zusammenarbeitet.

Ich habe zu wenig Zeit, werde hier also nicht das Ganze behandeln, sondern sagen, dass Sie die Datei "./class/wpmfDo.php" im Backend bearbeiten müssen, wenn Sie das System zum Laufen bringen möchten. Stellen Sie sicher, dass Sie den "Endpunkt" übergeben können, für den Sie die Instanz des SDK aufrufen möchten, um ...

endpoint.png

Dies gibt uns die Möglichkeit, verschiedene "Endpunkte" ("Regionen") zu definieren.;) für den Fall, dass Sie verschiedene Leerzeichen usw. auflisten müssen.

Ein gutes Beispiel hierfür ist, wenn Sie die verfügbaren Eimer auflisten möchten:

region.png

Um dies zu erreichen, müssen Sie alle in DO verfügbaren Regionen durchlaufen und dann ein neues Array verfügbarer Buckets erstellen. Wie Sie zu schätzen wissen, war dies eine schwierige Lösung:

buckets_list.png

Dadurch wird die Variable $ list_buckets aus den verschiedenen Regionen erstellt (nicht nur aus der Region, mit der Sie eine Verbindung hergestellt haben).

-

4. Habe das noch nicht gemacht

Grundsätzlich müssen Sie in der Lage sein, DigitalOcean mit S3 zum Laufen zu bringen, auch wenn S3 vorhanden ist.

Dies setzt voraus, dass die "Synchronisierungs" -Funktionalität funktioniert und eine Reihe anderer Dinge, die ich noch nicht abgeschlossen habe.
  • Seite :
  • 1
Es wurden noch keine Antworten für diesen Beitrag abgegeben.
Sei einer der Ersten, der auf diesen Beitrag antwortet!