# IFM - improved file manager ## about The IFM is a web-based filemanager, which comes as a single file solution using HTML5, CSS3, JavaScript and PHP. The IFM uses the following resources: * [ACE Editor](https://ace.c9.io) * [Bootstrap v3](https://getbootstrap.com) * custom icon set generated with [Fontello](http://fontello.com/) * [jQuery](https://jquery.com) * [Mustache](https://mustache.github.io/) ## features * create/edit files and directories * copy/move files and directories * download files and directories * upload files directly or via URL * extract zip archives * change permissions * image preview ## requirements | Client | Server | |:--------------------------------- |:------------------------------------------------------------ | | HTML5 and CSS3 compatible browser | PHP >= 5.5 (only if using auth; if not PHP 5.4 works either) | | activated JavaScript | optional: cURL extention (for remote upload) | ## installation Just copy the ifm.php to your webspace - thats all :) ## key bindings * e - edit / extract current file * hjkl - vim-style navigation (alternative to arrow keys) * g - focus the path input field (i.e. "goto") * r - refresh file table * u - upload a file * o - remote upload a file * a - show ajax request dialog * F - new file * D - new directory * space - select a highlighted item * del - delete selected files * Enter - open a file or change to the directory ## configuration The configuration is located at the top of the script. The options are commented and named laconically. If you have any questions [write me an email](mailto:marco@misterunknown.de). ### authentication The IFM offers a simple authentication feature using the configuration keys `auth` and `auth_source`. You can configure it like this: ```php "auth" => 1, "auth_source" => 'inline;:', ``` In the example above the user and password are declared inline. You can also use a file (which should lie out of the $DocumentRoot of the webserver): ```php "auth_source" => 'file;/path/to/file', ``` The file should contain ONLY ONE LINE: ``` : ``` The password hash has to be a hash generated by PHPs `password_hash()` function. The default credentials are "admin:admin". ## screenshots ## issues Currently there are no known issues. If you find any flaws please let me know. ## security information By default, the IFM is locked to it's own directory, so you are not able to go above. You can change that by setting the $root_dir in the scripts configuration.