Puoi usarlo con DigitalOcean, c'è un semplice trucco per farlo funzionare:
Da quando l'ho appena fatto per un cliente, descriverò dettagliatamente l'hack e poi spiegherò come faresti funzionare separatamente.
--
Anche se non abbiamo ancora funzionato al 100%, abbiamo fatto progressi significativi:
1.
Hack DigitalOcean Spaces è costruito attorno all'API di S3 e utilizza
Libreria PHP "AWS SDK" di Amazon (che è bundle d con il plugin).
Nel scoprirlo, ho pensato che da allora
DigitalOcean promuove l'utilizzo dell'SDK con il proprio prodotto, hackerare parte del codice per farlo funzionare non sarebbe eccessivamente difficile.
Per fare questo, ho scoperto che il modo in cui funziona il plugin è con due file di classe (per ogni servizio) -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(per S3).
Il file "admin" è dove si trova la funzionalità front-end; l'altro è per l'interfacciamento con l'SDK S3. In breve, il file "admin" viene caricato tramite Ajax o il front-end WP e la sua funzionalità richiama il file S3 (utilizzando le credenziali archiviate), consentendogli di eseguire azioni (come la sincronizzazione) sul bucket S3. Funziona molto bene, ma c'è un grosso problema nel farlo funzionare con DigitalOcean:
DigitalOcean è
NON regione agnostica. Ciò significa che ogni richiesta è nell'ambito di una regione specifica, mentre S3 non lo è. Questo non è un problema in sé (il nostro hack continuerà a funzionare), ma se si desidera ottenere funzionalità "complete" (diverse regioni / bucket), è necessario assicurarsi di dover invocare la classe "non admin" con impostazioni delle credenziali personalizzate ogni volta.
-
L'hack è costituito da quanto segue:
a) Modificare il file "admin" per utilizzare "endpoint" per la propria area di DigitalOcean Spaces
b) Assicurarsi che la regione "us-east-1" sia sempre impostata
c) Modificare l '"URL allegato" per ciascuno degli allegati sincronizzati nella libreria multimediale
-
Il primo passo è cambiare le opzioni "predefinite" nel file "admin":
A partire dalla riga 34 di
./class/wpmfAddonAws3Admin.php
, vedrai che vengono create una serie di impostazioni predefinite per l'altra classe. Devi fare quanto segue:
Nel caso sopra, la nostra "regione" è AMS3. Questo può essere diverso a seconda della posizione in cui è conservato il tuo spazio.
La modifica di questo codice non fa molto, ma garantisce che vengano utilizzati gli stessi valori predefiniti ogni volta (e che sia impostato "endpoint", che è la base dell'intero hack).
-
Dopo aver fatto ciò, passiamo all'altro file di classe
./class/wpmfAws3.php
:
Questo, come detto, viene invocato ogni volta che la classe "admin" desidera comunicare con S3 / DO.
Quello che faremo qui è "falsificare" l'endpoint, il che significa che lo codificheremo. Ciò cambierà l'URL a cui l'SDK AWS invia le richieste, il che significa che le nostre credenziali DigitalOcean dovrebbero essere accettate. Per farlo, aggiungi semplicemente le seguenti due righe rispettivamente alla riga 73 e 74:
# 73 $ args ["region"] = "us-east-1";
# 74 $ args ["endpoint"] = "
https://ams3.digitaloceanspaces.com';
Quanto sopra imporrà la modifica dell'endpoint ogni volta che si utilizza una delle funzionalità "admin".
Funziona prendendo i dettagli di cui sopra e unendoli con le credenziali S3 memorizzate (nel tuo caso, chiave API DigitalOcean), consentendo allo script di comunicare con DO. Ho descritto sopra che questo è limitato perché significa che sei in grado di comunicare solo con una singola regione DO (qualcosa che affronterò completamente in un minuto).
-
Dopo aver fatto ciò, l'ultima cosa che dobbiamo fare è cambiare l '"URL" per ciascuno degli allegati sincronizzati con DO.
Questo viene fatto all'interno della classe "admin", nelle funzioni "wpGetAttachmentUrl" (# 2048) e "addMetaInfo" (# 1121):
Non sono sicuro di quale di queste funzioni fornisca effettivamente la funzionalità (credo sia # 2048), ma le ho comunque modificate entrambe.
Alla fine, tutto ciò che stai facendo è cambiare il link AWS in uno DigitalOcean. Quello che ha funzionato bene per questo trucco è stato il seguente:
# 2057 restituisce "https: //". $ informazioni ["Bucket"]. ".ams3.digitaloceanspaces.com /". str_replace ('', '% 20', $ infos ['Key']);
Ciò modifica il "collegamento" che i media WP hanno su DigitalOcean Spaces, che dovrebbe mostrarlo nel backend e nel frontend del tuo sito.
--
Descriverò in dettaglio la correzione più ampia in un altro post.