Skip to content

masahide/libipmsg

Repository files navigation

IP メッセンジャライブラリ(Unix用)

WindowsのIPメッセンジャーと通信するライブラリ。
このライブラリはスレッドセーフでない。注意が必要。
プロトコルを実装したもので他の言語との実装と通信できるようにShift_JIS限定にはなっていない。
但し、プロトコルの電文中の区切り文字として'\0'を使うことが有るため、
UTF16やUCSの様な、文字コードに'\0'を含む文字コードには対応していない。

このライブラリのバージョンでは、暗号系はOpenSSLのcryptoライブラリを使用するため、
公開鍵はRSA512,1024,2048 共通鍵はRC2-40,RC2-128,RC2-256,BLOWFISH-128,BLOWFISH-256
をサポートできる。(通信先のクライアントの最強強度の暗号をネゴシエートして自動選択する。)
但し、Windows版は(ソース中のコメントによれば)「手抜き」の実装なので最強強度で選択
してしまうと、Windows版は自己の能力を虚偽申請しているので暗号化されたパケットを復号
出来ないことに注意。

Windows版ではRSA512+RC2-40, RSA1024+BLOWFISH128しかサポートしていないが
これはWINCOMPATマクロによりサポートする。(WINCOMPATを定義すると、Windows版の自己能力の虚偽申請に
合わせて暗号化方法を選択する。)

ダウンロード周りファイル名の変換はファイル名コンバータオブジェクトで行う。
ローカルファイルシステムのエンコーディングとメッセージのエンコーディングの相互変換するオブジェクトで、
ライブラリとしては仮想基底クラスのFileNameConverterと変換を行わないNullFileNameConverter(デフォルト)
を提供する。アプリケーションは必要に応じて、FileNameConverterを継承して、ファイル名変換ロジック
を組み込む必要がある。(Windows版はShift_JIS(CP932)、一般のUnixではeucJP or UTF-8だから。)

コマンドオプションの実装や、リトライ等の実装は適当であるので使用には注意が必要。
ログはアプリ側の実装とし、当方は関知しない。

心残り
・全体的にスレッドセーフでない。
・クラスの分割がいまいち。(IpMessengerAgentの責務が多すぎる。
 プロトコルのハンドリングとアプリとのインターフェイスを分離すべき)
・スタック上のインスタンスが多すぎる。もっとヒープ上にとるべき。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published