희한한 티스토리 트랙백 문제 해결 및 패치
텍스트큐브 패치
그림을 보면 알 수 있지만 'GET으로 트랙백 URL을 요청'하면 '세션 코드가 붙은 URL을 반환'한다. 그리고 이 URL로 다시 요청을 한 뒤 트랙백을 보내면 트랙백이 정상적으로 간다. 원래는 이 기능을 구현한 프로그램을 따로 작성한 뒤 이 프로그램을 이용해서 '세션 코드가 붙은 URL을 요청'한 뒤 텍스트큐브로 트랙백을 보냈었다. 그러나 이 방법은 일반인들이 적용하기 힘들며, 두번 작업을 해야 하기 때문에 아예 텍스트큐브를 패치했다. 절차는 다음과 같다.
- 좋아하는 편집기(예: EditPlus)로
library/model/blog.trackback.php
파일을 연다. - 이 파일의 끝 부분에 다음 내용을 추가한다.
function trackbackTistory ($query, $host, $port=80, $timeout=10) { $socket = fsockopen($host, $port, $errno, $errstr, 10); fwrite($socket, "$query\r\n"); $res=fread($socket, 10240); fclose($socket); return $res; }
sendTrackback 함수에서 if ($isNeedConvert) {...} else {...}문을 찾은 뒤 else문의
$isSuccess = $request->send($content);
다음 행에 아래의 내용을 추가한다.if(!$isSucess) { //url로 호스트와 포트, 경로를 판정 $request = @parse_url($url); $tistory_host=$request['host']; $tistory_port=$request['port']; $tistory_path=$request['path']; // 트랙백 URL을 요청 $query="GET ".불tistory_path." HTTP/1.1\r\nHost: ".불tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); // 세션 코드가 붙은 URL을 찾아 이 URL로 다시 요청 if(preg_match("/Location: ([^\r\n]*)\r\n/is", $res, $match)) { $query="GET ".불match[1]." HTTP/1.1\r\nHost: ".불tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); } // 트랙백을 다시 보냄 $request = new HTTPRequest('POST', $url); $request->contentType = 'application/x-www-form-urlencoded; charset=utf-8'; $request->referer = $link; $isSuccess = $request->send($content); }
내용을 보면 알 수 있지만 $isSucess
가 false면 요청한 URL로 세션 코드가 붙은 URL을 가져온다. 그리고이 URL을 다시 요청한 뒤 트랙백을 보내도록 한 것이다. 실제 이 코드를 삽입한 뒤 티스토리[1]에도 트랙백이 정상적으로 가는 것을 확인했다. 줄 번호를 입력하는 것이 더 도움이 되겠지만 현재 내가 사용하고 있는 텍스트큐브는 1.7.7 베타2이고 중간에 수정한 부분이 있기 때문에 줄 번호는 생략했다.
- 텍스트큐브 1.7.7 B2로 판올림 얼마 전 텍스트큐브 1.7.7이 베타2가 공개됐다. 다른 프로그램... 새창
- 텍스트큐브 1.7.6 버그 패치 2 일단 위지윅모드의 기본 편집 모드가 바뀌는 현상은 텍스트큐... 새창
- 텍스트큐브 1.7.6 버그 패치 텍스트큐브는 트랙백을 보내는 것이 상당히 어렵다. 정확이 이야... 새창
- 텍스트큐브를 1.7.6으로 판올림해야 하는 이유 나는 프로그램을 좋아한다. 따라서 대부분의 프로그램... 새창
- 텍스트큐브의 트랙백 문제 `sendTrackback`이 실행되는 도중 오류가 발생하는 것으로 추정하고 ... 새창
-
누에고치님 글, 4대강 정비 사업의 필요성에 트랙백을 보냈다. 처음에는 '트랙백을 보낼 수 없다'는 메시지가 떳지만 이 패치를 적용하자 바로 트랙백이 전송됐다. ↩