우분투에 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이면 더 좋겠지만 어차피 게임내에서 자체 클라를 제공하기 때문에 일단 이정도로 만족하고 있습니다.