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 【ユーザ名】

呼ばれたユーザ側の画面には以下のように表示されますので、引数なしで "mai" コマンドを実行すると応答できます。

message from nobody@gamera on pts/3 at 00:01 ...
mai: connection requested by 【呼び出し側ユーザ名】. respond with 'mai'
EOF

% mai
(チャット開始)

ローマ字変換規則

チャット中、ローマ字を入力すると、自動的にひらがなに変換されます (ただしクライアントが"-r" オプション付きで起動された場合にはローマ字変換されずに 送信されます)。ローマ字変換の際はスペースで区切られた部分が1単語として扱われます。

便利な機能

チャット中に他のユーザーを呼ぶ

チャット中に "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" を設定しておくと、会話内容をログファイルに記録 することができます。 また、チャット中いつでも "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 コマンド(クライアント)を実行するために必要なライブラリ バージョンの新しい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" は一般ユーザでも実行できます。コマンドラインから

% 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 のプロトコル

履歴(上が新しい情報)

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