2008年5月の投稿

2008-05-07
晴れ

携帯対応プラグイン Ktai Style バージョン 1.34 リリース

Ktai Style 1.32 サンプル画面

絵文字対応の WordPress 携帯対応プラグイン「Ktai Style」のバージョン 1.34 をリリースいたしました。今回はセキュリティー修正を含んでおり、バージョン 1.20 以降の利用者はこのバージョンへの更新が必須です。変更点は以下の通りです。

  • WordPress 2.3.3 以前において「絵文字投稿を許可する」設定にした場合、投稿本文にシングルクォート (‘) を含む場合に、投稿編集に失敗する不具合を修正しました。*** これは Ktai Style 1.20 〜 1.33 に存在するセキュリティー欠陥です ***
  • WordPress 2.5 以降において、「絵文字投稿を許可する」設定でコメント編集をするとシングルクォート (‘) の前にバックスラッシュ (\) がついてしまう不具合を修正しました。
  • ウィルコム絵文字で 0xF052 は「バイク」が正当なため、変換テーブル等を修正しました (従来は「船」だと思っていました)。
  • Nokia 端末の判別で取りこぼしがあったのを修正しました (ソフトバンク X02NK など対応)。
  • 投稿一覧で、ワード検索が正常に動作していなかった不具合を修正しました (Ktai Style 1.30 でエンバグ)。
  • テンプレートタグ ks_mb_get_form() において、絵文字投稿の設定によってエスケープを外す/外さないの違いがあった問題を修正しました (エスケープありのままとしました)。
ダウンロード: ktai_style134.tar.bz2 (196.4 KB)
バージョン 1.35 をリリースしました。

今回は単純なバグ修正ではなく、セキュリティー修正を含んでいます。ただし、攻撃を行うには当該ウェブログに投稿できる権限が必要なため、影響は軽微と思われます。編集機能のバグは、セキュリティー欠陥に繋がる恐しいものだったのですね〜〜。

正直なところ、WordPress の API に与えるデーターを「DB 用にエスケープしたものにする」というルールがいまいちに思います。WordPress 2.5 以降はプリペアードステートメントが導入されたので、「エスケープしないデーターを与える」方が自然に思えるのですが、そうするとプラグインの対応が大変になるかもしれません。だいたい、wp-settings.php で $_GET, $_POST をまるごと magic_quote しているのは、安全ではあるもののいまいちですよね ;-)

Ktai Entry 0.8.1-beta1 (テスト版)

ゆりこ による 19:57:49 の投稿
カテゴリー: WordPressハック
タグ: ,

WordPress メール投稿プラグイン「Ktai Entry」の次期ベータ版(というか)テスト版を配布します。これは、「画像つきメールを送信すると、画像がメディアライブラリに登録されるものの、投稿本文にはテキストしか入っていない」という問題を解明するためのバージョンです。テスト版なので以下のような対応となっています。

  • (APOP ではなく) POP の場合、メールボックスに新着メールがないとき Bad Gateway (== POP 設定不良) として処理していた問題を改善しました。
  • 0.7.1 → 0.8.0 で省略してしまった処理を復活して様子を見る。
  • ログを強化。デフォルトでログ機能が有効です。
ダウンロード: ktai_entry081-beta1.tar.bz2 (62.5KB)
テスト版その2を出しました。

不具合が発生している方は、ぜひ試用頂いて、確認を願います。不具合が発生していない場合は、通常の 0.8.1 リリースまでお待ちください。(通常の 0.8.1 ではログ機能がオフになるだけの予定ですが ;-)

[追記] 環境によっては、「画像が出ない」問題がまだ発生するようです。さらなる対処版を CVS に上げましたので、上記アーカイブから post.php だけ差し替えると、使うことができます。

[さらに追記] 1.00 までは「ベータ版」なので、ベータ版のベータ版となり、意味不明なので「テスト版」という名称にしてみました。

2008-05-08
晴れ

Ktai Entry 0.8.1-beta2 (テスト版その2)

ゆりこ による 23:54:59 の投稿
カテゴリー: WordPressハック
タグ: ,

WordPress メール投稿プラグイン「Ktai Entry」テスト版その2を配布します。不具合が発生している方は、ぜひ試用頂いて、確認を願います。不具合が発生していない場合は、通常の 0.8.1 リリースまでお待ちください。

  • 画像つきメールを送信しても画像が挿入されていない対策を強化したつもり。
  • タイトルが文字化けしないよう、Subject の文字コードを厳密に判定。
  • 誰かがウェブログを閲覧したタイミングで外部メールボックスを読み出たとき、取り込み処理が中断してしまう。
ダウンロード: ktai_entry081-test2.tar.bz2 (63.0KB)
バージョン 0.8.1 リリースしています。

3番目については、retrieve.php を GET メソッドで呼び出すことにより非同期処理を行なっていたのですが、返り値を読んでないためサーバーが「接続を中断した」と判断して処理をやめてしまうことがあるようです。そこで、<head> 要素内で retrieve.php を「JavaScript として」呼び出すことにしました。ウェブブラウザーが retrieve.php を呼ぶため、より確実な非同期処理となります。すべての閲覧者が JavaScript オフの場合はメール読み出しがされませんが、今どきはそういうことはほとんどないでしょう。

副作用として、retrieve.php を通常のウェブブラウザーからアクセスしたとき、メールボックス読み出し時間間隔を越えていた場合は、メール読み出し処理を行なってしまいます。

2008-05-09

Ktai Entry 用カスタマイズ例がバグってた

ゆりこ による 03:20:18 の投稿
カテゴリー: WordPressハック
タグ: ,

Ktai Entry で、画像付きメールを送っても画像が出ない」バグですが、どうやら、「LightBox 用に、rel=”lightbox”属性を追加する」というカスタマイズに提示したコードがバグっていたのが原因でした。大変失礼いたしました。現在は修正しましたが、当初は以下のようになっていました。

function ke_rel_lightbox($html, $id, $size) {
	if (preg_match('/rel=["\']/', $html, $match)) {
		$html = str_replace($match[0], $match[0] . 'lightbox ', $html);
	} elseif (! preg_match('/rel=/', $html)) {
		$html = str_replace('<img ', '<img rel="lightbox"', $html);
	}
}
add_filter('image_link/ktai_entry.php', 'ke_rel_lightbox', 10, 3);

これでは、返り値がないので、フィルターの結果が「空」になってしまいます。return $html; を追加すればよさそうですが、2つ目の str_replace もマズくて、これだと <img rel="lightbox"src="..... のように rel 属性と src 属性が繋がってしまって不正になり、消えてしまいます。置換文字列は '<img rel="lightbox" 'と末尾にスペースが必要です。

カスタマイズ用のコードも一通りテストはしていますが、lightbox 用コードはテストしていなかったんですよね…… (post.php で alt 属性を追加するコードをコピペしたものなので OK と判断したため)。この不具合が多くの人で発生したということは、Lightbox を使っている人が結構多いわけで、こういうフィルター関数を使わなくても付与できるように、コア機能として取り込んだ方がいいのかもしれません。

2008-05-10
晴れ

ふせん大喜利なるイベント

ゆりこ による 00:14:17 の投稿
カテゴリー: イベント
タグ: ,

NHK「ケータイ大喜利」をリスペクトした「ふせん大喜利」というイベントを見つけました。

  • 日時: 5月24日(土) 18:30 開場
  • 場所: 阿佐ヶ谷ロフトA
  • 料金: 入場料1000円
  • 内容: 来場者およびゲストによる大喜利を行う。投稿はホワイトボードに「ふせん」を貼り付けるというローテクな仕組み。
  • 司会: DJ急行、セラチェン春山

なかなかオモロそうなのですが、カフェ玖伊屋の日とかぶっているのが厳しいですね。お題 (PDF) も事前に発表されていて、参加しやすいのではないでしょうか。

「常識力クイズ」は、わたしが好きな問題ですね。「4人の大工が6日働いて出来上がる家があります。この仕事を3人でするとどうなりますか?」だったら「1週間かかって4人目の大工を探し、それから6日で仕上げるため13日かかる」「屋根は4人いないと持ち上がらないので、永久に完成しない」「実は1人1人交代で作るため、3人でも6日で完成」あたりの回答でしょうか。ひねくれた答えにはなっていますが、笑いの要素がちょっと足りないのがいまいちか‥…。

マジックショーねたは、ケータイ大喜利2008年2月3日放送分と同じですが、今考えるなら「鳩じゃなくてカラス」「国旗が全部バングラデシュ」「トランプ裏面に小さく数字が書いてある」あたりでしょうか。このとき生放送には「万札貸したら燃やされて返ってこない」というのを送りましたが、採用された「客から借りた千円札を返さない」に比べるとヒネりすぎでしたね……。

WordPress メール投稿プラグイン Ktai Entry 0.8.1 リリース

ゆりこ による 01:02:03 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

WordPress 用メール投稿プラグイン「Ktai Entry」のバージョン 0.8.1 をリリースいたします。変更点は以下の通りです。

  • 投稿ステータスの指定に PRIVATE (未公開) を指定できるようにしました。
  • 外部メールボックスを読み出すトリガーを、init フックから wp_head フックに変更して、より確実にメッセージ取り込み処理を行えるようにしました。
  • Basic 認証、Digest 認証で保護しているウェブログでも、自動的に外部メールボックスを読みに行けるようにしました。
  • APOP ではなく POP を利用している場合、メールボックスに新着メールがなくても「サーバーエラー」(Bad Gateway) として処理していた不具合を修正しました。
  • 投稿タイトルが文字化けしにくいよう、文字コードの検出を厳密にしました。
  • 附属ドキュメントの「LightBox 用に、rel=”lightbox”属性を追加する」のコードがバグっていたのを修正しました。(画像つきメールを送信しても、投稿にはテキストしか反映されない不具合の原因)
ダウンロード: ktai_entry081.tar.bz2 (63.6 KB)
バージョン 0.8.2 をリリースしました。

今回は主にバグフィックスです。うまくメールが取り込まれない問題に対処するため、定期的に外部メールボックスを読みに行く仕組みを根本的に変更して、wp-shot に近い方向にしました。このため、メールボックスを読みに行くタイミングにはまると、画面表示が遅くなります。

また、0.8.0 では画像が出ないという問題が多発しましたが、これはカスタマイズ用サンプルコードにバグがあったのが原因で、Ktai Entry 本体の問題ではありませんでした。0.7.1 でも発生するはずですが、わざわざ戻して「発生するか確認」された方はいないようでした (追記: yutaka さんとこでは 0.7.1 に戻すと OK だったようです。うーん謎)。おそらく、0.8.0 にアップグレードしたと同時にカスタマイズを入れた人がほとんどだったのでしょう。ある意味ドキュメントのバグと言えます。

今回はテスト版を出したりして、多くの方のご協力を仰いでいます。まことにありがとうございます。だいぶ安定するようになっていますが、まだまだなところがありますので、今後もよろしくお願いします。

次はいよいよ SSL 対応して Gmail をサポートすることとします。そうなれば、ドコモ、ソフトバンクでも絵文字対応できるかもしれないので、調査してみます。それから、デコメ対応を試みますが、実はデコメ対応端末はドコモ、ソフトバンクしか持ってないので、au, WILLCOM 対応はかなり後回しになるでしょう。(防水、Bluetooth、電子コンパス対応でデコレーションメール対応端末はまだ存在しないので機種変更できず、対応はかなり先になりそう……)

Ktai Entry は Gmail 対応してた

ゆりこ による 12:03:18 の投稿
カテゴリー: WordPressハック
タグ: ,

なんと、Ktai Entry は SSL に対応していました。すなわち Gmail が使えるということです。ただし、PHP 自体が openssl 対応と設定されている必要があります。Gmail を使うには、「メールでの投稿」を以下のように設定すれば OK です。ログイン名は「@gmail.com」が必要です。APOP のチェックは外してください。

メールサーバー
ssl://pop.gmail.com
ポート
995
ログイン名
example@gmail.com
パスワード
(パスワード)

Gmail 側でも、POP アクセスを設定しておきます。新しく Gmail アカウントを取らず、既存アドレスと兼用するときは、「今後受信するメールで POP を有効にする」にしてください。

そして、Gmail は postfix 流の拡張アドレスが使えるので、適当なランダム文字列 ramdomを追加した「example +random@gmail.com」が有効です。誰にも推測できない文字列を使って「example+9bf809b25bc76b2e@gmail.com」などのアドレスを作り、これを投稿受付アドレスとすれば安全です。この場合、Ktai Entry オプションの「投稿用メールアドレス」にこのアドレスを記入すれば、通常の Gmail アドレス (example@gmail.com など) に送られたアドレスは無視されます。

ただ、Gmail の POP は通常の POP サーバーと違って仕様が特殊で、DELE コマンドを発行しても削除されないなど、挙動がちょっと違います。なので、通常のメールアカウントと併用するのは避けた方が無難です。新たに Gmail アカウントを取るのがおすすめです。

[追記] iモードから絵文字つきメールを Gmail に送信すると、題名・本文ともに Shift_JIS で送信していました。ということは WILLCOM と同じコードが使えるので、コピペして iモード絵文字対応を作り込みました。とりあえず仮版を CVS に上げましたので、興味ある方は使ってみてください。

携帯から Gmail や Yahoo! メールへ絵文字送信

ゆりこ による 21:23:14 の投稿
カテゴリー: ネットワーク
タグ: , , ,

Ktai Entry がそのままで SSL 使えることが分かったため、Gmail を使えることになりました。そこで、携帯電話から絵文字を Gmail に送信したときの挙動を調べてみました。Yahoo! メールも携帯絵文字の受信に対応しているっぽいので、こちらも調査してみます。

絵文字のエンコード
iモード EZweb S!メール ウィルコム
Gmail に送信 Shift_JIS ISO-2022-JP の変形 ISO-2022-JP (絵文字は〓) ISO-2022-JP + Shift_JIS (Web絵文字だけ Shift_JIS)
Yahoo! メールに送信 ISO-2022-JP の変形 ISO-2022-JP の変形 ISO-2022-JP の変形 ISO-2022-JP + Shift_JIS (絵文字だけ Shift_JIS)

EZweb (au) と WILLCOM は、送信先によらず絵文字が送れます。EZweb は本文は ISO-2022-JP でエンコードされ、絵文字は「Eメール用JISコード」を使います。WILLCOM も本文は ISO-2022-JP でエンコードされ、WILLCOM 絵文字は <#HEART> などのタグに変換、Web 絵文字 (ドコモ互換) は Shift_JIS コードがそのまま入ります。文字コード的には WILLCOM は凶悪仕様ですね ;-) コーディングはしやすいですが。

ドコモ→Gmail は Shift_JIS そのままと、プログラミング的にはやりやすいコードです。ソフトバンク→Gmail は絵文字に対応してなくて、(おそらく) ソフトバンク側で 〓 (ゲタ) に変換してしまいます。これは今後の対応を待ちましょう。

Yahoo!メールは、ドコモ、ソフトバンク両方とも ISO-2022-JP ベースのエンコーディングです。au のように「Eメール用JISコード」が公開されていないので、これは対応に時間がかかりそうです……。

[追記] Yahoo! メールで受信したドコモ/ソフトバンク絵文字ですが、まるで規則性がありません……。「パンチ」の絵文字が同じコードになっているため、Yahoo! メールは EZweb の「Eメール用JISコード」に正規化しているのかも??

ソフトバンク絵文字例
文字 ISO-2022-JP 文字列 16進 Unicode
(^^) }2 0x7d32 U+E002
[パンチ] vN 0x764e U+E00D
[鯨] u) 0×7529 U+E054
[COOL] y9 0×7939 U+E214
[得] vR 0×7652 U+E226
[目] xC 0×7843 U+E419
™ wK 0x774b U+E537
ドコモ絵文字例
文字 ISO-2022-JP 文字列 16進 絵文字番号
♥ x4 0×7834 136
●~ u3 0×7533 154
[クリップ] uY 0×7559 237 (拡37)
☃ u> 0x753e 4
[パンチ] vN 0x764e 153
[チューリップ] v? 0x763f 256 (拡56)

[追記] この調査結果をもとに、Ktai Entry 0.8.2 をリリースしました。また、表の絵文字部分は、今後 Ktai Style が絵文字画像を搭載すれば文字から絵に変わっていきます。

Ktai Entry 0.8.2-beta1 (テスト版)

ゆりこ による 22:46:12 の投稿
カテゴリー: WordPressハック
タグ: , ,

WordPress メール投稿プラグイン「Ktai Entry」のテスト版を配布します。

  • デフォルトでログ機能が有効です。
  • ドコモから Gmail に送った iモード絵文字を認識するようにしました。
ダウンロード: ktai_entry082-beta1.tar.bz2 (64.8KB)
バージョン 0.8.2 リリースしました。

ドコモ端末をお持ちの方はぜひお試し頂けると幸いです。デフォルトでログ機構が有効なので、その点にはご注意ください。そのまま放置すると logs/error.log が巨大になって不具合が起きる可能性があります。

2008-05-11
雨

SoftBank絵文字その1

ゆりこ による 14:40:03 の投稿
カテゴリー: WordPressハック
タグ:

SoftBank絵文字テストその1。
(^_^)(^^)[キスマーク]('_')('')[洋服][ブーツ][カメラ]☎[携帯電話][FAX][パソコン]
[パンチ][GOOD!][No.1!][グー][チョキ][パー][スキー][ゴルフ][テニス][野球][サーフィン][サッカー][魚][馬][車][ヨット][飛行機][電車][新幹線]
?!♥[失恋][1時][2時][時計][4時][5時][6時][7時][8時][9時][10時][11時][12時]
[花見][エンブレム][薔薇][クリスマス][指輪][宝石][家][教会][ビル][駅][ガソリンスタンド][山]
[マイク][映画][音楽][鍵][サックス][ギター][トランペット][レストラン][cocktail][コーヒー][ケーキ][ビール]
☃☁☀☂[月][朝][天使][猫][虎][熊][犬][鼠][鯨][ペンギン](^_^)(^o^)(v_v)(`_`)[ウンチ]