/*******************************
This document is wriiten in EUC code
oni sipd 説明書
2002年7月 ver1.0 Hiroaki Hata
2003年7月 ver1.1 Hiroaki Hata
2003年9月 ver1.2 Hiroaki Hata
********************************/
はじめに
--------
本プログラムはLinux上で動作するSIPサーバです。
他のSIPサーバに比べたときの特徴は、マイクロソフト社の
MSNメッセンジャーのプレゼンス機能に対応しているところです。
本サーバのクライアントにMSNメッセンジャーを複数つかい、
その間でSIP-URLで電話帳を作成した場合には、その電話帳に
登録されている人がオンラインにあるかどうかを画面で確認できます。
また、オンラインになったりオフラインになったりすると、
リアルタイムでその様子がわかります。
インストール準備
----------------
LinuxはRedHat7.2と7.3で動作確認しました。また秋葉原の
PlatHomeから販売されているOpenBlockSSでも動作確認できています。
本プログラムはデータベースにMysqlを使います。Mysqlをインストールし、
rootアカウントでパスワード無しでMysqlにログインできるように
しておいてください。ネットワーク経由でのログインは無用です。
(mysqlは開発環境セットも必要です。mysqlを自分でMakeされたなら
ヘッダやライブラリもインストールされてます。もしRPMでインストール
したなら、開発セット mysql-devel-XXXXX.rpmもインストールしておいて
ください)
インストール
------------
0。ファイルの解凍
適当なディレクトリを新規に作成し、そこでファイルを解凍してください。
$mkdir sipd
$cd sipd
$tar xvfz sipd********.tar.gz
1。Mysqlのスキーマ作成
以下のコマンドでmysqlにデータベースとテーブルを作成します。
$cd mysql
$make
cd ..
2。make
以下のコマンドでバイナリファイルを作成してください。
$cd src
$make
これでsipdというコマンドができたはずです。
もし、mysqlを自分でmakeしたのではなくRPMでいれたのなら
ライブラリーがインストールされていない可能性があります。
本ソフトウェアをリンクするときにはmysqlクライアントライブラリ
が必要になりますので、追加インストールしてください。
ライブラリーのインストールされている場所は,Makefileのなかで
/usr/local/lib/mysql と指定しています。もしここと異なる位置ならば
Makefileを修正してください。
設定
----
sipd.confを編集します。
1)HOSTIDから始まる行には、ひとつ以上の空白もしくはTABをおいて
このSIPサーバを動作させるマシンのIPアドレスを設定してください。
インタフェースが複数ある場合、もしくはアドレスを複数持つ場合でも
アドレスはひとつしか指定できません。
2)DOMAINから始まる行にはSIPのドメイン名(自ドメイン)を指定してください。
例えばhata.ccを指定すると、このSIPサーバにREGISTERできるSIP-URLは
xxxxx@hata.ccのようになります。xxxxxはRFC2654の規定に従う任意の文字列です。
3)PROXYから始まる行には、SIPプロキシーサーバを指定します。本サーバは
自ドメイン宛以外のリクエストを受け取ると、指定されたプロキシーサーバ
にそのリクエストを転送します。
立ち上げ
--------
以下のコマンドで起動します。
$sipd
本プログラムは、デーモンにはなっていません。動作中はプロンプトが返りません
のでご注意ください。
起動にはMysqlのクライアントライブラリが必要になります。mysqlのライブラリ
のインストールされている場所を環境変数 LD_LIBRARY_PATHに代入もしくは、
追加してください。
例えば
$export LD=LIBRARY_PATH=/usr/local/lib/mysql
としてから
$sipd
起動します
1.0から1.1への変更点
--------------------
1.Viaのスタックに対応しました
いままでは、レスポンスはサーバを経由しませんでしたが、1.1からは
レスポンスはまずサーバに返されます。
2.プロキシーサーバに対応しました
自ドメイン宛以外のリクエストを受け取った場合に、指定のプロキシー
サーバに転送できるようになりました。
1.1から1.2への変更点
--------------------
buffer
中継パケットに余計なゴミが付着するバグを修正
notify
NOTIFYのToヘッダに、SUBSCRIBEのFromヘッダに付いていたタグを
つけていなかったため、 NOTIFYがCall Leg Errorになってしまっていた
バグを修正。
notify
Subscription-Stateヘッダはexpires=0の時付加しないように変更
notify
Registerをキャンセルした状態通知のための xpidf+xlmで
<status status=inuse>にする。これで状態は退席中になる。
subscribe
Subscribeをキャンセルした瞬間にNOTIFYを発信していたバグを修正
transfer
自ドメイン宛でもRouteヘッダを処理するように変更
mysql
Fromヘッダに付いていたtag等のオプションをデータベースに格納してい
なかったバグを修正
1.2で分っている問題点
--------------------
マイクロソフト社の最新メッセンジャーには、Windows Messenger(以下WM5)と
MSN Messenger6.0(以下MM6)の2種類があります。SIP対応になっているのは
WM5です。本ソフトウェアのクライアントには、MSNメッセンジャ4.7もしくは
WM5をお使いください。
(1)プレゼンスを通知する NOTIFYメッセージの本体のMIMEタイプには、
application/xpidf+xmlを使っています。WM5の状態は
<status status="open"/>でオンライン状態にできるのですが、オフライン
(赤いアイコン状態)に遷移させる方法がわかりません。
draft-rosenberg-impp-pidf-00.txtのDTDによれば、statusは、この他に
closedとinuseが使えますが、closedでは退席中、inuseでは取り込み中に遷移
して、オフライン状態にはなりません。本ソフトウェアでは、他エージェント
のオフライン化をinuseで通知しています。
(2)WM5では場合によってですが、サインアウトに伴い発せられるREGISTERリクエスト
の応答 200 OKを受け付けなくなる場合があります。プレゼンス機能と関係して
そのような状態に陥ることがあるようです。
200 OKを受信しないので、WM5はREGISTER(expires=0)をしばらく再送を繰り返し
その後のサインアウト状態に遷移します。ユーザからは、サインアウトに暫く
時間がかかるように見えます。このような状態に陥った場合の対策は、見つかって
いませんし、理由も不明です。
partysipのような他のSIPサーバでも、WM5は同様の状態を発生することがあります
ので、本ソフトウェアの問題というよりWM5特有の問題と思われます。
--
(c)Hiroaki Hata Jul 2002,2003
mailto:hata@qc5.so-net.ne.jp
http://www.hata.cc
评论0