2008年7月の投稿

2008-07-15
晴れ

フィードから del 要素を除去するプラグイン Delete Del

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

フィードから del 要素を除去するプラグイン Delete Del というものを作ってみました。当サイトでは、記述の修正に del 要素を多用するんですが、RSS や ATOM では XHTML タグだけ削除されてしまい、意味不明になってしまいます。del 要素の意味を考えると、フィードでは del 要素を削除する方が自然です。

マークアップ
この業者「あどあど」<del>は未だに同じことを続けているようです……</del>が手掛けたサイトでまだ URLGATE オンのサイトがありました。
従来のフィード
この業者「あどあど」は未だに同じことを続けているようです……が手掛けたサイトでまだ URLGATE オンのサイトがありました。
改良したフィード
この業者「あどあど」が手掛けたサイトでまだ URLGATE オンのサイトがありました。

独自ウェブログシステムだった時代は、そういう動作をしていましたが、WordPress に移行してから、その挙動がなくなっていました。なお、Ktai Style では既定の動作となっています。

圧縮ファイルを展開して、PHP ファイルをプラグインディレクトリーに入れて、有効化するだけで OK です。なお、WP-Multibyte-Patch が提供する excerpt 系関数を有効にしている場合は、del 要素の削除が効きません。これは WordPress コアの問題のため、改善はほぼ不可能です。

2008-07-16
晴れ

阪神タイガース優勝マジック点灯せず

ゆりこ による 15:42:28 の投稿
カテゴリー: WordPressハック,阪神タイガース
タグ: ,

昨日、阪神タイガースがスワローズに勝てば優勝マジックが点灯するはずだったのですが、残念ながら 0-6 で負けてしまいました。マジック点灯すれば、2005年みたいに当サイトでカウントダウンをしようと思っていましたが、まだ準備ができてないので、マジック点灯が先になったのは渡りに船でした ;-)

2005年は、手書き HTML でやっていましたが、今回はプラグインまたはウィジェットを作ろうと思っています。本当は、阪神タイガース公式サイトにアクセスして、成績から優勝マジックを自動計算したいところですが、各チームごとの残り試合数を「試合日程」から算出しなければならず、なかなか骨が折れます。ということで、とりあえずはマジックナンバーを手動入力させる方向で考えています。

今回は番号が50個ぐらい必要なので、数字ロゴは大量生産かなーー。

複数プラグインの有効化・無効化に未対応

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

先日リリースした Ktai Style 1.42 ですが、WordPress 2.6 対応が不十分だったことが分かりました。それは、複数プラグインの有効化・無効化に対応していないという問題です。Ktai Style を有効にしたとき、ログインセッション保存用のテーブルを作成し、無効にしたときテーブルを削除するのですが、複数有効化・無効化を検知していないのです。このため、Ktai Style を1つだけ無効にし、その後、他のプラグインとまとめて有効にしようとすると、携帯電話からログインできなくなってしまいます。

WP_CONTENT_DIR を移設したときの対策も思いつきましたので、それらを含めた 1.43 を WordPress 2.6 日本語版が出てからリリースすることにしましょう。Ktai Style の日本語表示は、WordPress 自体の日本語表示に一部頼っていますので、WordPress 2.6 の日本語リソースの出来具合をみないことには、Ktai Style の日本語リソースを調整できないのです……。

2008-07-17
晴れ

SOMY 製プラグインはインストール禁止

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

SOMY プラグインがリストアップされた画面

かつて、WordPress 向けに有用なプラグインを提供されていた SOMY さんですが、SOMY さんが制作したプラグインすべてに、セキュリティー欠陥があることが分かりました。それは「プラグインの PHP ファイルに script 要素が埋め込まれていて、WordPress 2.0.x 以前 (2.0 を含む) で、管理画面のプラグイン一覧でリストされたときに実行されてしまう。」というものです 。プラグインをインストールするだけで発生し、停止していても script が実行されます。

画面のバージョン数字の部分に script 要素があって、XHTML ソースは次の通りです。

<td class='vers'>1.0<script src="http://wp.somy.jp/up_check/?f=logined-publish&v=1.0"></script></td>

この script 要素は、おそらくバージョン確認が目的だと思われます。今のところ、サーバー側 API が停止しており、何の反応もありませんが、将来 wp.somy.jp がクラックされたり、SOMY.JP ドメインが失効して他人に渡ったりして、悪意あるコードが設置された場合は非常に危険です。なお、WordPress 2.1 以降では、script 要素が削除されてから管理画面に表示されるので安全です。

対象プラグインは以下の通りです。

[このセクション追加] WordPress 2.0 以前で当該プラグインを使用している場合は、WordPress の管理画面を *開かずに*、FTP/SFTP ツール等で、サーバーのプラグインディレクトリー (wp-content/plugins/) から当該プラグインを削除してください。管理パネルでプラグインを無効にする必要はありません (というか、管理パネルに入ると危険です)。

以下のツールは、厳密にはプラグインではなく、WordPress のプラグイン一覧にリストアップされないので、この問題はありません。しかし、別のセキュリティー欠陥が存在する可能性は否めません。

ドキュメントに「プラグインには、バージョンチェック用の JavaScript が入っています」という記述があればマシなのですが、そういう記述が一切ないため「バックドア」と認定していいでしょう。SOMY さんは去年あたりから活動を停止されており (2007年9月9日のコメントが最新)、プラグインの更新もされていません。リリースされたプラグインはすべて古くなっており、WordPress 2.3 以降に対応していないものも多くなっています。このため、すでに「SOMY 製プラグインは (古いため) 使うべきではない」という状態だったのですが、こんなバックドアが埋め込まれているとすれば、「インストール禁止」と言うべきでしょう。WordPress 2.1 以降では問題ないとはいえ、バックドアを作ってしまうような作者のコードは、他の部分も信用しない方が無難です。

SOMY さんが現在活動中であれば、直接連絡するなり IPA に通告するなりして改善をお願いするのですが、そうではないため、この場をもって多くの人に警告するしかありません。その点が非常に残念です。

逆に言うと、この問題は、WordPress 2.0 自体の欠陥とも言えます。2.0 ブランチは一応現役なだけに 2.1 以降での修正をバックポートしてもらいたいのですが……。→ ME 2.0 については自分で直してしまえばいいのだった ;-)

「プラグイン10選」で SOMY プラグインを挙げられている人にピンバックしてみましょうか。おそらくみなさん WordPress 2.1 以降なので安全だとは思いますが。(追記: その他にも使っているユーザーを見つけたら追加します)

[追記 2008-08-20] チケット #7325 を切って報告しましたが、WordPress 2.0 ブランチでの修正は望めそうにありません。「SOMY プラグインというヤバイ例がある」と書いてみたものの、期待薄ですね……。本家が修正しないとしても ME で修正するのは自由なわけですが、あまり本家と差異ができるのは嫌なので避けたいところです。となると、地味に「SOMY プラグインは危険」と告知するしかないのかな。

2008-07-20
晴れ

サーバー復旧

ゆりこ による 17:10:24 の投稿
カテゴリー: 更新履歴
タグ:

サーバートラブルにより、7月19日あさ8時20分ごろから7月20日15時30分ごろまで当サイトが見えない状態でした。7月19日ひる12時ごろには仮サイトを設定しましたが、DNS 伝播の状況が悪くて携帯電話からは仮サイトがなかなか見えなかったようです。逆に、復旧後に通常サイトが見えにくいようです……。みなさまにはご迷惑をおかけいたしました。

なお、トラブルはハードウェアが原因であって、クラッカーに狙われたとかではなさそうです。ということで、これから Ktai Style 1.43, Ktai Entry 0.8.6 のリリース準備をすすめます。

ところで、今回初めてココログを使った別館を運営してみましたが、モブログの写真はサムネールが作られずにそのままのサイズで掲載されるわ、携帯閲覧の表示がしょぼいわで、WordPress + Ktai Entry + Ktai Style よりも低機能に感じてしまいました ;-) Movable Type 系のブログサービスってこんな品質なんでしょうか……。なんかがっかり。

2008-07-21
晴れ

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

Ktai Style サンプル画面

絵文字対応の WordPress 携帯対応プラグイン「Ktai Style」の安定版バージョン 1.43 をリリースいたしました。1.42 からの変更点は次の通りです。

  • span 要素, div 要素の stye 属性 (ビジュアルエディタで付けた文字色などが使用) は携帯出力で削除せずそのまま出力するようにしました。
  • WordPress 2.6 以降で、wp-content/ ディレクトリーもしくは wp-content/plugins/ ディレクトリーを移設した場合に対応しました。ktai_style/wp-load.php の書き換えが必要です。
  • Default テーマなど、本文を途中で切る処理 (テンプレートタグ ks_get_content() で可能) が XHTML 文法違反になることがある事例を修正しました。
  • 複数プラグインをまとめて使用・停止したとき、携帯ログイン用セッション保存テーブルの生成や削除に失敗する不具合を修正しました。また、WordPress 2.1 以前では管理機能が使えないため、セッション保存テーブルを作成しないようにしました。
  • ktai_style フォルダー/ディレクトリーの名前を変更している場合、プラグインを使用停止したとき携帯ログイン用セッション保存テーブルが削除されない不具合を修正しました。
  • is_ktai() 関数の引数に ‘flat_rate’ を与える定額パケット通信に対応しているかどうかを返す機能が正常に働いていなかった不具合を修正しました。
ダウンロード: ktai_style143.tar.bz2 (241.9 KB)
より新しいバージョンが出ています。

今回は WordPress 2.6 での wp-content ディレクトリー変更への対応およびバグ修正です。WordPress 2.6 の全機能には対応しておらず、管理機構の SSL 化などは未対応です。ご了承ください。

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

ゆりこ による 17:48:56 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

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

  • 外部メールボックスの読み出しを「しない」に設定したとき、または、読み出し時間間隔を経過していない場合は、外部メールボックスを読み出すトリガーとなるスタイルシート表示を行わないようにしました。
  • WordPress 2.6 以降で、wp-content/ ディレクトリーもしくは wp-content/plugins/ ディレクトリーを移設した場合に対応しました。ktai_entry/wp-load.php の書き換えが必要です。
  • 本文が同じ内容を投稿しようとするときの重複チェックを強化しました。
  • 添付画像がサーバーに保存できなかったときのエラー処理を改善しました。
  • プラグインを停止したとき、POP3 サーバーのパスワードのみ初期化するようにしました。(従来はすべての設定を初期化していました)
  • 次の独自フィルターフックを追加しました: post_category, post_keywords, image_rotate, post_name, post_date
ダウンロード: ktai_entry086.tar.bz2 (78.3 KB)
バージョン 0.8.7 をリリースしました。

今回は WordPress 2.6 対応の強化および、独自フィルターフックの追加です。WordPress 2.6 の新機能のうち、管理機構の SSL 化には対応していません (外部メールボックスを「すぐ読み出す」などが動かなさそう)。独自フィルターフックは、「VGA 以上の画像でも強制的に縦向きにしたい」という相談があったため、フィルター関数を書けば可能になるようにしたものです。ただし、このフィルター関数はテストしてないので動かなかったらごめんなさい ;-)

WordPress 2.6 対応続き

なんとか Ktai StyleKtai Entry の WordPress 2.6 対応強化 (wp-content ディレクトリーの移設対応) を行ないました。Lightweight Google Maps (LWGM) および Weather Journal も同様の改良を行なっていますが、他に改善したい点があるため、リリースはもう少しお待ちください。

LWGM の方は、固定ページに登録した位置情報が大きい地図ページに出ないという問題・同じ地点に複数マーカーがつくと下にあるマーカーがクリックできない問題に手をつけようとしています。Weather Journal の方は、WordPress 2.5 以降で天気を未設定のまま投稿しようとすると、WordPress の JavaScript の所為で、直前に投稿した他の日の天気が入ってしまう問題が見つかっています。そういう挙動をキャンセルするよう JavaScript を追加する必要がありますが、どう実装すればいいか悩んでいるところです。

また、今回サボりましたが、管理機構の SSL 対応により、クッキーの扱いが変わったり、プラグインのありかを示す URL を取得する新しい API が用意されたりしたので、これを使うようプラグインを修正することも考えています。特に、Ktai Style は管理機能があるため対応は必須です。しかし、日本の携帯電話は、SSL でクッキーを使うときの挙動があやしいため、うまく実装できるかどうかは不安です……。

WordPress 2.6 対応とは違いますが、Ktai Location で「同一地点であるかの判定」が厳しすぎることが分かりました。7月19日に京都駅についたレポートで、本文に埋め込まれた GPS情報URL による位置情報と、写真の EXIF に埋め込まれた位置情報の両方の地図が出てしまっています。Ktai Location が抽出した位置情報が微妙に異なっていたわけですが、これは au 端末が写真の位置情報をもとに作った GPS情報URL の精度が悪いのか、Ktai Location の内部処理が悪くて計算結果が間違っているのか、要調査ですね。

[追記] LWGM ですが、バージョン 1.40 のベータ版を出しました。

2008-07-22
晴れ

Lightweight Google Maps 1.40 ベータ版(その1)

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

WordPress 用 Google Maps プラグイン「Lightweight Google Maps」のバージョン 1.40 ベータ版(その1)を配布いたします。1.30 より大きな変更を加えたため、ベータ版を配布して広くテストを募ることといたします。

  • WordPress 2.0.x に再び対応することにしました。
  • 携帯電話での地図表示は Mobile Eye+, MobilePress にも対応しました。ただし、「この場所の地図」というテキストリンクになります。
  • Ktai Location 1.0.0 以降で導入した、Lat_Long フィールドの第3引数 (高さ) に対応しました。以前のバージョンは非対応のため、高さフィールドを持つ Lat_Long フィールドを認識しない場合がありました。
  • 独立の地図ページにおいて、同一地点に複数の投稿があるときはタブウィンドウにして、マーカーが重ならないようにしました。ただし、微妙に位置情報がズレているときは重なってしまうことがあります。
  • 独立の地図ページにおいて、固定ページで設定した位置情報 (Lat_Long フィールド) を認識してマーカーが打たれるようになりました。従来は、地図ページで打たれるマーカーは、投稿で設定されたものだけでした。
  • WordPress 2.6 以降で、wp-content/ ディレクトリーもしくは wp-content/plugins/ ディレクトリーを移設した場合に対応しました。lightweight-google-maps/wp-load.php の書き換えが必要です。
  • 各投稿に記録された Lat_Long カスタムフィールドをすべて削除する機能がつきました。プラグインの削除時などにご利用ください。
ダウンロード: lw-google-maps140-beta1.tar.bz2 (29.6KB)
ベータ版その2をリリースしました。

WordPress 2.0 対応の復活、携帯電話対応の強化、同一地点のタブウィンドウ化、固定ページに登録した地点の地図ページ表示、WordPress 2.6 対応などなど行なっています。「バージョン 2.0」とも言ってもよさそうですが、そこまで大きな機能強化だと思えないので、通常のマイナーバージョンアップとしておきます。

バージョン 2.0 を名乗るためには、Lat_Long フィールドの内容修正に Google 地図を使えるようにするとか、緯度・経度を指定して地図ページを出したときはスクロールしてもマーカーが出るようにする (現状は範囲外のマーカーは存在しない) とかの対応が必要だと思っています。

阪神タイガースに優勝マジック46点灯!

ゆりこ による 23:04:23 の投稿
カテゴリー: 阪神タイガース
タグ:

優勝マジック46

きょう、タイガースはジャイアンツ相手に4-7で勝利したため、セ・リーグ優勝マジック46が点灯しました!! セ・リーグ史上2番目の早さということです。

ということで、本日から優勝マジックカウントダウンを行います。本当はウィジェットとかプラグインを作りたいのですが、とりあえず手動でテーマに直埋め込みということで。今月中には一般公開して、タイガースファンの WordPress ユーザーのみなさんに配布したいと思います。

[追記] ウィジェットを作成してリリースしました。