SOY CMS/Shopのファイルマネージャは以前は自家製のものを利用していましたが、あるバージョンからelFinderというOSSに変更しました。


elfinder_toppage

elFinder 2.1.x - file manager for web


ファイルマネージャは要求されることが多く、開発が非常に大変なので、動作の良いものを探していましたところ、elFinderに遭遇して採用しています。

このelFinderはファイルの管理だけではなく、


elfinder_resize


elfinder_rotate


画像のリサイズ、切り取りや回転といった編集も行うことができる。

更に拡張子毎にアップロードを禁止することもでき、現時点では、phpやjsといったプログラムに関するファイルのアップロードを禁止しています。

CMSに不正にログインした後、何をする?




phpやjsファイルをSOY CMS内で管理したい方もいるかと思いますので、elFinderでどのように設定しているか紹介します。


/CMSのインストールディレクトリ/soycms/js/elfinder/php/connector.php

を開き、ファイルの下の方で、


opts = array(
	// 'debug' => true,
	'roots' => array(
		array(
			'driver'        => 'LocalFileSystem',           // driver for accessing file system (REQUIRED)
			'path'          => $path,                 // path to files (REQUIRED)
			'URL'           => $url, // URL to files (REQUIRED)
			'uploadDeny'    => array('all'),                // All Mimetypes not allowed to upload
			'uploadAllow'   => array('image', 'text/plain', 'text/css', 'application/zip', 'application/epub+zip'),
			'uploadOrder'   => array('deny', 'allow'),      // allowed Mimetype `image` and `text/plain` only
			'accessControl' => 'access'                     // disable and hide dot starting files (OPTIONAL)
		)
	)
);

上記の様な設定に関する配列があります。

連想配列の中にuploadAllowという設定があり、ここでアップロードを許可するMIMEタイプを指定しています。


例えば、jsファイルを許可したい場合は、MIMEタイプがtext/javascriptなので、

'uploadAllow' => array('image', 'text/plain', 'text/css', 'application/zip', 'application/epub+zip', 'text/javascript'),

この様に追加してみると、


追加する前は、


elfinder_js_upload_erro


エラーで弾かれるが、uploadAllowに追加後に再度試してみると、


elfinder_js_upload_ok


無事、アップロードされました。

アップロード直後はアイコンが何故かtxtファイルになる。


このファイルにフォーカスをあて、右クリックしてみると、


elfinder_js_upload_edit


編集も行える様になっています。


注意ですが、管理画面でスクリプトの編集になるということは、不正ログイン後に悪意のコードを書かれる可能性がありますので、その点はご了承頂いた上で変更を行ってください。