Código de backend

Olá,

Estou tentando encontrar uma maneira de executar algum código no backend.

O objetivo final é chamar a API da Maxmind e redirecionar usuários que vêm de fora de Quebec para outro site.

Encontrei esta postagem e entendo que para fazer isso eu teria que usar um Discourse auto-hospedado.

Existe alguma maneira de fazer o que estou tentando fazer no plano pro?

Abraços,

Julien

Não sei a resposta, desculpe, mas você deve pensar duas vezes antes de uma solução assim. Geo-IP é realmente não confiável.

Você precisará escrever um plugin para isso. Veja Desenvolvendo Plugins do Discourse - Parte 1 - Crie um plugin básico.

Não há necessidade de chamadas de API, pois o Discourse já vem com integração MaxMind pronta, e você pode simplesmente chamar DiscourseIpInfo.get(ip) do seu plugin.

Se você estiver em nossa hospedagem, entre em contato com nosso suporte. Podemos ajudá-lo com plugins personalizados em nosso plano Enterprise.

3 curtidas

Você precisará escrever um plugin para isso. Veja Desenvolvendo Plugins do Discourse - Parte 1 - Crie um plugin básico.

Mas poderei usar esse plugin com a versão SaaS do Discourse (com o plano Pro)?

Não há necessidade de chamadas de API, pois o Discourse já vem com integração MaxMind pronta, e você pode simplesmente chamar DiscourseIpInfo.get(ip) do seu plugin.

Isso é preciso o suficiente para direcionar usuários apenas de Quebec, Canadá? A maioria dos serviços GeoIP que encontrei tinha precisão de país, mas não conseguia direcionar uma província específica no Canadá.

Se você estiver em nossa hospedagem, entre em contato com nosso suporte. Podemos ajudá-lo com plugins personalizados em nosso plano Enterprise.

Então não é possível com o plano Standard? Minha suposição é que o plano Enterprise custa pelo menos 3x o preço do plano Pro.

É difícil dizer, eis o que descobri sobre meu IP:

=> {:country=>"United States",
 :country_code=>"US",
 :region=>"Tennessee",
 :city=>"Nashville",
 :latitude=>36.1315,
 :longitude=>-86.8019,
 :location=>"Nashville, Tennessee, United States",
 :geoname_ids=>[6255149, 6252001, 4644585, 4662168],
 :asn=>7922,
 :organization=>"COMCAST-7922"}

Haverá uma série de maneiras pelas quais isso pode ter falsos positivos ou negativos. Sua melhor aposta é alguma outra solução para o problema que você está resolvendo com o redirecionamento.

Isso parece preciso o suficiente, mas muitos serviços GeoIP são mais precisos para IPs dos EUA do que para IPs do Canadá.

Não precisa ser 100% positivo ou negativo, é uma forma de ter uma primeira barreira, já que o serviço é oferecido apenas para pessoas no Quebec.

1 curtida

Em vez de um redirecionamento completo, você pode usar um componente de tema que, por exemplo, se você estiver procurando redirecionar usuários franceses. Ele poderia talvez usar o Local para popular um pop-up na tela de login para o site preferido para francófonos.

1 curtida

Eu recomendaria que você apenas incluísse um campo personalizado de usuário que diga “Estou no Quebec” que eles devem marcar ao se inscrever.

Se você quiser um plugin, no entanto, eu posso ajudar.

1 curtida

Eu aceitaria um PR para o plugin Locations (como uma configuração do site) para determinar automaticamente a localização de um usuário e defini-la em seu perfil, que neste modo poderia ser somente leitura (outra configuração) para evitar que eles mesmos a alterassem (mas poderia ser feita pelo administrador mediante solicitação).

Então, como um bônus, você seria capaz de ver todos em um mapa :slight_smile:

Você poderia inverter a lógica em nosso plugin de bloqueio geográfico e, em vez de bloquear certas regiões, você poderia bloquear todas, exceto certas regiões. Não deve ser muito difícil - pontos extras para quem conseguir fazer isso com uma edição de um caractere.
Dica: linha 37 !

[quote=“Julien Bonnier, post:1, topic:257537, username:Julien_Bonnier”]para fazer isso eu teria que usar um Discourse auto-hospedado.
[/quote]
Ou você pode hospedar com communiteq no plano Professional ou superior. Nesse caso, estenderemos o plugin para o seu caso de uso.

2 curtidas