# 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.