Terça-feira, 14 de janeiro de 2020
6 Respostas
3,1 mil visitas
Olá,
é compatível com espaços digitalocean e outros gostos do S3?
E é compatível com o Flatsome UX Builder.
Obrigado!
é compatível com espaços digitalocean e outros gostos do S3?
E é compatível com o Flatsome UX Builder.
Obrigado!
A
5 anos atrás
·
#13382 Oi,
Obrigado por nos contatar aqui sobre esta extensão.
Ainda não oferecemos suporte ao Digital Ocean, você pode usar o Amazon S3 atualmente: Para mais detalhes:
https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library
Sim, é compatível com quase o construtor de páginas.
Espero que ajude!
Felicidades,
Obrigado por nos contatar aqui sobre esta extensão.
é compatível com espaços digitalocean e outros gostos do S3?
Ainda não oferecemos suporte ao Digital Ocean, você pode usar o Amazon S3 atualmente: Para mais detalhes:
https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library
E é compatível com o Flatsome UX Builder
Sim, é compatível com quase o construtor de páginas.
Espero que ajude!
Felicidades,
C
5 anos atrás
·
#13385Olá,
obrigado pela sua resposta.
como DO é compatível com S3, talvez funcione com credenciais DO e endereço de servidor, não?
você tentou?
obrigado pela sua resposta.
como DO é compatível com S3, talvez funcione com credenciais DO e endereço de servidor, não?
A
5 anos atrás
·
#13386 Oi,
Obrigado por voltar para mim com mais informações.
Não testamos com DO e acho que não é possível.
Felicidades,
Obrigado por voltar para mim com mais informações.
como DO é compatível com S3, talvez funcione com credenciais DO e endereço de servidor, não?você tentou?
Não testamos com DO e acho que não é possível.
Felicidades,
Você pode usá-lo com DigitalOcean, existe um hack simples para fazer funcionar:
Como acabei de fazer isso para um cliente, detalharei o hack e depois explicarei como você faria com que ele funcionasse separadamente.
--
Embora ainda não tenhamos conseguido 100% de funcionamento, fizemos progressos significativos:
1. Hackear
DigitalOcean Spaces é construído em torno da API do S3 e usa Biblioteca PHP "AWS SDK" da Amazon (que é bundlecom o plugin).
Ao descobrir isso, percebi que desde DigitalOcean promove o uso do SDK com seu próprio produto, hackear parte do código para fazê-lo funcionar não seria muito difícil.
Para fazer isso, descobri que a forma como o plugin funciona é com dois arquivos de classe (para cada serviço) -
O arquivo “admin” é onde reside a funcionalidade do front-end; o outro é para interface com o SDK S3. Resumindo, o arquivo “admin” é carregado via Ajax ou front-end WP, e sua funcionalidade invoca o arquivo S3 (usando credenciais armazenadas), permitindo que ele execute ações (como sincronização) em seu bucket S3. Isso funciona muito bem, mas há um grande problema em fazê-lo funcionar com o DigitalOcean:
DigitalOcean é NÃO região agnóstica. Isso significa que cada solicitação tem como escopo uma região específica, enquanto a do S3 não. Isso não é um problema em si (nosso hack ainda funcionará), mas se você quiser obter funcionalidade "completa" (diferentes regiões/buckets), você precisa garantir que terá que invocar a classe "não admin" com configurações de credenciais personalizadas a cada vez.
-
O hack consiste no seguinte:
a) Altere o arquivo “admin” para usar o “endpoint” da sua região DigitalOcean Spaces
b) Certifique-se de que a região 'us-east-1' esteja sempre definida
c) Altere o "URL do anexo" para cada um dos anexos sincronizados em sua biblioteca de mídia
-
O primeiro passo é alterar as opções “padrão” no arquivo “admin”:
Começando na linha 34 do
No caso acima, nossa “região” é AMS3. Isso pode ser diferente dependendo do local onde seu espaço é mantido.
Alterar esse código não faz muita coisa, mas garante que os mesmos padrões sejam usados todas as vezes (e que o "endpoint" seja definido, que é a base de todo o hack).
-
Depois de fazer isso, passamos para o outro arquivo de classe
Isto, como mencionado, é invocado toda vez que a classe "admin" deseja se comunicar com S3/DO.
O que faremos aqui é “falsificar” o endpoint, o que significa que o codificaremos. Isso alterará a URL para a qual o AWS SDK envia solicitações, o que significa que nossas credenciais DigitalOcean devem ser aceitas. Para fazer isso, basta adicionar as duas linhas a seguir nas linhas 73 e 74, respectivamente:
#73 $args['região'] = 'us-east-1';
#74 $args['endpoint'] = 'https://ams3.digitaloceanspaces.com';
O acima forçará o "endpoint" a ser alterado cada vez que você usar qualquer funcionalidade "admin".
Ele funciona pegando os detalhes acima e mesclando-os com suas credenciais S3 armazenadas (no seu caso, chave API DigitalOcean), permitindo que o script se comunique com o DO. Descrevi acima que isso é limitado porque significa que você só pode se comunicar com uma única região DO (algo que abordarei completamente em um minuto).
-
Depois de fazer isso, a última coisa que precisamos fazer é alterar o “URL” de cada um dos anexos sincronizados com o DO.
Isso é feito dentro da classe "admin", nas funções "wpGetAttachmentUrl" (#2048) e "addMetaInfo" (#1121):
Não tenho certeza de qual dessas funções realmente fornece a funcionalidade (acredito que seja o número 2048), mas mudei as duas mesmo assim.
Em última análise, tudo o que você está fazendo é alterar o link da AWS para um da DigitalOcean. O que funcionou bem para este hack foi o seguinte:
#2057 retorne 'https://' . $infos['Balde'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['Chave']);
Isso altera o “link” que a mídia WP tem para o DigitalOcean Spaces, que deve mostrá-lo no backend e frontend do seu site.
--
Detalharei a correção mais ampla em outro post.
Como acabei de fazer isso para um cliente, detalharei o hack e depois explicarei como você faria com que ele funcionasse separadamente.
--
Embora ainda não tenhamos conseguido 100% de funcionamento, fizemos progressos significativos:
1. Hackear
DigitalOcean Spaces é construído em torno da API do S3 e usa Biblioteca PHP "AWS SDK" da Amazon (que é bundlecom o plugin).
Ao descobrir isso, percebi que desde DigitalOcean promove o uso do SDK com seu próprio produto, hackear parte do código para fazê-lo funcionar não seria muito difícil.
Para fazer isso, descobri que a forma como o plugin funciona é com dois arquivos de classe (para cada serviço) -
./class/wpmfAddonAws3Admin.php&./class/wpmfAws3.php(para S3).O arquivo “admin” é onde reside a funcionalidade do front-end; o outro é para interface com o SDK S3. Resumindo, o arquivo “admin” é carregado via Ajax ou front-end WP, e sua funcionalidade invoca o arquivo S3 (usando credenciais armazenadas), permitindo que ele execute ações (como sincronização) em seu bucket S3. Isso funciona muito bem, mas há um grande problema em fazê-lo funcionar com o DigitalOcean:
DigitalOcean é NÃO região agnóstica. Isso significa que cada solicitação tem como escopo uma região específica, enquanto a do S3 não. Isso não é um problema em si (nosso hack ainda funcionará), mas se você quiser obter funcionalidade "completa" (diferentes regiões/buckets), você precisa garantir que terá que invocar a classe "não admin" com configurações de credenciais personalizadas a cada vez.
-
O hack consiste no seguinte:
a) Altere o arquivo “admin” para usar o “endpoint” da sua região DigitalOcean Spaces
b) Certifique-se de que a região 'us-east-1' esteja sempre definida
c) Altere o "URL do anexo" para cada um dos anexos sincronizados em sua biblioteca de mídia
-
O primeiro passo é alterar as opções “padrão” no arquivo “admin”:
Começando na linha 34 do
./class/wpmfAddonAws3Admin.php, você verá que um conjunto de configurações padrão foi criado para a outra classe. Você precisa fazer o seguinte:- Mude a "região" para 'us-east-1'
- Adicione a linha
"endpoint" => "https://[[REGION]].digitaloceanspaces.com"
No caso acima, nossa “região” é AMS3. Isso pode ser diferente dependendo do local onde seu espaço é mantido.
Alterar esse código não faz muita coisa, mas garante que os mesmos padrões sejam usados todas as vezes (e que o "endpoint" seja definido, que é a base de todo o hack).
-
Depois de fazer isso, passamos para o outro arquivo de classe
./class/wpmfAws3.php:Isto, como mencionado, é invocado toda vez que a classe "admin" deseja se comunicar com S3/DO.
O que faremos aqui é “falsificar” o endpoint, o que significa que o codificaremos. Isso alterará a URL para a qual o AWS SDK envia solicitações, o que significa que nossas credenciais DigitalOcean devem ser aceitas. Para fazer isso, basta adicionar as duas linhas a seguir nas linhas 73 e 74, respectivamente:
#73 $args['região'] = 'us-east-1';
#74 $args['endpoint'] = 'https://ams3.digitaloceanspaces.com';
O acima forçará o "endpoint" a ser alterado cada vez que você usar qualquer funcionalidade "admin".
Ele funciona pegando os detalhes acima e mesclando-os com suas credenciais S3 armazenadas (no seu caso, chave API DigitalOcean), permitindo que o script se comunique com o DO. Descrevi acima que isso é limitado porque significa que você só pode se comunicar com uma única região DO (algo que abordarei completamente em um minuto).
-
Depois de fazer isso, a última coisa que precisamos fazer é alterar o “URL” de cada um dos anexos sincronizados com o DO.
Isso é feito dentro da classe "admin", nas funções "wpGetAttachmentUrl" (#2048) e "addMetaInfo" (#1121):
Não tenho certeza de qual dessas funções realmente fornece a funcionalidade (acredito que seja o número 2048), mas mudei as duas mesmo assim.
Em última análise, tudo o que você está fazendo é alterar o link da AWS para um da DigitalOcean. O que funcionou bem para este hack foi o seguinte:
#2057 retorne 'https://' . $infos['Balde'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['Chave']);
Isso altera o “link” que a mídia WP tem para o DigitalOcean Spaces, que deve mostrá-lo no backend e frontend do seu site.
--
Detalharei a correção mais ampla em outro post.
2. "Completo"
Conforme mencionado acima, a correção “completa” depende de como a DigitalOcean faz interface com o AWS SDK.
Em termos simples, o S3 permite “conectar” e então escolher um bucket em qualquer região; A DigitalOcean só permite que você se conecte e interaja com um solteiro região de cada vez.
Se você deseja obter todas as funcionalidades do plugin (com DigitalOcean), há muitas customizações que precisam acontecer na classe “admin”. Basicamente, você precisa ter certeza de que CADA solicitação tenha como escopo o endpoint correto, o que é demorado e bastante caro (em termos de conexões de API).
-
Nós "meio que" conseguimos fazer isso funcionar, embora vagamente. Estou escrevendo isso aqui como um meio de compartilhar o progresso, e talvez alguém prefira continuar ou algo assim.
--
Você precisa fazer quatro coisas principais para fazê-lo funcionar separadamente:
1. Crie um fluxo de IU "DigitalOcean" separado
2. Remova quaisquer referências ao S3 (substituindo por DigitalOcean conforme necessário)
3. Alterar o fluxo de certos recursos para permitir suporte entre regiões
4. Certifique-se de que o DO não interfira no S3
-
1. Para adicionar uma guia "DigitalOcean" separada, você precisa ir ao plugin original e localizar o arquivo "cloud.php" (./class/pages/settings/cloud.php):
Acabei de adicioná-lo após a guia S3.
Para que funcione, você precisa que a variável $html_tabdo seja preenchida, o que é feito alterando dois arquivos.
O primeiro é o arquivo ./class/pages/settings/wp-folder-options.php (plugin principal/original):
O segundo é ./class/class-wp-folder-option.php:
Isso preencherá a guia com as várias configurações do DigitalOcean.
-
2. Para substituir S3 por DO, você precisa garantir que possui um conjunto completamente diferente de arquivos e configurações de fila para garantir que os dois sistemas não entrem em conflito.
Isso requer uma série de coisas, principalmente a criação de um novo conjunto de classes "admin" e "connection". Não vou me aprofundar em como fazer isso, mas basicamente você deseja criar um novo conjunto de classes que criem suas próprias configurações e use-as para conectar-se aos endpoints para DO:
-
3. Suporte entre regiões.
Conforme mencionado na postagem acima, o sistema DO funciona de maneira diferente do S3, pois cada solicitação tem como escopo uma região específica (o S3 é independente de região).
Isso significa que se você quiser trabalhar com buckets/espaços de outras regiões, você precisa fazer um pouco de mágica para fazer tudo funcionar junto.
Estou ficando sem tempo, então não vou cobrir tudo aqui, mas direi que se você quiser fazer o sistema funcionar, você precisa editar o arquivo "./class/wpmfDo.php" no backend - garantindo que você seja capaz de passar o "endpoint" para o qual deseja invocar a instância do SDK ...
Isto nos dá a capacidade de definir diferentes "pontos finais" ("regiões"
para quando você precisar listar espaços diferentes, etc.
Um bom exemplo disso em ação é quando você deseja listar os buckets disponíveis:
Para conseguir o que foi dito acima, você precisa percorrer todas as regiões disponíveis no DO e, em seguida, criar uma nova matriz de intervalos disponíveis. Como você perceberá, esta foi uma solução complicada de criar:
Isso cria a variável $list_buckets das diferentes regiões (não apenas daquela com a qual você usou para se conectar).
-
4. Ainda não fiz isso
Basicamente, você precisa fazer o DigitalOcean funcionar com o S3, mesmo quando o S3 estiver presente.
Isso exigirá que a funcionalidade "sincronização" funcione e uma série de outras coisas, que ainda não concluí.
Conforme mencionado acima, a correção “completa” depende de como a DigitalOcean faz interface com o AWS SDK.
Em termos simples, o S3 permite “conectar” e então escolher um bucket em qualquer região; A DigitalOcean só permite que você se conecte e interaja com um solteiro região de cada vez.
Se você deseja obter todas as funcionalidades do plugin (com DigitalOcean), há muitas customizações que precisam acontecer na classe “admin”. Basicamente, você precisa ter certeza de que CADA solicitação tenha como escopo o endpoint correto, o que é demorado e bastante caro (em termos de conexões de API).
-
Nós "meio que" conseguimos fazer isso funcionar, embora vagamente. Estou escrevendo isso aqui como um meio de compartilhar o progresso, e talvez alguém prefira continuar ou algo assim.
--
Você precisa fazer quatro coisas principais para fazê-lo funcionar separadamente:
1. Crie um fluxo de IU "DigitalOcean" separado
2. Remova quaisquer referências ao S3 (substituindo por DigitalOcean conforme necessário)
3. Alterar o fluxo de certos recursos para permitir suporte entre regiões
4. Certifique-se de que o DO não interfira no S3
-
1. Para adicionar uma guia "DigitalOcean" separada, você precisa ir ao plugin original e localizar o arquivo "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>Acabei de adicioná-lo após a guia S3.
Para que funcione, você precisa que a variável $html_tabdo seja preenchida, o que é feito alterando dois arquivos.
O primeiro é o arquivo ./class/pages/settings/wp-folder-options.php (plugin principal/original):
O segundo é ./class/class-wp-folder-option.php:
Isso preencherá a guia com as várias configurações do DigitalOcean.
-
2. Para substituir S3 por DO, você precisa garantir que possui um conjunto completamente diferente de arquivos e configurações de fila para garantir que os dois sistemas não entrem em conflito.
Isso requer uma série de coisas, principalmente a criação de um novo conjunto de classes "admin" e "connection". Não vou me aprofundar em como fazer isso, mas basicamente você deseja criar um novo conjunto de classes que criem suas próprias configurações e use-as para conectar-se aos endpoints para DO:
-
3. Suporte entre regiões.
Conforme mencionado na postagem acima, o sistema DO funciona de maneira diferente do S3, pois cada solicitação tem como escopo uma região específica (o S3 é independente de região).
Isso significa que se você quiser trabalhar com buckets/espaços de outras regiões, você precisa fazer um pouco de mágica para fazer tudo funcionar junto.
Estou ficando sem tempo, então não vou cobrir tudo aqui, mas direi que se você quiser fazer o sistema funcionar, você precisa editar o arquivo "./class/wpmfDo.php" no backend - garantindo que você seja capaz de passar o "endpoint" para o qual deseja invocar a instância do SDK ...
Isto nos dá a capacidade de definir diferentes "pontos finais" ("regiões"
Um bom exemplo disso em ação é quando você deseja listar os buckets disponíveis:
Para conseguir o que foi dito acima, você precisa percorrer todas as regiões disponíveis no DO e, em seguida, criar uma nova matriz de intervalos disponíveis. Como você perceberá, esta foi uma solução complicada de criar:
Isso cria a variável $list_buckets das diferentes regiões (não apenas daquela com a qual você usou para se conectar).
-
4. Ainda não fiz isso
Basicamente, você precisa fazer o DigitalOcean funcionar com o S3, mesmo quando o S3 estiver presente.
Isso exigirá que a funcionalidade "sincronização" funcione e uma série de outras coisas, que ainda não concluí.
T
3 anos atrás
·
#18122Olá,
este recurso foi implementado recentemente no plugin. Veja os detalhes abaixo.
Saúde,
este recurso foi implementado recentemente no plugin. Veja os detalhes abaixo.
Saúde,
- Página :
- 1
Ainda não há respostas para esta postagem.
Por favor, faça o login para postar uma resposta
Você precisará estar logado para poder postar uma resposta. Faça login usando o formulário à direita ou registre uma conta se você é novo aqui. Registre-se aqui "
