Docker環境などでFessの管理画面から画像ファイルなどをアップロードできなくなっていた問題を修正しました。
原因
管理画面でファイルをアップロードする際、FessAdminActionのvalidateFilePathメソッドでファイルパスのバリデーションが行われます。このバリデーションでは、アップロード先のパスが許可されたディレクトリ配下にあるかをチェックしていますが、従来はfess.var.pathのみを許可ディレクトリとして参照していました。
Docker環境では、アップロードされたファイルの保存先がfess.webapp.pathやfess.conf.path配下になるケースがあり、これらのパスが許可されていなかったためアップロードに失敗していました。
修正内容
validateFilePathメソッドを修正し、以下の3つのシステムプロパティすべてを許可ディレクトリとしてチェックするようにしました。
fess.var.pathfess.webapp.pathfess.conf.path
ファイルパスがこれらのいずれかのディレクトリ配下にあれば、バリデーションを通過するようになります。また、バリデーション失敗時のエラーメッセージも改善され、すべての許可パスが表示されるようになりました。
この修正はFess 15.5.0に含まれる予定です。詳細はPR #3028を参照してください。