YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-03-20 (水)


[一語一絵/IT系]

rNoteにメール投稿 / 2006-07-30 (日)

いよいよ今朝の最低気温は26.1℃。昨日とは僅か1℃の差だが、格段に寝苦しく汗だくで目が覚めた。最高気温も34℃で特に風の無かった午前中は厳しかったが、なんとかエアコン運休継続中。

さて昨日から奮闘していた[External]rNoteのメール投稿スクリプトがひと段落。遅ればせながら、これでケイタイメールによる更新が可能になる。

結局、メールから展開する部分はPerlで組み(~/bin/rnote_mail_entry.pl)、肝心要の[External]rNoteの更新はrnote.phpのFORMによる管理者認証をバイパスする入口を作成し、phpのコマンドライン版から呼ぶ形で実装。管理者認証の代替としては~/bin/rnote_mail_entry.plからワンタイムパスワードに似たマジックナンバーを引数で渡すようにして、リモートからの歓迎しないアクセスをガードする。

この手のツールで一番厄介なのがプロセスに依存するアクセス権限。普段[External]rNoteの更新はapacheの権限でphpが実行されるので、phpコマンドライン版もphpcliという別名でコピーし、setuid/setgidビットをセットして必ずapacheの権限で動くようにする。

~/bin/rnote_mail_entry.plのポイントとしては、これまでJcode.pmに頼っていたマルチバイト文字列変換モジュールを、Perl 5.8から標準として採用されたEncode.pmに乗換え。毎度ながらPerlは欲しい関数がどのパッケージに入っているのか探すのが大変だ。画像のリサイズは[External]ImageMagickのconvertで対応。

久々のPerlだった事もあり丸二日を費やしたが、結果的には200 step程と思ったよりコンパクトで済んだ。

【参照】
●情報処理推進機構セキュリティセンター http://www.ipa.go.jp/security/
IPA ISEC セキュア・プログラミング講座
7-3. setuid は慎重に
●hiko.pkg http://www.hikoboshi.org/
Perl 5.8.x における日本語コード変換のメモ
●Tsuchiya Masatoshi's WEB Site http://www.namazu.org/~tsuchiya/
Perl-5.8 覚え書き