백엔드 코드

안녕하세요,

백엔드에서 코드를 실행하는 방법을 찾고 있습니다.

궁극적인 목표는 Maxmind API를 호출하여 퀘벡 외곽에서 방문한 사용자를 다른 사이트로 리디렉션하는 것입니다.

이 게시물을 찾아보았고, 이를 수행하려면 자체 호스팅 Discourse를 사용해야 한다는 것을 이해했습니다.

Pro 플랜에서 제가 하려는 일을 수행할 수 있는 방법이 있을까요?

감사합니다,

Julien

정답을 모 죄송합니다. 하지만 그런 솔루션을 고려하기 전에 두 번 생각해보시는 것이 좋습니다. Geo-IP는 정말로 신뢰할 수 없습니다.

이를 위해서는 플러그인을 작성해야 합니다. Discourse 플러그인 개발 - 1부 - 기본 플러그인 만들기를 참고하세요.

Discourse에는 기본적으로 MaxMind 통합 기능이 포함되어 있으므로 API 호출이 필요하지 않습니다. 플러그인에서 DiscourseIpInfo.get(ip)를 단순히 호출하면 됩니다.

당사의 호스팅 서비스를 사용 중이시라면 지원팀에 문의해 주세요. 엔터프라이즈 플랜에서 커스텀 플러그인에 대한 도움을 드릴 수 있습니다.

이를 위해 플러그인을 작성해야 합니다. Discourse 플러그인 개발 - Part 1 - 기본 플러그인 만들기를 참고하세요.

하지만 Discourse SaaS 버전(프로 플랜)에서 해당 플러그인을 사용할 수 있을까요?

API 호출이 필요하지 않습니다. Discourse에는 MaxMind 통합 기능이 기본적으로 포함되어 있으며, 플러그인에서 DiscourseIpInfo.get(ip)를 간단히 호출하면 됩니다.

이것이 캐나다 퀘벡 주의 사용자만 정확히 대상으로 삼을 수 있는 수준일까요? 제가 찾은 대부분의 GeoIP 서비스는 국가 수준의 정밀도는 있었지만, 캐나다의 특정 주(province)를 대상으로 삼지는 못했습니다.

당사의 호스팅을 사용 중이시라면 지원팀에 문의해 주세요. 엔터프라이즈 플랜에서는 맞춤형 플러그인에 대해 도움을 드릴 수 있습니다.

즉, 스탠다드 플랜에서는 불가능한 건가요? 제 추측으로는 엔터프라이즈 플랜 가격이 프로 플랜의 최소 3배 이상일 것 같습니다.

정확히 판단하기 어렵습니다. 제 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"}

이 방식은 오탐(False Positive)이나 오탐(False Negative)이 발생할 수 있는 여러 가지 이유가 있습니다. 리다이렉트로 해결하려는 문제를 해결하기 위한 가장 좋은 방법은 다른 솔루션을 사용하는 것입니다.

정밀도가 충분해 보이지만, 많은 GeoIP 서비스는 미국 IP보다 캐나다 IP에 대해 더 정밀도가 낮은 경향이 있습니다.

100% 확실하거나 부정적일 필요는 없으며, 이 서비스는 퀘벡 주민에게만 제공되므로 이를 위한 첫 번째 필터링 수단으로 사용할 수 있습니다.

완전한 리디렉션 대신, 예를 들어 프랑스어 사용자를 리디렉션하려는 경우 테마 컴포넌트를 사용할 수 있습니다. 이를 통해 프랑스어 사용자를 위한 선호 사이트를 로그인 화면의 팝업으로 표시할 수 있을 것입니다.

가입 시 클릭해야 하는 "퀘벡에 거주합니다"라는 사용자 정의 필드를 추가하는 것을 추천합니다.

플러그인이 필요하시다면, 도움을 드릴 수 있을 것 같습니다.

Locations 플러그인에 사용자 위치를 자동으로 결정하여 프로필에 설정하는 기능(사이트 설정)을 추가하는 PR을 환영합니다. 이 모드에서는 사용자가 위치를 직접 변경하지 못하도록 읽기 전용으로 설정할 수 있으며(또 다른 설정 항목), 필요 시 관리자만 변경할 수 있도록 할 수 있습니다.

그리고 보너스로, 모든 사용자를 지도에서 볼 수 있게 됩니다. :slight_smile:

우리 지오 블로킹 플러그인의 로직을 반대로 적용하면, 특정 지역을 차단하는 대신 특정 지역을 제외한 모든 지역을 차단할 수 있습니다. 그리 어렵지 않을 텐데, 한 글자만 수정해서 해결하는 분에게는 보너스 점수를 드리겠습니다. 힌트: 37번째 줄 !

또는 communiteq의 Professional 플랜 이상으로 호스팅을 선택할 수도 있습니다. 이 경우 해당 사용 사례에 맞게 플러그인을 확장해 드리겠습니다.