jasagiri @ ウィキ
LiveConsole
最終更新:
jasagiri
LiveConsole
Summary
LiveConsole は TCP 接続上で IRB を提供するライブラリです。もしあなたがこれをあなたのアプリケーションに追加したら, あなたのアプリケーションで任意のコードを実行できます。例えばこんなことが出来る:
- 実行中のアプリケーションの状態を監視する。
- アプリケーションの状態を変更する。
- 再起動無しに直接パッチを当てる。
- netに繋がる誰でも出来るので localhost 以外では使わないように :)
診断ツールやデバッグツールとして利用でき、友達やLisp使いを感動させたりもできるでしょう。
Stern セキュリティ警告。 Grrr.
バグセクションを見てください。 このライブラリを不用意に使用すると多大なセキュリティホールを作るかもしれません。特に認証機能が実装されるまでは。
Installation
rubygems でインストールできます。
gem install live_console
または 素の古い setup.rb:
ruby setup.rb install
.gems/.tar.gzs/.tar.bz2s は Rubyforge Project ページにあります。
LiveConsole の使い方
LiveConsole をあなたのアプリケーションで使うのはとても簡単です。:
require 'rubygems' require 'live_console' lc = LiveConsole.new 1337 # Creates a LiveConsole on port 1337 # We're not yet listening on the port. We need to start it up: lc.run # Starts the LiveConsole thread # At this point, users can connect and get an IRB prompt. lc.stop # Kills the LiveConsole thread # Now, no one can connect.
LiveConsole の簡単な使い方の例は doc/lc_example.rb を見てください。単にこうするだけです:
$ ruby doc/lc_example.rb 4000 test # Then, in a different shell: $ netcat localhost 4000 irb(main):001:0> puts 'Wow, magic!'
You can get creative about it, サーバでハンドルされない例外が発生し、LiveConsole#stop が呼ばれたときだけ LiveConsole は実行されます。診断して問題を解決できます。
バグ
LiveConsole は Readline サポートのようにコンソール上の IRB の多くの正確さを欠いています。
exit や ^D やシグナル (INT や STOP) は動作しません。接続していたプログラムをただ終了させるだけです。
まだ認証は近い将来に計画されていますがサポートされていません。 これはセキュリティリスクを作ります。: ソケットに接続できるだれでもプロセスを所有しているユーザとして任意のRubyコードを実行できます。事実、 localhost上で実行することでさえ信頼されていないユーザと box にのるのは(?)セキュリティ上の問題かもしれない。 もし何をしているかわからないようなら、このライブラリは使用しないでください。
README には Lisp 使いへの中傷を含んでいます。PDP-10 のマニュアルについて非難するのはやめてください。私はあなたの言語と胸のラムダのタトゥーが好きです。(?)
とにかく、 LiveConsole には今のところわかっているバグもありませんが、アルファバージョンです。 バグレポートやパッチは歓迎します。