Draco Anti-Spam 과 EAS 같이 쓰기

※ 텍스트큐브 1.7.7 이상에서는 EAS와 같이 사용해도 문제가 없습니다. 그 이전 버전을 사용하시는 분들만 참고해주세요.

그동안 Draco Anti-Spam 플러그인과 EAS (텍스트큐브 기본 스팸방지 플러그인)을 같이 사용하면, Draco 플러그인의 트랙백 처리 기능이 죽어버리는 문제가 있었습니다.(이 문제는 Megawave님이 리포팅해주셨습니다) 저는 아무리 제 플러그인 소스코드를 살펴봐도 이유를 알수가 없었습니다. 그런데 TNF포럼에서 안준환님이 알려주셔서 원인을 알 수 있었습니다.

제 플러그인의 트랙백 기능이 죽어버리는 문제는 EAS의 버그였습니다. EAS가 자신의 앞에 작동한 안티스팸 플러그인의 판단을 “댓글”은 처리해주면서 “트랙백”의 경우는 무시해버렸던 것입니다. 하지만 알고보면 EAS와 제 플러그인을 포함한 많은 스팸 처리 플러그인이 “자신보다 앞에 처리된 다른 스팸플러그인의 판단을 무시하는”버그가 있었습니다.

그럼 왜 제 Draco Anti-Spam 플러그인은 고장나고, 영어 중환자 플러그인(English Trackback Patient)은 잘 되었냐? 텍스트큐브의 플러그인중 같은 이벤트를 공유하는 것들은 알파벳 순서로 작동하기 때문에, Draco -> EAS -> English Trackback Patient 순서로 작동되었던 것으로 보입니다. 대신 영어중환자 플러그인도 EAS와 같이 사용하면 EAS의 트랙백 판단기능을 무시해버렸죠 -_-; 그래서 예전에 제가 EAS와 영어 중환자를 같이 사용할때, 영어가 아닌 외국어 스팸이면 EAS가 막지 못하고 대량의 트랙백 공격을 당한것입니다.

이 문제를 해결하기 위해선 지금 올라와 있는 대부분의 스팸 방지 플러그인이 수정되어야 할거 같습니다. 제 Draco 플러그인도 곧 수정된 0.5버전을 발표할 것입니다.(D보다 앞에오는 스팸방지 플러그인이 공식적으로 없기 때문에, 그다지 의미가 없는 수정이지만..)

EAS의 경우는 75번째 줄의

return EAS_Call(2, $mother[‘site’], $mother[‘title’], $mother[‘url’], $mother[‘excerpt’]);

를 다음과 같이 수정합니다.

return $target && EAS_Call(2, $mother[‘site’], $mother[‘title’], $mother[‘url’], $mother[‘excerpt’]);

EAS Plus등의 EAS계열 플러그인들도 비슷한 해당부분을 고치면 됩니다.

사용자 삽입 이미지
이제는 둘이 사이 좋게 작동합니다.

글쓴이 : Draco (https://draco.pe.kr)
크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.