Ugrás a fő tartalomra
  2020. január 14., kedd
  6 Válaszok
  3,1 000 látogatás
  Iratkozz fel
Szia,

kompatibilis a DigitalOcean Spaces-szel és más S3-szerű alkalmazásokkal?

És kompatibilis a Flatsome UX Builderrel?

Köszönöm!
A
5 évvel ezelőtt
Szia,

Köszönjük, hogy megkeresett minket ezzel a bővítménnyel kapcsolatban.

Kompatibilis a DigitalOcean Spaces-szel és más S3-szerű eszközökkel?

A Digital Oceant még nem támogatjuk, jelenleg az Amazon S3-at használhatja: További részletekért:

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

És kompatibilis a flatsome UX Builderrel?

Igen, kompatibilis a majdnem oldalépítővel.

Remélem ez segít!
Egészségére,
W
5 évvel ezelőtt
Szia,

köszönöm a válaszod.

Mivel a DO S3 kompatibilis, talán a DO hitelesítő adataival és szerver címével működik, nem?:) Próbáltad már?
A
5 évvel ezelőtt
Szia,

Köszönöm, hogy további információval fordult hozzám.

Mivel a DO S3 kompatibilis, talán a DO hitelesítő adataival és szerver címével működik, nem?:) Próbáltad már?


Nem teszteltük DO-val, és szerintem nem is lehetséges.

Egészségére,
R
5 évvel ezelőtt
Használhatod a DigitalOcean-nel, van egy egyszerű trükk, amivel működtetheted:

digitalocean.png

Mivel most csináltam meg egy ügyfélnek, részletesen leírom a hacket, majd külön elmagyarázom, hogyan tudnád működésre bírni.

--

Bár még nem sikerült 100%-osan működnie, de jelentős előrelépést tettünk:

1. Csapkod

A DigitalOcean Spaces az S3 API-jára épül, és a következőket használja: Az Amazon "AWS SDK" PHP könyvtára (ami a bővítményhez bundle).

Amikor ezt felfedeztem, arra gondoltam, hogy mivel A DigitalOcean az SDK használatát népszerűsíti saját termékében, a kód egy részének feltörése, hogy működjön, nem lenne túlságosan nehéz.

Ennek megvalósításához a bővítmény két osztályfájllal működik (mindegyik szolgáltatáshoz):
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(S3 esetén).

Az „admin” fájlban találhatók a felhasználói felület funkciói; a másik fájl az S3 SDK-val való interfészhez tartozik. Röviden, az „admin” fájl az Ajaxon vagy a WP felhasználói felületén keresztül töltődik be, és a funkciója meghívja az S3 fájlt (tárolt hitelesítő adatok használatával), lehetővé téve számára, hogy műveleteket hajtson végre (például szinkronizáljon) az S3 tárolóddal. Ez nagyon jól működik, de van egy fő probléma a DigitalOcean-nel való működéssel:

végpont.png

A DigitalOcean NEM régiófüggetlen. Ez azt jelenti, hogy minden kérés egy adott régióra korlátozódik, míg az S3-é nem. Ez önmagában nem probléma (a hackünk továbbra is működni fog), de ha „teljes” funkcionalitást szeretnél elérni (különböző régiók/csoportok), akkor minden alkalommal egyéni hitelesítőadat-beállításokkal kell meghívnod a „nem admin” osztályt.

-

A hackelés a következőkből áll:

a) Módosítsa az „admin” fájlt, hogy a DigitalOcean Spaces régió „végpontját” használja.
b) Győződjön meg arról, hogy az „us-east-1” régió mindig be van állítva.
c) Módosítsa a médiakönyvtárában található összes szinkronizált melléklet „melléklet URL-címét”

-

Az első lépés az „admin” fájl „alapértelmezett” beállításainak módosítása:

admin.png

A 34. sortól kezdve
./class/wpmfAddonAws3Admin.php
, látni fogja, hogy a másik osztályhoz alapértelmezett beállítások jönnek létre. A következőket kell tennie:


  • Változtasd meg a „régiót” „us-east-1”-re
  • Adja hozzá a sort
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



A fenti esetben a „régiónk” az AMS3. Ez eltérhet attól függően, hogy hol található a tárolóhelyed.

A kód megváltoztatása nem igazán változtat sokat, de biztosítja, hogy minden alkalommal ugyanazok az alapértelmezett értékek legyenek érvényben (és hogy a "végpont" be legyen állítva, ami az egész hack alapja).

-

Miután ezt megtettük, a másik osztályfájlhoz fordulunk.
./class/wpmfAws3.php
:

osztály.png

Ez, ahogy említettük, minden alkalommal meghívódik, amikor az "admin" osztály kommunikálni kíván az S3/DO-val.

Amit itt fogunk csinálni, az a végpont „hamisítása”, ami azt jelenti, hogy fixen beprogramozzuk. Ez megváltoztatja az URL-címet, amelyre az AWS SDK a kéréseket küldi, ami azt jelenti, hogy a DigitalOcean hitelesítő adatainkat el kell fogadni. Ehhez egyszerűen add hozzá a következő két sort a 73. és 74. sorban:

#73 $args['régió'] = 'us-kelet-1';
#74 $args['végpont'] = 'https://ams3.digitaloceanspaces.com';

A fentiek miatt a „végpont” minden alkalommal módosul, amikor az „admin” funkciók bármelyikét használod.

Úgy működik, hogy a fenti adatokat összevonja a tárolt S3 hitelesítő adataiddal (a te esetedben a DigitalOcean API-kulccsal), lehetővé téve a szkript számára a kommunikációt a DO-val. Fentebb leírtam, hogy ez korlátozott, mert azt jelenti, hogy csak egyetlen DO-régióval tudsz kommunikálni (erre mindjárt részletesen kitérek).

-

Miután ezt megtettük, az utolsó teendőnk az, hogy megváltoztatjuk a DO-val szinkronizált összes melléklet "URL"-jét.

Ez az "admin" osztályon belül, a "wpGetAttachmentUrl" (#2048) és az "addMetaInfo" (#1121) függvényekben történik:

1121.png

2048.png

Nem vagyok biztos benne, hogy ezek közül melyik függvény biztosítja a tényleges funkcionalitást (úgy hiszem, a #2048), de mindkettőt megváltoztattam.

Végső soron mindössze annyit kell tenned, hogy az AWS linket DigitalOcean-re cseréled. Az alábbi jól működött ennél a hacknél:

#2057 return 'https://' . $infos['Vödör'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['Kulcs']);

Ez megváltoztatja a WP media DigitalOcean Spaces-hez vezető „linkjét”, amelynek meg kell jelennie a webhelyed backend és frontend felületén.

--

A szélesebb körű javítást egy másik bejegyzésben részletezem.
R
5 évvel ezelőtt
2. "Tele"

Amint azt fentebb említettük, a „teljes” javítás attól függ, hogy a DigitalOcean hogyan illeszkedik az AWS SDK-hoz.

Egyszerűen fogalmazva, az S3 lehetővé teszi, hogy „csatlakozz”, majd bármelyik régióban válassz egy vödört; a DigitalOcean csak azt engedélyezi, hogy csatlakozz és interakcióba lépj egy… egyetlen régió minden alkalommal.

Ha a bővítmény teljes funkcionalitását szeretnéd elérni (a DigitalOcean segítségével), akkor rengeteg testreszabási lehetőséget kell elvégezni az "admin" osztályban. Alapvetően gondoskodnod kell arról, hogy MINDEN kérés a megfelelő végpontra legyen korlátozva, ami időigényes és meglehetősen költséges is (az API-kapcsolatok tekintetében).

-

Valahogy sikerült működésre bírnunk, bár lazán. Azért írom ezt ide, hogy megosszam a haladást, és talán valaki más is szívesen folytatná, vagy valami ilyesmi.

--

Négy fő dolgot kell tenned ahhoz, hogy külön működjön:

1. Hozz létre egy különálló „DigitalOcean” felhasználói felületet
2. Távolítson el minden S3-ra való hivatkozást (szükség esetén helyettesítse a DigitalOcean-nel)
3. Bizonyos funkciók áramlásának módosítása a régiók közötti támogatás lehetővé tétele érdekében
4. Győződjön meg arról, hogy a DO nem zavarja az S3-at

-

1. Egy különálló „DigitalOcean” fül hozzáadásához az eredeti bővítményhez kell lépned, és meg kell keresned a „cloud.php” fájlt (./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>


Most tettem hozzá az S3 fül után.

Ahhoz, hogy működjön, fel kell tölteni a $html_tabdo változót, amit két fájl módosításával lehet megtenni.

Az első a ./class/pages/settings/wp-folder-options.php fájl (fő/eredeti bővítmény):

S3.png

A második a ./class/class-wp-folder-option.php:

html_do.png

Ezzel feltöltődik a lap a DigitalOcean különféle beállításaival.

-

2. Az S3 DO-ra való cseréjéhez teljesen eltérő fájl- és várólista-beállításokkal kell rendelkeznie, hogy a két rendszer ne ütközzön.

Ez számos dolgot igényel, főként egy új "admin" és "connection" osztálykészlet létrehozását. Nem fogok belemenni a részletekbe, hogyan kell ezt csinálni, de alapvetően egy új osztálykészletet kell létrehozni, amelyek létrehozzák a saját konfigurációs beállításaikat, és ezeket használják a DO végpontjaihoz való csatlakozáshoz:

api_kód.png

-

3. Régiók közötti támogatás.

Ahogy a fenti bejegyzésben említettük, a DO rendszere másképp működik, mint az S3, mivel minden kérés egy adott régióra korlátozódik (az S3 régiófüggetlen).

Ez azt jelenti, hogy ha más régiókból származó tárolókkal/terekkel szeretnél dolgozni, akkor valamilyen varázslatot kell alkalmaznod, hogy az egész együttműködjön.

Kevés az időm, ezért nem fogom itt az egészet leírni, de annyit elmondok, hogy ha működőképessé akarod tenni a rendszert, szerkesztened kell a "./class/wpmfDo.php" fájlt a háttérben - ügyelve arra, hogy átadhasd azt a "végpontot", amelyhez az SDK példányát meghívni szeretnéd...

végpont.png

Ez lehetővé teszi számunkra, hogy különböző „végpontokat” („régiókat”) definiáljunk.;) amikor különböző tereket kell felsorolni stb.

Erre jó példa a gyakorlatban, amikor a rendelkezésre álló vödröket szeretnéd listázni:

régió.png

A fentiek eléréséhez végig kell lépkedni a DO-ban elérhető összes régión, majd létre kell hozni egy új tömböt az elérhető tárolókból. Mint látni fogod, ez egy bonyolult megoldás volt:

vödrök_listája.png

Ez létrehozza a $list_buckets változót a különböző régiókból (nem csak abból, amelyikkel csatlakozni szoktál).

-

4. Ezt még nem csináltam meg

Alapvetően képesnek kell lenned arra, hogy a DigitalOcean működjön az S3-mal, még akkor is, ha az S3 jelen van.

Ehhez a „szinkronizálás” funkció működését és számos más dolgot is be kell majd valósítani, amit még nem fejeztem be.
T
3 évvel ezelőtt
Szia,

Ez a funkció nemrég lett implementálva a bővítménybe. Lásd a részleteket alább.:)

Köszönöm,
  • oldal:
  • 1
Erre a hozzászólásra még nem válaszoltak.