2006/07/13(木)アルバムの使用について
元々,不特定多数に公開することを前提としていなかったので,外部からの悪意のあるアクセスや,内部のプラグインのバグや仕様といったものには非常に弱い仕様になっています.
分かっているだけでも,プラグインで1種類,フォーム処理で2種類の仕様上のセキュリティホールがあります.他にも仕様上のセキュリティホールはあるし,実装上のバグはどれだけあるか分かりません.特にプラグインは,外部プログラムを呼び出すため,何をされるか分かったものじゃありません.
外部からの攻撃を気にするのであれば,一応免責を書いてはいるものの,アルバムの作者としては,アルバムの使用は薦められません.
2006/07/13(木)20060713版
やばめのバグを修正したバージョン.
2006/07/12(水)common.cpp
CreateFile
デバッグ中に入れていた数値を直し忘れていました.
441行目付近
for(int index = 0; index < 10; ++index){ を
for(int index = 0; index < 10000; ++index){ にしてください.
現在のままだと,同じファイル名で10番までテストした時点でエラーが出ます.
しかも,アーカイブの場合,新着に画像が登録されない模様.
時間が出来たときにでも,直します.
InitApplication
configのmax_file_sizeを見落としていました.
140行目付近 if(form.Init(CForm::GET | CForm::POST)){ を
次のように直してください.
int max_mem = atol(ini["upload"]["max_file_size"]); if(max_mem <= 0) max_mem = 10*1024*1024; // 10M if(form.Init(CForm::GET | CForm::POST, max_mem)){
2006/07/11(火)配布ページ
かなり手抜きではあるが,一応作ってみた.問題なのは,相変わらず動作確認していないところ(汗)
一次配布は,せりか式のcgiのページ.サンプルページはここでよければここにする.
2006/07/08(土)C3.1
3.0.8 を 3.1.0 に置き換えました.
古いURLは http://bigslope.dyndns.org/album3.0/ になります.
アドレスは,http://bigslope.dyndns.org/album/です.multi-user用に作ってあり,single-userモードは相変わらずデバッグというか,動作確認すらしていないらしい.
プラグイン化がより一層進み,本体だけでは画像の表示すらできない状態に.まだ,ソースは公開してないけど,近いうちに公開したいところ.
2006/07/07(金)formの処理
アップロードできないファイルがあったのですが,その原因がなんとなく判明しました.非常に単純で,ファイル名の取り出しに失敗していたから.ファイル名をはさんでいるダブルクオート"のチェックをする位置が悪かったっぽいです.
ただ,問題なくアップロード出来ていたり出来ていなかったりするファイルの差は未だ謎.ファイルの先頭のほうに"があったりするとまずいのかもしれません.
2006/07/02(日)特殊フォルダ
.recentと.hashdbを自動で作成するように変更.同時に.recentに関しては,dir.txtに登録していなくても表示するように仕様変更.そのため,dir.txtに書いてあると2行分新着画像が表示されてしまいます.
2006/07/01(土)uploadプラグイン
外部から制御できるように仕様変更中.
環境変数とコンフィグ
uploadプラグインは,以下の環境変数とコンフィグを見て動作を決定します.
呼び出し
uploadプラグインは,以下の2つの機能を提供しています.
- int Run(void)\フォームと環境変数を基に,ファイルのアップロード処理をします.
- int Extension(void)\アップロードのためのフォームを表示します
2006/06/29(木)CreateFile
仕様変更。親フォルダに指定するのは、各ユーザのホームディレクトリからの相対パス。
以下の場合、エラーとなります。
- パスの中に、親ディレクトリを示す..が含まれていた場合 \実際にはきちんとしたユーザのディレクトリの中であろうと、..が含まれていた時点でエラーです
- ファイル名の中に/が含まれていた場合 \ファイル名に/が含まれてはいけません。\({\}もテストすべき?)
- 連番でファイル名をテストする時、4桁以内の数値で収まらなかった時\ファイル名がfile.jpgであった場合、file_9999.jpgまではテストしますが、file_10000.jpgをテストする前にエラーを返します。
また、返り値 realname には実際に生成されたホームディレクトリからのパスを含むファイル名が入ります。
user: serika gallery: temp image: test.jpg CreateFolder("temp", "test.jpg", realname) realname -> "temp/test.jpg"
2006/06/25(日)make
Makefileを一通り書き直して,多段makeとall,clean,install,uninstallに対応させました.これで,新たなプラグインを持ってきたとき,albumx.x/src/pluginにフォルダを作って展開して,makeで済みます.
もちろん,それぞれのプラグインが対応している必要がありますが,基本的に,デフォルトのプラグイン用Makefileの中のAPP変数を置き換えるだけで済むので,新たにMakefileを作成するよりはかなり楽なはずです.