狐の王国


2004年06月16日(水) [過去の今日]

#1 irchat-pj の DCC

なんかしらん、kernelを2.6系列にあげてからチャット専用に突っ込んであるmuleでDCC SENDできなくなった。ポートとアドレスを固定するためにかなり怪しいhackを仕込んだのでそのせいかしら。

というわけで現実逃避がてらirchat-pjのDCC周りを再点検。特にCで書かれたdccプログラムのソースや挙動を調べて行くと、前回意味のわからなかった、四つ目と五つ目の引数がようやく理解できた。

Usage: dcc file send <filename> <port> <ircserver>

usageにはこうある。四つ目の引数である<port>はDCCにおいて自分がlistenするポート、ircserverは恐らく自分のIPアドレスを調べるために、繋いでるIRCサーバを指定するのだろう。つまり、IPアドレスに関してはこのdccプログラムに任せて、NAT BOXというか、ルータのの内側からDCCをするためにはポートさえ固定してやればいい、ということになる。 *1

しかし、オプショナルな四つ目五つ目の引数はirchat-pjでは利用されてないようだ。せっかくだからきっちり利用させていただき、 DCCポート固定パッチ を作ってみた。

(setq irchat-dcc-port "6667")

とかいう感じでポートを指定してそこに穴を開けておいてやれば、DCC SENDが通る。普通に繋ぐ分にはこれで充分なはずだ。

うちの場合、変な位置にplumを挟んで繋いでいるのでこれだけではダメで、plum.confに、

+ ctcp/dcc/nat.plm
ctcp.dcc.nat.mapping: 192.168.xxx.xxx xxx.xxx.xxx.xxx

という感じでローカルアドレスをグローバルアドレスにマッピングしてやる必要があった。他のマシンからplumに繋いでいる場合でも、それぞれにポートを転送してやり、マッピングしてやればちゃんとDCCが通る。便利便利。

というわけで見事解決、と思いきや、これでもmuleでは動かない。dccプロセスは上がってるのだが、どうにもDCC SENDをサーバに送ってくれないようだ。思い切ってノーマルなirchat-pjを突っ込んでも見たのだが、やはりダメ。要するに2.6カーネル系列上でのmuleの挙動の問題なのかもしれない。コンパイルしなおせば動くのかなあ。まあ、メイン環境がemcws21になっているので、チャット専用Emacsをemacs20-dlにしちゃってもいいのだけども。マルチバイト文字が入ったファイルをDCCできない問題も解決するだろうし。

(@404)


*1: ま、こんなことしなくてもルータがLinux BoxならIRCモジュールで簡単にDCC SENDが通るんだけどね……。
この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ