2020. január 14., kedd
6 Válaszok
3,1 000 látogatás
Szia,
kompatibilis a DigitalOcean Spaces-szel és más S3-szerű alkalmazásokkal?
És kompatibilis a Flatsome UX Builderrel?
Köszönöm!
kompatibilis a DigitalOcean Spaces-szel és más S3-szerű alkalmazásokkal?
És kompatibilis a Flatsome UX Builderrel?
Köszönöm!
Szia,
Köszönjük, hogy megkeresett minket ezzel a bővítménnyel kapcsolatban.
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
Igen, kompatibilis a majdnem oldalépítővel.
Remélem ez segít!
Egészségére,
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
·
#13385Szia,
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?
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?
Használhatod a DigitalOcean-nel, van egy egyszerű trükk, amivel működtetheted:
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):
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:
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:
A 34. sortól kezdve
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.
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:
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.
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:
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:
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: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:
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.
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):
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):
A második a ./class/class-wp-folder-option.php:
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:
-
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...
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:
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:
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.
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):
A második a ./class/class-wp-folder-option.php:
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:
-
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...
Ez lehetővé teszi számunkra, hogy különböző „végpontokat” („régiókat”) definiáljunk.
Erre jó példa a gyakorlatban, amikor a rendelkezésre álló vödröket szeretnéd listázni:
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:
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
·
#18122Szia,
Ez a funkció nemrég lett implementálva a bővítménybe. Lásd a részleteket alább.
Köszönöm,
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.
Kérjük, jelentkezzen be, hogy válaszoljon
A válasz elküldéséhez be kell jelentkeznie. Jelentkezzen be a jobb oldali űrlap segítségével, vagy regisztráljon fiókot, ha új itt. Itt regisztrálj "
