삽질하는플머

우분투에 IRC서버 설치후 닉네임 길이와 동접자 조절.

이런저런잡다구리/LinuxHeaven

심플즈 팁란에 올렸던 글... 갑자기 쓸 일이 생겨 옮겨둠. 

http://simples.kr/28949



얼마전 게임채팅에 써먹어볼까 싶어 우분투에 IRC 서버를 까느라 삽질한 내용이 있어서 함 올려봅니다. 

일단 ircd는 ircu 를 사용하기로 했습니다. 설치는 간단히 이렇게..


$ sudo apt-get install ircd-ircu



문제는 여기서부터인데, 닉네임의 최대값이 12자로 되어있군요. 저는 30자가 필요. 

설정 문서에 나온대로 /etc/ircd/ircd.conf 내에 features 안에 다음라인 삽입해 봤습니다. 


features {

 .....

 "NICKLEN" = "30";

};



하지만 이 설정은 ircd-ircu 의 소스중 ircd_def.h 에 정의된 값을 넘을 수 없습니다. 

여기에는 15로 정의되어있기 때문에 아무리 30자를 때려줘도 넘어가지 않지요. 


패키지로 설치한 ircd-ircu 는 지워버리고 소스를 받아 수정해봅시다. 


일단 컴파일 환경을 만들어주고


$ sudo apt-get install build-essential flex autoconf  bison



소스를 내려받아 압축을 풀어줍니다. 


$ wget http://prdownloads.sourceforge.net/undernet-ircu/ircu2.10.12.12.tar.gz

$ tar xzf ircu2.10.12.12.tar.gz

$ cd ircu2.10.12.12



여기서 ./include 안의 ircd_defs.h 에서 NICK_LEN 값을 30으로 수정해줍니다. (41번째 줄)


#define NICKLEN         30



이제 다음과같이 해 주면 닉네임을 30자로 쓸 수 있는 데몬을 얻을 수 있습니다. 


$ ./configure

$ make all



../bin 에 컴파일된 ircd 실행파일이 들어갑니다. 이제 이놈의 버전을 출력해봅시다. 


$ ./ircd -v 

ircd u2.10.12.12

Event engines: epoll_*() poll()

Compiled for a maximum of 1020 connections.



최대접속자가 1020으로 되어있습니다. 아쉬움이 있지요. 

이 내용은 ./configure 실행시 생성되는 config.h 에 기록되며, 

이 때 사용되는 configure.in 을 살펴보면 다음과 같은 값을 받아오도록 되어있습니다. 


ulimit -Hn



한마디로 시스템에서 열 수 있는 파일갯수를 의미하지요. 

sudo ulimit -n 4096 해주면 이 값이 바뀝니다만 재부팅하면 도로묵이죠. 

예전에는 이 값을 늘려주려면 커널을 새로 컴파일해야 했나본데... 전 리눅스 뉴비라 그런건 모르고...

/etc/security/limits.conf 에 다음항목 추가한 뒤 재부팅해봅시다.  


*               hard    nofile            4096

*               soft    nofile            4096



이제 ircd-ircu 를 재컴파일하면 최대접속자수가 늘어난 것을 볼 수 있습니다. 


마지막으로 닉네임에서 한글사용문제... 원래 irc 규정이 닉네임에서는 한글을 못써먹게 되어있습니다. 

한글 패치된 데몬들은 규격외의 물건들인 셈이죠. 

table_gen.c 를 들여다봅시다. 

116번 줄에보면 NTL_RICNK 의 속성을 설정하는 부분이 보입니다. 


moveMacro(NTL_DIGIT | NTL_ALPHA, NTL_IRCNK);

markString(NTL_IRCNK, "-_`");



숫자, 알파벳, 그리고 " - _ ` " 를 추가해주고 있지요. 따라서 여기에 " + / " 를 추가하면 UTF-7 사용이 가능해집니다.


markString(NTL_IRCNK, "-_`+/");



사실 이것도 "+/" 때문에 규약을 어기는 건 마찬가지네요. ㅠㅠ;;

UTF-8이면 더 좋겠지만 어차피 게임내에서 자체 클라를 제공하기 때문에 일단 이정도로 만족하고 있습니다.