Soziale Netzwerke
  Dienstag, 14. Januar 2020
  6 Antworten
  3.1K Besuche
  Abonnieren
Hallo,

ist es mit Digitalocean -Räumen und anderen S3 -Likes kompatibel?

Und ist es mit Flatsome UX Builder kompatibel,

danke!
A
vor 5 Jahren
Hallo,

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

Ist es mit Digitalocean -Räumen und anderen S3 -Likes kompatibel?

Wir haben den digitalen Ozean noch nicht unterstützt. Sie können Amazon S3 derzeit verwenden: Weitere Informationen für 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 kompatibel mit fast Page Builder.

Ich hoffe es hilft!
Prost,
W
vor 5 Jahren
Hallo,

danke für deine Antwort.

Wie ist S3 -kompatibel. Vielleicht funktioniert es mit Anmeldeinformationen und Serveradresse, nein?:) Hast du es versucht?
A
vor 5 Jahren
Hallo,

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

Wie ist S3 -kompatibel. Vielleicht funktioniert es mit Anmeldeinformationen und Serveradresse, nein?:) Hast du es versucht?


Wir haben nicht mit Do getestet und ich denke, es ist nicht möglich.

Prost,
R.
vor 5 Jahren
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 getan habe, werde ich den Hack beschreiben und dann erklären, wie Sie ihn separat zum Laufen bringen würden.

--

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

1. Hacken

Digitalocean Spaces basiert auf der API von S3 und verwendet Amazon "AWS SDK" PHP -Bibliothek (Das ist bundleD mit dem Plugin).

Als ich dies entdeckte, dachte ich, dass seitdem Digitalocean fördert die Verwendung des SDK mit seinem eigenen ProduktEs wäre nicht allzu schwierig, einen Teil des Codes zu hacken, damit es funktioniert.

Dazu stellte ich fest, dass die Art und Weise, wie das Plugin funktioniert
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(für S3).

In der "Admin" -Datei liegt die Front-End-Funktionalität. Das andere ist für die Schnittstelle mit dem 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 Synchronisierung) mit Ihrem S3-Bucket durchführen kann. Dies funktioniert sehr gut, aber es gibt ein großes Problem, wenn Sie es mit Digitalocean arbeiten lassen:

Endpoint.png

Digitalocean ist NICHT Region Agnostisch. Dies bedeutet, dass jede Anfrage in eine bestimmte Region skopiert wird, während S3 nicht der Fall ist. Dies ist an sich kein Problem (unser Hack wird weiterhin funktionieren). Wenn Sie jedoch "vollständige" Funktionen (verschiedene Regionen/Eimer) erreichen möchten, müssen Sie sicherstellen, dass Sie die "Nicht -Administrator" -Klasse jedes Mal mit benutzerdefinierten Anmeldeinstellungen aufrufen müssen.

-

Der Hack besteht aus folgenden:

a) Ändern Sie die "Admin" -Datei, um den "Endpunkt" für Ihre digitalocean Spaces -Region zu verwenden
b) Stellen Sie sicher, dass die Region "US-East-1" jederzeit festgelegt ist
c) Ändern Sie die "Anhangs -URL" für jedes der synchronisierten Anhänge in Ihrer Medienbibliothek

-

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

admin.png

Beginnend bei Zeile 34 von
./class/wpmfAddonAws3Admin.php
Sie werden feststellen, dass für die andere Klasse eine Reihe von Standardeinstellungen 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"



In dem obigen Fall ist unsere "Region" AMS3. Dies kann je nach Ort, an dem Ihr Raum aufbewahrt wird, unterschiedlich sein.

Das Ändern dieses Codes tut nicht viel, stellt jedoch sicher, dass jedes Mal die gleichen Standardeinstellungen verwendet werden (und dass der "Endpunkt" festgelegt ist, was die Grundlage des gesamten Hacks ist).

-

Danach wenden wir uns an die andere Klassendatei zu
./class/wpmfAws3.php
:

class.png

Wie bereits erwähnt, wird jedes Mal, wenn die "Admin" -Klasse mit S3/DO kommunizieren.

Wir werden hier den Endpunkt "gefälscht", was bedeutet, dass wir ihn fest codieren. Dadurch wird die URL geändert. Der AWS SDK sendet Anfragen an, was bedeutet, dass unsere digitalen 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 obige wird zwingen, dass der "Endpunkt" jedes Mal geändert wird, wenn Sie eine der "admin" -Funktionalität verwenden.

Es funktioniert, indem es die oben genannten Details nimmt und sie mit Ihren gespeicherten S3 -Anmeldeinformationen (in Ihrem Fall, Digitalocean API -Schlüssel) verschmelzen, damit das Skript mit DO kommunizieren kann. Ich habe oben beschrieben, dass dies begrenzt ist, da es bedeutet, dass Sie nur mit einer einzigen DO -Region kommunizieren können (etwas, das ich in einer Minute vollständig ansprechen werde).

-

Danach müssen wir die "URL" für jede der synchronisierten Anhänge ändern.

Dies geschieht in der "Admin" -Klasse 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 liefert (ich glaube, es ist #2048), aber ich habe sie trotzdem geändert.

Letztendlich ändern Sie nur den AWS -Link zu einem digitaloceanischen. Derjenige, der für diesen Hack gut funktioniert hat, war Folgendes:

#2057 return 'https: //'. $ Infos ['Bucket']. '.ams3.digitaloceanSpaces.com/'. str_replace ('', '%20', $ infos ['key']);

Dies ändert den "Link", den die WP -Medien auf digitale Räume haben, die ihn im Backend und Frontend Ihrer Website anzeigen sollten.

--

Ich werde die breitere Lösung in einem anderen Beitrag beschreiben.
R.
vor 5 Jahren
2. "Voll"

Wie oben erwähnt, hängt die "vollständige" Fix davon ab, wie digitalocean mit dem AWS SDK die Schnittstelle zwischen den Schnittstellen ist.

In einfachen Worten können Sie mit S3 eine Verbindung herstellen und dann einen Eimer in jeder Region auswählen. Digitalocean ermöglicht es Ihnen nur, eine Verbindung herzustellen und mit einem zu interagieren einzel Region jedes Mal.

Wenn Sie die volle Funktionalität des Plugins (mit digitalocean) erreichen möchten, gibt es eine große Anpassung, die in der "Administrator" -Klasse stattfinden muss. Sie müssen im Grunde sicherstellen, dass jede Anfrage bis zum richtigen Endpunkt skopiert wird, was sowohl zeitaufwändig als auch ziemlich teuer ist (in Bezug auf API -Verbindungen).

-

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

--

Sie müssen 4 wichtige Dinge tun, um es separat zum Laufen zu bringen:

1. Erstellen Sie einen separaten "digitalocean" -Ver UI -Fluss
2. Entfernen Sie alle Verweise auf S3 (ersetzen Sie bei Bedarf durch Digitalocean).
3. Ändern Sie den Fluss bestimmter Merkmale, um die Unterstützung durch die Region zu ermöglichen
4.. Stellen Sie sicher, dass S3 nicht beeinträchtigt wird

-

1. Um eine separate Registerkarte "digitalocean" hinzuzufügen, müssen Sie zum Original -Plugin gehen und die Datei "Cloud.php" (./class/pages/setings/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, benötigen Sie die variable $ html_tabdo, die durch Ändern von zwei Dateien durchgeführt wird.

Das erste ist ./class/pages/setings/wp-folder-options.php-Datei (Haupt-/Original-Plugin):

S3.png

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

html_do.png

Dadurch wird die Registerkarte mit den verschiedenen digitaloceanischen Einstellungen ausgefüllt.

-

2. Um S3 durch DO zu ersetzen, müssen Sie sicherstellen, dass Sie einen völlig anderen Satz von Dateien und Warteschlangeneinstellungen haben, um sicherzustellen, dass die beiden Systeme nicht konflikt.

Dies erfordert eine Reihe von Dingen und erstellt hauptsächlich einen neuen Satz von "Admin" und "Verbindungsklassen". Ich werde nicht in die Tiefen eingehen, wie dies zu tun ist, aber Sie möchten im Grunde genommen einen neuen Satz 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. Unterstützung der Cross -Region.

Wie in der obigen Stelle erwähnt, funktioniert das System von DO anders als S3, da jede Anfrage in eine bestimmte Region geschaltet wird (S3 ist Region Agnostic).

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

Ich habe keine Zeit, also werde ich das Ganze hier nicht behandeln, aber ich werde sagen, dass Sie die Datei "./Class/WPMFDO.php" im Backend bearbeiten müssen, um sicherzustellen, dass Sie die "Endpunkt" übergeben können, um die Instanz der SDK zu übergeben, für ...

Endpoint.png

Dies gibt uns die Fähigkeit, verschiedene "Endpunkte" zu definieren ("Regionen";) Denn wenn Sie verschiedene Räume usw. auflisten müssen, usw.

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

Region.png

Um dies oben zu erreichen, müssen Sie alle verfügbaren Regionen durchlaufen und dann eine neue Reihe verfügbarer Eimer erstellen. Wie Sie zu schätzen wissen, war dies eine schwierige Lösung zu erstellen:

Buckets_List.png

Dadurch wird die Variable $ list_buckets aus den verschiedenen Regionen erstellt (nicht nur die, mit der Sie sich verbanden).

-

4. habe das noch nicht getan

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

Dies erfordert, dass die Funktionalität "Synchronisation" und eine Reihe anderer Dinge funktioniert, die ich noch nicht fertiggestellt habe.
T
Hallo,

diese Funktion wurde kürzlich im Plugin implementiert. Siehe die Details unten.:)

Prost,
  • Seite :
  • 1
Für diesen Beitrag wurden noch keine Antworten abgegeben.