2006/07/20(木)20060720版

変更

新着をmenu.cgi側で出力するようにしたため,dir.txtの一部のエントリが不必要になります.

修正前のdir.txt

	entries=.recent, adiary
[.recent]
	entries=
	name=新着画像
[adiary]
	entries=

修正後のdir.txt

	entries=adiary
[adiary]
	entries=

追加

  • inifile\iniファイルからエントリを消す関数を実装
  • common\hashデータベースからエントリを消す関数を実装
  • plugin\ファイルの移動,スライドショーを行うプラグインをいっしょに配付するようにしました.
  • plugin/move\ファイルの移動,ファイルの削除ができます.
  • plugin/slideshow\ファイルをスライドショーで表示することができます.

http://www.kis-lab.com/serikashiki/cgi/album.html

2006/07/13(木)アルバムの使用について

元々,不特定多数に公開することを前提としていなかったので,外部からの悪意のあるアクセスや,内部のプラグインのバグや仕様といったものには非常に弱い仕様になっています.

分かっているだけでも,プラグインで1種類,フォーム処理で2種類の仕様上のセキュリティホールがあります.他にも仕様上のセキュリティホールはあるし,実装上のバグはどれだけあるか分かりません.特にプラグインは,外部プログラムを呼び出すため,何をされるか分かったものじゃありません.

外部からの攻撃を気にするのであれば,一応免責を書いてはいるものの,アルバムの作者としては,アルバムの使用は薦められません.

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/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の処理

アップロードできないファイルがあったのですが,その原因がなんとなく判明しました.非常に単純で,ファイル名の取り出しに失敗していたから.ファイル名をはさんでいるダブルクオート"のチェックをする位置が悪かったっぽいです.

ただ,問題なくアップロード出来ていたり出来ていなかったりするファイルの差は未だ謎.ファイルの先頭のほうに"があったりするとまずいのかもしれません.