스팸을 막아보자.Jan 29, 2007

블로그의 시대로 들어서면서, 스팸이 그 어떤 시절보다 기승을 부리고 있다. 이메일 스팸이야 거의 대부분 자동으로 걸러지기 때문에(물론, 직접 메일서버를 운영하는 사람이라면 해당하지 않겠지만) 그다지 신경쓸 일이 없는 반면, 블로그의 스팸은 직접 관리를 해줘야 하기 때문에 상당히 스트레스를 받는다. 가입형 블로그라면 어느정도 차단해주기는 하지만, 설치형 블로그의 경우 직접 하는 수밖에.

WP의 경우 Akismet이라는 강력한 플러그인이 있어서, 이걸 켜 둘 경우 대부분의 스팸이 차단된다. 다만 문제는, Akismet 서버와의 통신에 시간이 좀 걸릴 때가 있어서, 댓글 등록이 엄청나게 늦어질 때가 있다는 것이다. 그래서 눈물을 머금고 껐다.(심각할 경우 30초 가까이 걸릴 때도 있더라-_-)

일단 관리자의 승인을 한 번 이상 받은 사람만 댓글을 달 수 있게 하는 기능이 있긴 하지만, 이건 그다지 도움이 되지 못한다. 오히려, 멀쩡한 글도 Awaiting Moderation 으로 들어가서 덤으로 날아갈 가능성이 있다고 생각되어서 아예 생각도 안해봤다. 그다음, 특정 갯수 이상의 링크가 들어가 있는 댓글을 홀딩시키는 것. 제법 효과를 봤다. 스팸의 절반 이상이 링크를 대여섯개 이상씩 포함하고 있기 때문에 그런 놈들은 100% 차단된다.

그래도 뚫고 오는 것들이 있다. 이번엔 내용에서 [url 이라는 BBCode를 포함한 것들을 전부 차단했다. 적어도 국내에서는 BBCode 거의 안쓰니까. 마찬가지로, <strong> 태그가 들어가 있는 것들도 전부 차단. 보통 댓글에 태그 쓰는 일은 거의 없으니까.

이제 많이 줄어들었다. 그래도 가끔씩 스팸이 달리는데, 아예 ASCII 코드로만 이루어진 댓글(한글이 없는 댓글)을 전부 차단해 볼까 생각중이다. 이건 거의 직빵일듯 한데, 아직 살짝 고민중이다. 좀더 추이를 지켜봐야지..

그러고보니 Akismet 이 느려서 안쓰는거면..EAS를 WP에 적용하면 될라나? -_-;

WP+UTW+TAGF 적용Dec 01, 2006

Tag cloud 페이지TAGF(Tags in Flash) 를 적용했다. 태터툴즈용 플러그인이지만, WP나 TT나 태깅은 그게 그거라서 tag_vars.php 만 조금 고치면 바로 사용이 가능하더라.

2006년 12월 7일 추가 : Pod님플러그인으로 만드셨기 때문에 번거롭게 이런 패치를 하지 않아도 간편하게 사용할 수 있음.

PHP:
  1. --- tag_vars.php.orig   2006-12-02 20:59:15.872774440 +0900
  2. +++ tag_vars.php        2006-12-02 20:59:47.872909680 +0900
  3. @@ -1,15 +1,15 @@
  4.  <?
  5.  
  6. -require_once "../../config.php";
  7. +require_once "../../../../wp-config.php";
  8.  //설정정보 로드
  9.  
  10. -$tgf_host = $database['server'];
  11. -$tgf_id = $database['username'];                           
  12. -$tgf_pw = $database['password'];                   
  13. -$tgf_dbname = $database['database'];
  14. -$tgf_url="http://".$service['domain'].$service['path'];
  15. -$tgf_tagr = $database['prefix']."TagRelations";
  16. -$tgf_tags = $database['prefix']."Tags";
  17. +$tgf_host = DB_HOST;
  18. +$tgf_id = DB_USER;
  19. +$tgf_pw = DB_PASSWORD;
  20. +$tgf_dbname = DB_NAME;
  21. +$tgf_url = "";
  22. +$tgf_tagr = $table_prefix."post2tag";
  23. +$tgf_tags = $table_prefix."tags";
  24.  
  25.  ///////////////////
  26.  //표시될 갯수 설정
  27. @@ -76,12 +76,14 @@
  28.  global $tgf_host,$tgf_id,$tgf_pw,$tgf_dbname;
  29.  $DBconn = mysql_connect($tgf_host,$tgf_id,$tgf_pw);
  30.  mysql_select_db($tgf_dbname,$DBconn);
  31. +mysql_query("set names utf8");
  32. +$tgf_url = mysql_result(mysql_query("SELECT option_value FROM {$table_prefix}options WHERE option_name='siteurl'"), 0, 0);
  33.  
  34. -$sql = "SELECT a.tag, count(*), b.name
  35. -               FROM ".$tgf_tagr." a, ".$tgf_tags." b
  36. -               WHERE a.tag=b.id group by a.tag
  37. -               ORDER by 2 desc, b.name
  38. -               $limit";
  39. +$sql = "SELECT b.tag as name, COUNT(a.tag_id)
  40. +        FROM $tgf_tagr a, $tgf_tags b
  41. +        WHERE a.tag_id=b.tag_ID GROUP BY a.tag_id
  42. +        ORDER BY 2 DESC
  43. +        $limit";
  44.  $result = mysql_query($sql) or die(mysql_error());
  45.  //가져오기

TP-Guestbook 플러그인 설치Nov 14, 2006

Brian's Threaded Comments 플러그인을 사용하던 중, 방명록의 최신 글이 제일 위로 나오게(DESC) 순서를 뒤집어 보려고 Paged Commends 도 같이 설치했다가, 이런저런 삽질 끝에 때려치우고 TP-Guestbook 으로 갈아탔다. 일단 설치만으로 Guestbook은 완성. 그런데 일반 포스트의 댓글 순서까지 뒤집혀서 나오는 것이다. (문제1) 게다가 방명록 비스무레하게 보이기 위해 comment form 도 위쪽으로 올라가게 설정했더니, Guestbook 페이지뿐만이 아니라 일반 포스트에서까지 form 이 위에 붙어버렸다. (문제2)

그래서 TP-Guestbook 에서 All posts 옵션을 false 로 해두고 Brian's Threaded Comments 를 같이 활성화시키니 일단 해결되었다. 그런데 테스트를 안해본 게 화근. 며칠만에, 두 플러그인이 충돌(?)을 일으켜서 댓글이 아예 안달리는 문제가 생긴다는 것을 알아차렸다.

일단 다시 Brian's Threaded Comments 를 끄고, tp-guestbook.php 를 뜯어봤다. $TPGuestbook->show_all_ordering 의 기본값을 ASC 로 변경해서 문제1 은 해결. 문제2 는 옵션에서 bottom 으로 설정해두고, $TPGuestbook->_update_values() 에서 form_position 이라는 커스텀 필드를 받아오도록 재설정해주고 Guestbook 페이지의 커스텀 필드에 form_position=top 으로 추가해서 해결했다.

멋진 플러그인을 만들어 주신 082net님께 감사를..:D