Aller au contenu principal
  mardi 14 janvier 2020
  6 réponses
  3,1K visites
  S'abonner
Salut,

est-ce compatible avec les espaces digitalocean et autres likes S3 ?

Et est-il compatible avec Flatsome UX Builder

Merci !
UN
il y a 5 ans
Salut,

Merci de nous avoir contactés ici à propos de cette extension.

est-il compatible avec les espaces digitalocean et autres likes S3 ?

Nous n'avons pas encore pris en charge Digital Ocean, vous pouvez actuellement utiliser Amazon S3 : Pour plus de détails :

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

Et est-il compatible avec Flatsome UX Builder

Oui, il est compatible avec presque le constructeur de pages.

J'espère que cela aide!
À votre santé,
W
Bonjour,

Merci pour votre réponse.

comme DO est compatible S3, peut-être qu'il fonctionne avec les informations d'identification DO et l'adresse du serveur, non ?:) tu l'as essayé ?
UN
il y a 5 ans
Salut,

Merci de me revenir avec plus d'informations.

comme DO est compatible S3, peut-être qu'il fonctionne avec les informations d'identification DO et l'adresse du serveur, non ?:) tu l'as essayé ?


Nous n'avons pas testé avec DO et je pense que ce n'est pas possible.

À votre santé,
R
il y a 5 ans
Vous pouvez l'utiliser avec DigitalOcean, il existe un hack simple pour le faire fonctionner :

océan numérique.png

Puisque je viens de le faire pour un client, je vais détailler le hack, puis expliquer comment vous le feriez fonctionner séparément.

--

Même si cela ne fonctionne pas encore à 100 %, nous avons réalisé des progrès significatifs :

1. Pirater

DigitalOcean Spaces est construit autour de l'API de S3 et utilise Bibliothèque PHP "AWS SDK" d'Amazon (qui est bundled avec le plugin).

En découvrant cela, je me suis dit que depuis DigitalOcean promeut l'utilisation du SDK avec son propre produit, pirater une partie du code pour le faire fonctionner ne serait pas trop difficile.

Pour ce faire, j'ai découvert que le plugin fonctionne avec deux fichiers de classe (pour chaque service) -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(pour S3).

Le fichier « admin » est l'endroit où se trouve la fonctionnalité frontale ; l'autre sert à l'interface avec le SDK S3. En bref, le fichier "admin" est chargé via Ajax ou le front-end WP, ​​et sa fonctionnalité appelle le fichier S3 (en utilisant les informations d'identification stockées), lui permettant d'effectuer des actions (comme la synchronisation) avec votre compartiment S3. Cela fonctionne très bien, mais il y a un problème majeur pour le faire fonctionner avec DigitalOcean :

point de terminaison.png

DigitalOcean est PAS agnostique de la région. Cela signifie que chaque requête est limitée à une région spécifique, contrairement à celle de S3. Ce n'est pas un problème en soi (notre hack fonctionnera toujours), mais si vous souhaitez obtenir des fonctionnalités "complètes" (différentes régions/compartiments), vous devez vous assurer que vous devrez invoquer la classe "non admin" avec paramètres d'identification personnalisés à chaque fois.

-

Le hack comprend les éléments suivants :

a) Modifiez le fichier "admin" pour utiliser le "point de terminaison" pour votre région DigitalOcean Spaces
b) Assurez-vous que la région « us-east-1 » est définie à tout moment.
c) Modifiez "l'URL de la pièce jointe" pour chacune des pièces jointes synchronisées dans votre bibliothèque multimédia

-

La première étape consiste à modifier les options « par défaut » dans le fichier « admin » :

admin.png

À partir de la ligne 34 de
./class/wpmfAddonAws3Admin.php
, vous verrez qu'un ensemble de paramètres par défaut est créé pour l'autre classe. Vous devez procéder comme suit :


  • Remplacez la « région » par « us-east-1 »
  • Ajoutez la ligne
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



Dans le cas ci-dessus, notre « région » est AMS3. Cela peut être différent selon l'emplacement où votre espace est conservé.

Changer ce code ne fait pas grand-chose, mais garantit que les mêmes valeurs par défaut sont utilisées à chaque fois (et que le "point final" est défini, ce qui est la base de tout le hack).

-

Après cela, nous nous tournons vers l'autre fichier de classe
./class/wpmfAws3.php
:

classe.png

Ceci, comme mentionné, est invoqué chaque fois que la classe « admin » souhaite communiquer avec S3/DO.

Ce que nous allons faire ici, c'est « usurper » le point de terminaison, ce qui signifie que nous le codons en dur. Cela modifiera l'URL à laquelle le SDK AWS envoie les requêtes, ce qui signifie que nos informations d'identification DigitalOcean doivent être acceptées. Pour ce faire, ajoutez simplement les deux lignes suivantes respectivement aux lignes 73 et 74 :

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

Ce qui précède forcera la modification du « point de terminaison » à chaque fois que vous utiliserez l’une des fonctionnalités « admin ».

Cela fonctionne en prenant les détails ci-dessus et en les fusionnant avec vos informations d'identification S3 stockées (dans votre cas, la clé API DigitalOcean), permettant au script de communiquer avec DO. J'ai décrit ci-dessus que cela est limité car cela signifie que vous ne pouvez communiquer qu'avec une seule région DO (quelque chose que j'aborderai en détail dans une minute).

-

Après cela, la dernière chose que nous devons faire est de changer « URL » pour chacune des pièces jointes synchronisées avec DO.

Cela se fait à l'intérieur de la classe "admin", dans les fonctions "wpGetAttachmentUrl" (#2048) et "addMetaInfo" (#1121) :

1121.png

2048.png

Je ne sais pas laquelle de ces fonctions fournit réellement la fonctionnalité (je crois que c'est #2048), mais je les ai quand même modifiées toutes les deux.

En fin de compte, tout ce que vous faites est de changer le lien AWS en un lien DigitalOcean. Celui qui a bien fonctionné pour ce hack était le suivant :

#2057 renvoie 'https://' . $infos['Bucket'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['Clé']);

Cela modifie le "lien" du média WP vers DigitalOcean Spaces, qui devrait l'afficher dans le backend et le frontend de votre site.

--

Je détaillerai le correctif plus large dans un autre article.
R
il y a 5 ans
2. "Complet"

Comme mentionné ci-dessus, le correctif « complet » dépend de la manière dont DigitalOcean s'interface avec le SDK AWS.

En termes simples, S3 vous permet de « vous connecter » puis de choisir un compartiment dans n'importe quelle région ; DigitalOcean vous permet uniquement de vous connecter et d'interagir avec un célibataire région à chaque fois.

Si vous souhaitez obtenir toutes les fonctionnalités du plugin (avec DigitalOcean), de nombreuses personnalisations doivent être effectuées dans la classe "admin". Vous devez essentiellement vous assurer que CHAQUE requête est étendue au bon point de terminaison, ce qui prend du temps et est assez coûteux (en termes de connexions API).

-

Nous avons "en quelque sorte" réussi à faire en sorte que cela fonctionne, quoique de manière vague. J'écris ceci ici pour partager les progrès, et peut-être que quelqu'un d'autre préférerait s'en charger ou quelque chose du genre.

--

Vous devez faire 4 choses principales pour le faire fonctionner séparément :

1. Créez un flux d'interface utilisateur "DigitalOcean" distinct
2. Supprimez toutes les références à S3 (en les remplaçant par DigitalOcean si nécessaire)
3. Modifier le flux de certaines fonctionnalités pour permettre la prise en charge inter-régions
4. Assurez-vous que DO n'interfère pas avec S3

-

1. Pour ajouter un onglet « DigitalOcean » distinct, vous devez accéder au plugin d'origine et localiser le fichier « cloud.php » (./class/pages/settings/cloud.php) :

<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>


Je viens de l'ajouter après l'onglet S3.

Pour que cela fonctionne, vous devez ensuite remplir la variable $html_tabdo, ce qui se fait en modifiant deux fichiers.

Le premier est le fichier ./class/pages/settings/wp-folder-options.php (plugin principal/original) :

S3.png

Le second est ./class/class-wp-folder-option.php :

html_do.png

Cela remplira l'onglet avec les différents paramètres DigitalOcean.

-

2. Pour remplacer S3 par DO, vous devez vous assurer que vous disposez d'un ensemble de fichiers et de paramètres de file d'attente complètement différents pour garantir que les deux systèmes n'entrent pas en conflit.

Cela nécessite de faire un certain nombre de choses, principalement de créer un nouvel ensemble de classes « admin » et « connection ». Je n'entrerai pas dans les détails de la façon de procéder, mais vous souhaitez essentiellement créer un nouvel ensemble de classes qui créent leurs propres paramètres de configuration et les utiliser pour vous connecter aux points de terminaison pour DO :

api_code.png

-

3. Prise en charge interrégionale.

Comme mentionné dans l'article ci-dessus, le système de DO fonctionne différemment de S3, dans le sens où chaque requête est limitée à une région spécifique (le système de S3 est indépendant de la région).

Cela signifie que si vous souhaitez travailler avec des compartiments/espaces d'autres régions, vous devez faire preuve de magie pour que tout fonctionne ensemble.

Je manque de temps, je ne couvrirai donc pas tout ici, mais je dirai que si vous souhaitez que le système fonctionne, vous devez éditer le fichier "./class/wpmfDo.php" dans le backend - en vous assurant que vous êtes en mesure de transmettre le "point de terminaison" pour lequel vous souhaitez appeler l'instance du SDK pour...

point de terminaison.png

Cela nous donne la possibilité de définir différents « points finaux » (« régions »;) lorsque vous avez besoin de lister différents espaces, etc.

Un bon exemple de ceci en action est lorsque vous souhaitez lister les buckets disponibles :

région.png

Pour réaliser ce qui précède, vous devez parcourir toutes les régions disponibles dans DO, puis créer un nouveau tableau de compartiments disponibles. Comme vous l'aurez compris, c'était une solution délicate à créer :

buckets_list.png

Cela crée la variable $list_buckets à partir des différentes régions (pas seulement celle avec laquelle vous vous connectiez).

-

4. Je ne l'ai pas encore fait

Fondamentalement, vous devez pouvoir faire fonctionner DigitalOcean avec S3, même lorsque S3 est présent.

Cela nécessitera de faire fonctionner la fonctionnalité « synchronisation » et un certain nombre d'autres choses, que je n'ai pas encore terminées.
T
Bonjour,

Cette fonctionnalité a été implémentée récemment dans le plugin. Voir les détails ci-dessous.:)

Acclamations,
  • Page :
  • 1
Il n'y a pas encore de réponses pour ce post.