PEAK XOOPS - News in englishin japanese

Archive | RSS |
  
Poster : GIJOE on 2006-05-19 17:08:09 (9981 reads)

in englishin japanese
システムモジュールは、XOOPS 2.0/2.2では、外すことのできないモジュールです。
そしてシステムモジュールの使いづらさは、XOOPSユーザの長年のストレスでもありました。
特に、ブロック管理・グループ管理・テンプレート管理の使いづらさは特筆すべきレベルであり、それを打ち破ってきたのが、myblocksadminであり、mymenuであり、mytplsadminである、という自負が私にはあります。

そして今日ここで新たにaltsysモジュール&ライブラリのリリースを発表できることを誇りに思っています。

myblocksadminやmytplsadminの弱点はこのようなものです。

- 各モジュールがファイル実体を持つため、メンテナンスが大変
- Duplicatable V3 のような実装にそぐわない
- XoopsCubeで予定されているsystemモジュールの換装に耐えられない

そこで、XOOPS_TRUST_PATHを利用する形で大きく書き直したのがaltsysです。機能的にはこのようになります。

altsys = myblocksadmin + mytplsadmin + mymenu + alpha

「プラスアルファ」ってことで、アルファ版からのリリースです。

altsysは、ライブラリでありモジュールであります。このあたりは、myblocksadminなどと似ていますが、実体のほとんどは、XOOPS_TRUST_PATH内に存在し、ファイルとしての重複がないことに違いがあります。

Duplicatable V3では、そのmymenuに仕掛けがあり、XOOPS_TRUST_PATH/libs/altsysを見つけ次第、ブロック管理やテンプレート管理といったメニューを追加します。先行してリリースしたD3モジュールの第1弾wrapsにも、もちろんこの仕掛けが仕込んであります。

これで私にとっての大きな障害はなくなりました。

D3モジュールを次々とリリースしていくだけです!


Poster : GIJOE on 2006-05-17 03:48:00 (12082 reads)

in englishin japanese
ここ連日、Duplicatable V3について書いてきましたが、そのモジュール第1弾として、WRAPSモジュールをリリースしました。

http://www.peak.ne.jp/xoops/md/mydownloads/singlefile.php?lid=75

これはページラップ専用モジュールで、XOOPS_TRUST_PATH内のwrapsディレクトリ以下のファイルをラップします。

拡張子.htmlおよび.htmのファイルについてのみ、XOOPSヘッダとXOOPSフッタをつけて出力し、それ以外のファイルについては、適切なContent-Typeと共に送出します。これらページラップ化されたファイルはすべて、モジュールアクセス権限の影響を受けるため、グループ毎のアクセスコントロールが可能です。

古くからのXOOPSユーザであればピンと来たかもしれませんが、要するにAuthと同じ動作です。(ただしコードは1行たりとも参考にしていません)

もちろん、D3モジュールならではのギミックもそこかしこにちりばめてあります。XOOPSモジュールを作ったことのある人であれば、ソースコードを見てニヤリとすること請け合いです。(動的生成アイコンとか、PATH_INFOの取得方法とか)

Read more... | 675 bytes more |0 comments

Poster : GIJOE on 2006-05-16 03:58:00 (8017 reads)

in englishin japanese
モジュール用ライブラリとして提供しているmymenuですが、これをDuplicatable V3モジュールに実装するにあたり、機能を2分割することにしました。

(1) メニュー定義ファイルを読み込んで管理画面上部に表示する (純 mymenu)
(2) モジュールの一般設定操作性の向上 (仮称 mypreferences)

冷静に考えてみれば、(1)と(2)は似ても似つかない機能であり、分割することでスッキリしたなあ、という印象です。

(1)は、各モジュールがXOOPS_TRUST_PATH内に持ちます。そして、必要に応じて、メニュー定義の後ろに、myblocksadminやmytplsadminへのリンクを表示するようにします。もちろん、一般設定があれば、(2)へのリンクも表示します。

mypreferencesは、XOOPS_TRUST_PATH内のライブラリとします。

- mypreferences
- mytplsadmin
- myblocksadmin

これらの3大機能は、altsys (Alternative System Library)としてリリースする予定です。
この実体の置き場は、

XOOPS_TRUST_PATH/libs/altsys/ とする予定です。

0 comments

Poster : GIJOE on 2006-05-15 03:24:00 (11374 reads)

in englishin japanese
Duplicatable V2.1モジュールの不満点は、実はもう一つだけあります。

それは、せっかく「複製可能」であるのに、各モジュールインスタンスの動作に多態性を持たせることが出来ない、ということです。

もしあるモジュールインスタンスに多態性を持たせたとしても、モジュールアップデートで書き潰されてしまうからです。

その点、Duplicatable V3であれば、多態性を持たせるのは比較的簡単です。というのも、XOOPS_ROOT_PATH/modules/ディレクトリという、最初にアクセスされるべきファイル群はすべて、単なるフックとなっているからです。


サイト毎にカスタマイズ可能を謳うOSSアプリケーションでは、フック処理が良く利用されます。ある特定のファイルを作ると、そちらに動作が移行するというタイプで、ZenCartなどが有名でしょう。

ただ、このタイプだと、どこでフックをしているのか、調べないと判りません。さらに、本体のアップデートでフック処理が置き換わってしまう可能性もあります。(私自身、ZenCartのアップデートで何度もハマったことがあります)

しかし、Duplicatable V3のフックはそれとは逆です。ロジック本体こそが、フック内にあるのです。XOOPSの動作さえ知っていれば、各モジュールについての処理が、XOOPS_ROOT_PATH/modules/に来ることは判っているはずです。そして、それらのファイルこそ、ユーザが書き換えて良いファイルなのです。そのフック処理をやめてしまえば、完全に自分でコントロールできますし、ちょっとだけ処理してからデフォルトのフックをかけることもできます。

これはまさにOOPで言うところの多態性です。XOOPS_TRUST_PATH/modules/内に置いたファイル群が親クラスで、XOOPS_ROOT_PATH/modules/内に置かれた各モジュールが、サブクラスに相当します。

Read more... | 751 bytes more |0 comments

Poster : GIJOE on 2006-05-14 05:21:28 (65353 reads)

in englishin japanese
説明の順番が前後してしまいましたが、Duplicatable V3の前提に、XOOPS_TRUST_PATHという重要な概念があります。

XOOPS_TRUST_PATH とは、PHP定数です。XOOPSをある程度触った方ならご存じのXOOPS_ROOT_PATH の親戚のようなものです。この定数は、mainfile.phpで定義します。


define('XOOPS_TRUST_PATH','/home/yourhome/xoops_trust_path');


XOOPSでもosCommerceでも、古いタイプのOSS系PHPアプリケーションは大抵、DocumentRootの下にすべてのファイルを展開する形になっています。実はこれ、かなり危ないことで、インクルード専用のファイルをダイレクトにアクセスされることで、思わぬ脆弱性につながりかねません。

過去にもAgenda-Xというモジュールでこういう事例があり、簡単にApache権限を持って行かれました。そこまで酷くないにしても、インクルード専用のファイルをDocumentRootの内側に置くと、特に明示的な対応をしない限り、ほとんどのケースでPath Disclosureとなってしまいます。

ちなみに、インクルード用ファイルの拡張子を.incにしておくと、text/plainになってソースコードが流出してしまうから、拡張子はすべて.phpにしておくのが良い、なんて噂も、私にはガセとしか思えません。想定されていないファイルを.phpとして実行されるよりは、ソースコード流出の方がはるかにマシです。特にXOOPSのようなOSSであれば、ソースコード流出が問題になることもほとんどありません。

もちろん私自身、拙作モジュールにおいては、.htaccessなどでアクセスコントロールはしてきましたが、.htaccessの効かないホスティングサービスも少なからず存在します。IISで運用しているケースもあるでしょう。

この問題に対する最善の対策は、DocumentRootの外にPHPファイルを追い出すことです。まっとうなPHPフレームワークでは、たいていこの様な作りになっています。DocumentRoot内に置かれるべきPHPファイルは、index.php一個だけ。ロジックの本体はすべてDocumentRoot外に置く。あとは、イメージファイルやCSS, JavaScriptなどを、DocumentRoot内に置く。このような作りが正しいはずです。(「何を当たり前のことを言っているんだ」と感じた方にはお詫びします)

事実として、XOOPSはそのような作りになっていないので、少しでもそういう作りにしよう、というのがXOOPS_TRUST_PATHの主旨です。そして、XOOPS_TRUST_PATHを使えば、セキュリティ以外にもこんなメリットがあるよ、ということを示したのが、Duplicatable V3です。

XOOPS_TRUST_PATHは、DocumentRootの外に作る必要があります。それも専用に作るべきです。
もし、ホスティングサービスの事情で、DocumentRoot外にファイルを一切置けない場合は、.htaccessで、XOOPS_TRUST_PATHごと、DENY ALL してください。それだけでもほとんど同じ効果が得られます。

Read more... | 904 bytes more |0 comments

« 1 ... 26 27 28 (29) 30 31 32 ... 37 »
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!