※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。



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 には今のところわかっているバグもありませんが、アルファバージョンです。 バグレポートやパッチは歓迎します。