これまでTrackbackブロックや公開の切り替え、削除などの管理が行えるのはSuper-Adminに限られていましたが、これをSuper-Admin以外にもできるようにしてみました。複数人でNucleusを利用している場合にはバージョンアップをすることをおススメします。例によって穴が開いている可能性がありますので、おかしな動きを見つけたら教えてください。
※使い方についてはplugins:trackback [Nucleus CMS Japan Wiki]を参照してください。
動作確認はNucleus 3.3(UTF-8)、PHP 4.4.7環境で行っています。
動作確認報告、バグ報告はこのエントリへ、コメント・トラックバックをお願いします。
正式にパッケージングしたりドキュメントを整備いる暇がないのでNP_BBAuthとNP_MetaTags /w AsyncHTTPは僕のプライベートリポジトリからNucleusCMS JapanのCVSに移しておきました。
興味のある方はCVSから落としてみてください。
ここで触れたとおりUSのYahoo!IDにしか対応していませんが、Yahoo!アカウントでユーザーを認証するNP_BBAuthをサクッと作ってみました。欲求不満のリバウンドなのか本気を出してみたら3時間くらいでできちゃいました。中身はNP_HatenaAuthと兄弟という感じです。
† このAPIの雑感
作ってみた雑感ですが、この認証APIはHatena認証APIやTypeKeyとはちょっと違っていて認証したユーザーの生のアカウント名(つまりYahoo!IDのこと)が通知されてきません。通知されてくるのはアカウントのハッシュ値だけなので、これだけではYahoo!のユーザーということしかわからないようになっています。
つまり認証結果のみを純粋に返すだけで、ユーザーに関する個人情報が一切取得できないような割り切ったAPIです。シングルサインオンとして使うのであれば、別途自分のDBにアカウントのハッシュ値と紐付ける形で何らかのプロファイルを持つ必要がありそうです。Buzzurlもアカウント作成時にYahooで認証した後に、Buzzurl側にユーザー名やメールアドレスを入力する必要がありますが、これもこのような事情があるためであると推測されます。
8月中はNucleus関連のエントリを1つも書いていませんでしたが、細かな改良は粛々とやっております。夏場はアクセスがすごかったので負荷対策もさらにあれこれやってみたので、この辺りも余裕ができたらちょっとずつ公開していきたいと思いますので、しばらくお待ちください。
うーん、時間ができるのは仕事のデッドラインがすぎてからかなぁ。
cactiが復活したのでサーバのCPU Usage 2年間分*1を貼ってみます。CPUはPentium4 3GHzで、大半の負荷はNucleusの関連プロセス(apache, mysql, memcached)によるものです。1日あたりのPVはロボットによるアクセスも含めて現在約4万強(1700PV/h)くらい*2です。
グラフを見ると2006年3月末と12月中に大きくCPU Usageが下がっていますが、これはアクセスが下がったわけではなくチューニングを行ったためです。特に後者についてはmemcachedの導入ポイントであり、コア改造によりプラグインオプション、スキン、テンプレート、グローバルオプションがmemcachedにてキャッシュされるようになったことにより、かなりmysqlの負荷軽減が達成できていることがわかると思います。
kimitakeさんにNP_HatenaAuthが動かないという連絡をもらって、いろいろ追跡したら最後にallow_url_fopenがoffだったという結論にたどり着きました。セキュリティ的にはデフォルトはoffである方が好ましいというのはわかるのですが、この問題は結構根が深そうです。
驚いたことにPHP 4.3.4からphp.iniからしかこの設定を変更できなくなってしまいました。(INI_SYSTEMの設定項目になった)誰かがセキュリティ強化を目的として変更したのだとは思いますが、セキュリティも強化できず、有用なリモートファイルアクセス機能も使えなくする非常に拙い変更です。
allow_url_fopenってphp.iniからしかこの設定を変更できないんですね。実は自作のプラグインでもallow_url_fopenに頼ってしまっている部分が結構あってallow_url_fopenがoffだとうまく動かなかったりするんですが、その一方で自前でHTTPの処理をしている部分*1もあるような状態でちょっと統一感がないような状態になってしまっているのですが、この辺りの処理を統一したほうが幸せになれそうです。ということで今後のtodoにいれておきます。
Hatena認証を使ってローカルのアカウントにログインできるようにしてみました。
プラグインオプションを変更していますので、旧バージョンを一旦アンインストールしてからインストールを行ってください。
※使い方についてはplugins:hatenaauth[Nucleus CMS Japan Wiki]を参照してください。
† 2007/07/24追記(v1.1.1)
ローカルアカウントへのログイン部分にバグがあり、正しくログインできなかった問題を修正しました。テスト環境が最終版のNucleus3.3ではなかったため、バグを作りこんでしまいました。
動作確認はNucleus 3.3(UTF-8)、PHP 4.4.7環境で行っています。
動作確認報告、バグ報告はこのエントリへ、コメント・トラックバックをお願いします。
TypeKey認証を使ってローカルのアカウントにログインできるようにしてみました。
プラグインオプションを変更していますので、旧バージョンを一旦アンインストールしてからインストールを行ってください。
※使い方についてはplugins:typekey[Nucleus CMS Japan Wiki]を参照してください。
† 2007/07/24追記(v1.4.1)
ローカルアカウントへのログイン部分にバグがあり、正しくログインできなかった問題を修正しました。テスト環境が最終版のNucleus3.3ではなかったため、バグを作りこんでしまいました。
動作確認はNucleus 3.3(UTF-8)、PHP 4.4.7環境で行っています。
動作確認報告、バグ報告はこのエントリへ、コメント・トラックバックをお願いします。
コメント時のユーザー認証用にNP_TypeKeyやNP_HatenaAuthをリリースしていますが、この機能をNucleusのアカウント情報に結びつけてNucleusの標準認証の代わりに使えないかなと思って少しいじってみたら意外とすぐにできてしまいました。
仕様としては、メンバーオプションを1つ追加して関連付けるはてなアカウントもしくはTypeKeyアカウントの名前が入力できるようにしてあります。結びつけるアカウントはカンマ区切りで複数指定、もしくは「*」で全てのを指定できるようになっています。複数のアカウントで同じアカウントと結び付けた場合にはメンバーidの若い方が優先ということで処理しています。
この機能はサイトのポリシーにかかわると思うので、プラグインオプションにこの機能を有効にするかどうかについての全体の設定もできるようにしておきました。