Webminのモジュールをrubyを交えて書いてみた

前回の話

rubyperlが混在したwebminモジュールを作った。rubyで書いたスクリプトでformからの入力を取れるようになった。現状、get限定。

perlスクリプトrubyスクリプトを2ファイル1組にしている。画面遷移も可能。

以下が例。

例の説明

  • ユーザー名を入力すると、そのユーザーについての情報をあれこれ表示するWebminモジュールを作る。
  • https://a_host_of_webmin:10000/a_module/index.cgiでアクセスするとする。
  • サーバーのOSはRedHatLinuxで、Webminをrpmで入れているとする。
  • /usr/libexec/webmin/a_module の下に置くべきファイルは、以下で例示する2ファイルの他にもいろいろあるが、純perlでモジュール作成する場合と同じなので、説明省略。

perl部分

以下、/usr/libexec/webmin/a_module/index.cgi

#!/usr/bin/perl
do '../web-lib.pl';
&init_config();
&header($text{'index_title'}, '');
print `erb ./index.rhtml`;
&footer('/', $text{'index'});

ruby部分

以下、/usr/libexec/webmin/a_module/index.rhtml

<% 
require 'cgi-lib'
input = CGI.new
%> 
<form action="index.cgi" method="get">
<table border='0'>
<tr><td>User:</td><td><input name="user" size=20></td><td><input type="submit"></td></tr>
</table>
</form>
<hr>
<%
if input['user'] && input['user'] != ''
  # userについての情報をいろいろと表示する
end
%>

今後の課題

  • perl部分への標準入力をruby部分に渡して、postも対応できるようにする。
  • セキュリティ的にどうなのか確認する(https://a_host_of_webmin:10000/a_module/index.rhtmlにアクセスしたらやばいことにならないか?など)

今後の課題じゃないこと

  • 社内限定の管理アプリなので、Webminの多国語化の仕組みは無視。