ExpressionEngine의 트랙백 모듈을 한국 환경에 최적화하기

  • Post author:
  • Post category:
  • Post comments:10 Comments
  • Post last modified:February 8, 2020

트랙백 명세는 인코딩 방식에 대해 아무런 언급이 없다. 이를테면 알아서 구현해라라는 말인데, 덕분에 한글을 표현하는 방식이 제각각이다. euc-kr 과 utf-8이 혼재되어 있는 상황이라 더욱 골치 아프다.

ExpressionEngine은 외국계 블로그 엔진이라 태터이글루스 등에 트랙백을 전송하면 글자가 깨진다. 이런 문제를 해결하고자 EE의 트랙백 모듈을 직접 수정해봤다.

환경

EE의 설정값이 다음과 같은 경우만 고려했다. 아마도 이것이 표준이라고 할 수 있을 것이다.

  • ExpressionEngine 버전: 1.4.2

  • [Admin/Global Weblog Preferences/Automatically Convert High ASCII Text to Entities]: no

  • [Admin/Weblog Management/XML Language]: Korean

  • [Admin/Weblog Management/XML Character Encoding]: utf-8

수정 사항

  • 트랙백의 기능이라 함은 송신과 수신 두 가지이다. 이 중에서 수신 기능은 손보지 않았다. 어차피 수신된 트랙백 메시지가 깨진 경우에는 수작업으로 대처하면 된다. 아주 유명한 블로그라서 하루에도 트랙백이 몇개씩 쌓인다면 모르겠지만, 대부분의 경우에는 큰 문제가 안 된다. 즉, 급하지 않다.

  • 아무래도 태터툴즈가 대세이니 태터툴즈와 동일한 방식으로 메시지 인코딩을 하기로 결정했다.

  • euc-kr가 기본인 블로그 엔진이나 서비스 중 일부는 utf-8로 인코딩된 트랙백 메시지를 제대로 처리하지 못한다. 이런 블로그에는 메시지를 euc-kr로 다시 인코딩해서 보내야 하는데, 이와 관련된 처리는 태터툴즈의 방식을 따라했다.

  • Trackback_CP::send_trackback 메써드가 주요 수정 대상이었고, Trackback_CP::process_trackback은 HTTP 헤더에 charset을 추가한 것이 전부이다.

  • 소스코드 중 수정된 부분 앞에는 // modified라는 주석을 달았다.

테스트

다음, 이글루스, 파란, 네이버, 그리고 태터툴즈를 대상으로 테스트를 진행했다.

  • 네이버: 트랙백을 너무 자주 보냈더니 차단당한 것 같다.

  • 다음: 다음의 블로그 서비스는 특수문자 처리를 제대로 못 하는 것 같다. 메시지에 %가 있으면 오류를 반환한다. 그나마 <>는 메시지에서 삭제 당한다. 이것은 다음 측에서 수정해야 할 문제이다.

  • 이글루스: 테터툴즈 소스코드를 보면 이글루스에 보내는 메시지는 euc-kr로 변환한다. 그러나 이글루스는 utf-8로 인코딩된 메시지를 제대로 처리하는 것으로 보인다. 예전에는 확실히 이런 기능이 없었는데 추가된 것 같다.

다운로드

원본과 수정된 소스코드를 펼쳐놓는 것만으로도 스코롤 압박이 장난 아니게 된다. 그리고 무엇보다 소스코드를 하나하나 설명하기가 귀찮다. 혹시라도 질문 사항이 있으면 메일 또는 덧글로 연락주면 대답해주겠지만. 이해해주리라 믿는다. -_-

Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 문득, 한국전쟁 때 우리를 도와준 비백인이 적지 않은데 이런 언행을 일삼는 건 배은망덕하지 않나? 의리없고 배은망덕한 인간이 난 싫더라 https://t.co/iQvNMqnauQ
    15 hours ago
  • 첨언하자면 백오피스가 아닌 사람에게 노하우가 있는 상황도 경계해야 한다. 사업 확장이 안 된다
    1 day ago
  • 1. 데이터를 쌓아서 잘 보여주는가 2. 데이터에 기반해서 내가 의사결정을 할 수 있는가. 달리 말해 데이터에 기반해 내 서비스를 개선하는 일련의 피드백 루프를 수행할 수 있는가 길게 이야기했는데 간단히… https://t.co/OhIRZflJqd
    1 day ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts