Код бэкенда

Здравствуйте,

Я пытаюсь найти способ выполнить некоторый код на стороне сервера.

Конечная цель — вызвать API MaxMind и перенаправлять пользователей, заходящих из-за пределов Квебека, на другой сайт.

Я нашел этот пост и понял, что для этого мне потребуется использовать саморазмещённый Discourse.

Есть ли способ сделать то, что я пытаюсь сделать, на плане Pro?

С уважением,

Жюльен

Я не знаю ответа, извините, но вам стоит дважды подумать перед такой решением. Гео-IP действительно ненадежен.

Для этого вам нужно написать плагин. См. Разработка плагинов для Discourse — Часть 1 — Создание базового плагина.

Вызовы API не нужны, так как в Discourse интеграция с MaxMind уже включена по умолчанию. Вы можете просто вызвать DiscourseIpInfo.get(ip) из вашего плагина.

Если вы используете наше хостинговое решение, пожалуйста, обратитесь в нашу службу поддержки. Мы можем помочь вам с кастомными плагинами в рамках нашего плана Enterprise.

Для этого вам нужно написать плагин. См. Разработка плагинов для Discourse — Часть 1: Создание базового плагина.

Но смогу ли я использовать этот плагин в версии Discourse SaaS (с тарифом Pro)?

Вызовы API не требуются, так как Discourse уже включает интеграцию с MaxMind, и вы можете просто вызывать DiscourseIpInfo.get(ip) из вашего плагина.

Достаточно ли этой точности для таргетинга только на пользователей из Квебека, Канада? Большинство найденных мной сервисов GeoIP имеют точность на уровне страны, но не могут таргетировать конкретную провинцию в Канаде.

Если вы используете наше хостинг-решение, пожалуйста, обратитесь в нашу службу поддержки. Мы можем помочь вам с кастомными плагинами в рамках тарифа Enterprise.

Значит, с тарифом Standard это невозможно? Я предполагаю, что тариф Enterprise стоит как минимум в 3 раза дороже тарифа Pro.

Сложно сказать, вот что я узнал о своём 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"}

Существует множество способов, при которых это может привести к ложноположительным или ложноотрицательным результатам. Лучшим решением будет найти другой способ решения проблемы, которую вы пытаетесь решить с помощью перенаправления.

Это выглядит достаточно точно, но многие сервисы GeoIP обеспечивают более высокую точность для IP-адресов из США, чем для IP-адресов из Канады.

Не обязательно, чтобы результат был на 100% положительным или отрицательным; это лишь первый рубеж фильтрации, поскольку услуга предоставляется только жителям Квебека.

Вместо полного перенаправления вы, возможно, сможете использовать компонент темы. Например, если вы хотите перенаправлять пользователей на французском языке, он может использовать Local для отображения всплывающего окна на экране входа с предложением предпочтительного сайта для франкофонов.

Я бы порекомендовал просто добавить пользовательское поле с надписью «Я в Квебеке», которое они должны будут отметить при регистрации.

Однако, если вам нужен плагин, я, возможно, смогу помочь.

Я с радостью приму PR в плагин Locations (в виде настройки сайта) для автоматического определения местоположения пользователя и установки его в профиле. В этом режиме местоположение могло бы быть доступно только для чтения (ещё одна настройка), чтобы пользователи не могли менять его сами (но администратор мог бы сделать это по запросу).

Кроме того, в качестве бонуса вы сможете видеть всех на карте :slight_smile:

Вы можете перевернуть логику в нашем плагине гео-блокировки и вместо блокировки определённых регионов заблокировать всё, кроме выбранных. Это не должно быть слишком сложно — дополнительные баллы тому, кто сможет сделать это одним изменением символа. Подсказка: строка 37 !

Или вы можете разместить свой форум с Communiteq на тарифе Professional или выше. В этом случае мы даже расширим плагин под ваш случай использования.