UNIX用リアルタイムチャット mai(過去のバージョン Version 2.19 まで)
UNIX用リアルタイムチャット mai(Version 2.19 以前)
ここは過去のバージョンのページです。
最新版は
http://www.proc.org.tohoku.ac.jp/~hoshi/mai/ を参照してください。
スクリーンショット
mai は UNIX 用ローマ字リアルタイムチャットプログラムです。
基本操作は talk, phone, okphone 等と同じで、1文字入力するたびに画面が更新されるため、
リアルタイムでのチャットが可能です。
perl スクリプトにより実装されたサーバ/クライアントシステムでシンプルです。
また、乱入機能、ログ機能、バックスクロール機能などが追加されています。
Linux-2.2.16, FreeBSD-4.5 で動作することを確認しました。
・ FreeBSD のOS付属の write コマンド関係の問題で、maid を起動した端末を終了すると、ユーザの呼び出しができなくなるという問題が報告されています。現在対策中です。
→ Version 2.19 以降、 maid スクリプトをカスタマイズした上で($BUILTIN=1; に変更)、maid を root 権限で起動することにより、write コマンドを使わずにユーザを呼び出すことができるようになりました。
・ Version 2.18 から、"maid" は自動的にバックグラウンドで実行されるようになりました。"&" をつけると起動できませんのでご注意ください。
・ Version 2.20 から、ncurses と Curses.pm がインストールされていないマシンでも動くようになりました。
|
使い方
ユーザの呼び出し
コマンドラインから呼び出したい相手のユーザ名を指定して "mai ユーザ名" コマンドを
実行します。
呼ばれたユーザ側の画面には以下のように表示されますので、引数なしで "mai"
コマンドを実行すると応答できます。
message from nobody@gamera on pts/3 at 00:01 ...
mai: connection requested by 【呼び出し側ユーザ名】. respond with 'mai'
EOF
% mai
(チャット開始)
|
- チャットを終了するときは Ctrl-c を入力して下さい。 "終了しますか? (y/n)" という問いに
"y"と入力すると切断されます。
- チャット中、画面サイズが変更されたり画面が乱れた場合には Ctrl-l を入力すると
再描画されます。
- BSキー(DELキー)で1文字消去できます
- 1分間以上発言がなかった状態で改行すると、相手にも自分にも BEEP が鳴ります
(自分のBEEPはMAIBEEP環境変数に0をセットすることで抑制可能)。
ローマ字変換規則
チャット中、ローマ字を入力すると、自動的にひらがなに変換されます
(ただしクライアントが"-r" オプション付きで起動された場合にはローマ字変換されずに
送信されます)。ローマ字変換の際はスペースで区切られた部分が1単語として扱われます。
- 「ん」は n' (n + シングルクオート)です。
- ローマ字に変換できない単語は変換されず、アルファベットのままになります。
- ダブルクオート "" で囲った部分は変換されず、アルファベットのままになります。
- 単語がすべて大文字だと変換されず、アルファベットのままになります。
- 単語の最初が大文字だとひらがなではなくカタカナに変換されます。
- EUCの2バイト文字を入力するとそのまま送信されますので、MS-IME, kinput2 等
で直接日本語を入力することもできます。
便利な機能
チャット中に他のユーザーを呼ぶ
チャット中に "ESC x call 【ユーザ名】" を入力すると、現在のセッションにユーザを呼ぶ
ことができ、3人以上でのチャットが行えます。"ESC x cancel 【ユーザ名】"で呼び出しを
キャンセルできます。
実行中のチャットに参加する(乱入機能)
コマンドラインから引数なしで "mai" コマンドを実行すると、
現在行われているチャットの番号(セッションID)の一覧が表示されますので、
乱入したいセッションIDを指定して "mai 【セッションID】" を実行すれば、そ
のセッションに加わることができます。
乱入を禁止/許可する
チャット中に "ESC-l"(Lock) を入力すると、現在のチャットへの乱入が禁止されます
(引数なしで mai を実行したときのセッションIDも表示されなくなります)。
"ESC-u"(Unlock) を入力すると乱入が許可されます。デフォルトは乱入許可です。
スクロールアウトした会話を見る
チャット中に "Ctrl-b"(Backlog, トグルになっています)を入力すると、画面下部に新
しくウインドウが開き、現在までの会話内容が表示されます。このウインドウは↑,↓,
PageUP,PageDownキー等でスクロールさせることができ、スクロールアウトした
過去の会話を見ることができます。このウインドウは自分以外のユーザには見えません。
ファイルにログを残す
チャット開始前に、環境変数 "MAILOG" を設定しておくと、会話内容をログファイルに記録
することができます。
- 環境変数 MAILOG にファイル名を指定した場合
(csh系なら "setenv MAILOG /home/user/logfile.txt")
ファイル "logfile.txt" に会話内容が追記されていきます。
- 環境変数 MAILOG にディレクトリ名を指定した場合
(csh系なら "setenv MAILOG /home/user/logdir/")
ディレクトリ "logdir" 以下に日付をファイル名としたログファイルが生成していきます。
同じ日に複数回 mai を使用した場合はファイルに追記されていきます。
また、チャット中いつでも "ESC-s 【ファイル名】"(Save) を入力すると、現在までの会
話を指定したファイルに保存することができます。
その他
"mai -h" コマンドを実行すると機能一覧が表示されます。
ダウンロード
Version-2.19
mai Version-2.19(tar+gzip)
mai Version-2.19(lha)
Version-2.18
mai Version-2.18(tar+gzip)
mai Version-2.18(lha)
Version-2.17
mai Version-2.17(tar+gzip)
mai Version-2.17(lha)
【アーカイブに含まれるファイル】
mai: クライアントプログラム
maid: サーバプログラム
curses_version/: cursesのバージョンチェック
動作環境とインストール
概要
本チャットシステムは サーバ(maid), クライアント(mai)の対で動作します。
"mai","maid" とも Perl スクリプトです。
チャットを開始するためには、サーバ(maid)がいずれかのユーザの権限で
動かされている必要があります。
キー入力、画面出力はともに EUC であることを仮定しています。
必要なライブラリ
maid コマンド(サーバ)を実行するために必要なライブラリ
mai コマンド(クライアント)を実行するために必要なライブラリ
- perl5
- ncurses Version-4以上(画面制御ライブラリ)
- 上記のncursesライブラリが使える状態でインストールされた
Curses.pm(perl 用の cursesモジュール)
バージョンの新しいLinuxやFreeBSDにはperl5, ncursesが標準でインストールさ
れていますので
(Kondara MNU/Linux 2000とFreeBSD-4.5 で確認)、その場合には
Curses.pm のみをインストールすれば動きます。
そうでない場合には
Curses.pm のインストール前に
ncurses の最新版をインストールする必要があります。mai 自体の実行は一般ユ
ーザでもできますが、ライブラリである ncurses, Curses.pm のインストールに
は root 権限が必要です(一般ユーザがインストールする方法がありましたら教
えてください)。
システムの ncurses のバージョンの確認方法
アーカイブを展開してできたディレクトリの
"curses_version/" 以下に移動し、"make" を実行して実行可能ファイル
"curses_version" が生成し、これを実行したときに "ncurses 4.x.yyyyyyyy"
等と表示されれば、システムには ncurses がインストール済みです。
make できない場合や、"ncurses..." と表示されない場合(古いFreeBSD等)、
表示されるバージョンが低い場合には、ncurses の最新版をインストールする必
要があると思われます。
Curses.pm(perl 用の cursesモジュール)のインストール時の注意
Perlモジュール配布サイト等から"Curses-x.yy.tar.gz" を入手し、展開します。
"perl Makefile.PL" を実行し、生成したファイル "c-config.h" の
"#include " より下の全ての行をコメントアウトしてから
"make" "make install" を実行します。
CPAN を使用して、
全自動でインストール
する方法もあります。
サーバのカスタマイズ
本サイトからダウンロードしたアーカイブを展開してできたファイル "maid" の先頭付近の
# ----- ここはシステムによっては変更が必要です -----
|
という行以下の数行をシステムに合わせて書き換えてください。
"write" コマンドが日本語に対応しているシステムの場合(Linux等)は、この設定により
呼び出しメッセージを日本語にできます。
サーバの実行
mai を使用するためには、バックグラウンドでサーバプログラム "maid" が起動している
必要があります。"mai","maid" は一般ユーザでも実行できます。コマンドラインから
を実行してください。Version 2.18 から、"maid" に "-f" オプションをつけない限り、
自動的にバックグラウンドで実行されるようになりました。
"&" をつけると起動できませんので、旧バージョンからバ
ージョンアップする際は注意してください。
トラブルシューティング
mai 【ユーザ名】でユーザが呼び出せない
呼び出される側のユーザが "mesg y" コマンドを実行した後で呼び出してみてください。
また、maid の先頭付近の $CMD_WRITE, $CMD_USERS 変数に、それぞれ "write","users"
コマンドのフルパスを代入してください。
mai 実行時に以下のようなエラーが出る
IO::Socket::INET: 接続を拒否されました ...propagated at /usr/local/bin/mai line 93.
|
maid が動いていません。チャットを開始するためには、サーバプログラム(maid)がいずれかの
ユーザの権限で動かされている必要があります。
mai 実行時に以下のようなエラーが出る
Can't locate Curses.pm in @INC (@INC contains: /usr/libdata/perl/5.00503/mach
/usr/libdata/perl/5.00503 /usr/local/lib/perl5/site_perl/5.005/i386-freebsd
/usr/local/lib/perl5/site_perl/5.005 .) at /home/hoshi/bin/mai line 17.
|
Curses.pm(perl 用の cursesモジュール)が正常にインストールされていません。
mai を使用するためには Curses.pm のインストールが必要です。
上記の "動作環境とインストール" に従って、Curses.pm をインストールしてください。
mai 実行時に以下のようなエラーが出る
Curses function 'redrawwin' is not defined by your vendor at /home/hoshi/bin/mai line 336.
|
Curses.pm(perl 用の cursesモジュール)をインストールしたときに使用された curses
ライブラリに、必要な機能が実装されていませんでした。
最新版の ncurses をインストールした上で、そちらのライブラリを使用するようにして
Curses.pm を再インストールしてください。
maid 実行時に以下のようなエラーが出る
IO::Socket::INET: アドレスは既に使用中です ...propagated at /usr/local/bin/maid line 50.
|
既に maid が実行中であるか、maid の待ち受けポート(11167)が他のサーバプログラムに
よって使用中か、接続中のクライアントが残っている時に maid を終了した可能性があり
ます。最後の例の場合は、接続中の
mai を全て終了し、しばらく時間を置いてから maid を再起動してください。
注意点
- mai 実行中に Ctrl-\ を入力すると core dump する場合があります
- mai はログファイルのパーミションを変更しません。他のユーザからログを
読めない状態にするには、ログファイルの Readパーミションを手動で落としてお
く必要があります
- maid スクリプト内で "$OTHERHOST=1;" を実行し、クライアント側で "-s"
オプションを指定する事により、他のマシンからの接続を受け付けることができま
すが、現状ではあまり有用な機能ではないので、初期値は "$OTHERHOST=0;" とな
っています。ファイアウォール内など、安全なネットワークで使用する時のみ
"$OTHERHOST=1;" を指定して下さい。
参考: mai のプロトコル
履歴(上が新しい情報)
2002/07/05 Version-2.20 公開。mai が Curses.pm に依存しなくなった。
2002/06/28 Version-2.19 公開。write 問題対策。ネットワーク呼び出し機能追加
2002/06/28 Version-2.18 のアーカイブの内容修正
2002/05/18 Version-2.18 公開
2002/04/01 CPAN による Curses.pm のインストールの解説をリンク
2002/03/31 Version-2.17 公開
戻る
hoshi@proc.org.tohoku.ac.jp