2012년 11월 5일 월요일

sendxmpp를 아시나요?

사무실서버에 openfire을 올리고
spark 메신저를 이용해서 회사 메신저로 사용하고 있다.

전자결재, 메일, 메신저까지다 구축하고 나니까 욕심이 생기더라.

전자결재에 있는 기능중 직원간 쪽지나 결재요청, 승인등의 이벤트를 실시간으로 알려줄 수 없을까... 하는....

사상이 유닉스틱하다 보니 커맨드 라인으로 메신저에 메시지를 날릴 수 있는 방법을 찾아 다녔다.

xmpp 프로토콜을 잘 지원하는 sendxmpp라는 이쁘장한 툴이 있다. perl로 만들어 졌다.

이거 설치가 좀 까탈스럽다. 하나 깔고 나면 뭐 하나 없다고 하고, 그거 설치하면 또 뭐 없다고 하고...

rpm이나 deb 패키지를 이용해서 설치하는 것 보다

그냥 소스를 가져와서 /usr/local 아래 설치하는게 훨씬 간편하다. 뭐 없다고 할때 마다 그 메시지 구글에 긇어 넣으면 어디서 다운 받아야 할지 다 가르쳐 준다. 그렇게 하나씩 설치 했다.

이제 메시지를 보냈다.

echo "연습 메시지"| sendxmpp -u admin -p PASSWORD -j mydomain.com user@mydomain.com

하면 몇줄의 경고와 함께 메시지가 날아가서 내 메신저에 팝업이 뽕 하고 나타난다.
무쟈게 흐믓했더라만...
한글이 형편없이 깨져 버린다.

낭패... 그래 까짓거 메시지 종류몇개 안되니 영어로 하지머... 그렇게 영어로 간단한 팝업을 구현하고 며칠 후... 또 손이 근질 거린다.

한글이 될거 같은데... 어케하면 좋을까...

우리의 구글신께 "sendxmpp 한글" 이라고 검색했는데 별 도움이 안된다. 한글 매뉴얼정도...

한시간쯤 이것 저것 뒤져보다가 '앗!' 하고 다른 검색 방법이 생각났다.

"sendxmpp russian"
ㅎㅎㅎ 러시아 문자도 ascii 코드가 아니니  그넘들 중에 누군가 방법을 찾았으리라...

역시 있었다. 너무 간단한 방법이 있었다.

root 권한으로 로그인해서 /usr/local/bin/sendxmpp를 vi로 열자. perl 소스이므로 열어 보는데 아무 지장 없다.

대충 앞부분에
================================
use Net::XMPP;
use Getopt::Long;
use strict;
================================
이런 부분이 있다.
여기에 한줄 추가한다.
================================
use Net::XMPP;
use Getopt::Long;
use strict;
use encoding 'utf8';
================================
이렇게 한후 한글로 메시지를 보내면 아주 잘 간다. 예의상 러시아 문자도 보내봤다. 역시 잘간다.

이에 우리회사 그룹웨어는 실시간으로 메시지 도착 알람이 뜬다.. 물론 메신저 로그인한 사람한테만...

오픈파이어라는 공개 표준 기술을 채택해서 메신저를 만들어 놨더니 많은 부분이 편리하게 해결이 된다. 너무 많은 오픈 소스들... 덤으로 스마트폰용 메신저까지 있다. Xabber 라는 넘을 스마트폰에 설치하니까 폰에서도 회사 메신저에 접속이 된다.

우리나라의 여러 회사/기관들이 모두 나름의 메신저를 사용하고 있다. 물론 전용 메신저니까 구축 비용도 비쌌을 거고 기능도 훨씬 많겠지만...

이렇게 오픈소스로도 전용 메신저들이 부럽지 않은 회사전용 메신저를 구축할 수 있다.