Sunday, 21 August 2011

KFM File Repository

In office we need to share some common softwares amongst the users. Requirement of different softwares are different, for example some are needed by all the users, some softwares are only for System Admins etc. This requirement can be fulfilled with sharing software folder with different access rights. Some problems that may come with shared folder are:
  • Searching software can be difficult. As we can only search for file names, creating category or tagging facility is not there. Suppose we need to group all the web browser softwares, so that we can find easily, we have to manually create folder and accordingly have to put all the web browser softwares in that folder.
  • One problem that may come is if some user is installing some software from the shared drive and the user’s computer is infected by some virus. Virus may also infect the shared folder. Also there are many viruses which infect files in a shared folder, or copy themselves into a shared folder.
So I have decided to go for some web based file repository which has some features like:
  • User based access.
  • File tagging facility, for easy categorization and searching.
  • Easy manageable, light and open source.
I tested many open source web based file repositories, but finally I found KFM – Kae’s File Manager which fulfils our requirements.
It is a PHP based open source application and can be downloaded from
It very simple to install, just download and extract the files into a folder and copy the folder into the Apache htdocs folder (I had copied as softwares folder in a server named backupsvr). Create a MySQL database for this application. Open the configuration.php file of this application, and set the following variables:
$kfm_db_type = ‘mysql’;
$kfm_db_prefix = ‘kfm_’;
$kfm_db_host = ‘localhost’;
$kfm_db_name = ’softwares’;
$kfm_db_username = ’softwares’;
$kfm_db_password = ’softwares’;
$kfm_db_port = ‘3306′;
$kfm_userfiles_address = ‘/home/kae/Desktop/userfiles’;

The default value of the last variable $use_kfm_security is false. That means kfm will not use any security mechanism, so make it true which will use the built in security (authentication) of KFM.
Another important setting is $kfm_userfiles_address, we can specify the location of the root of the file repository. Make sure web server has full access to this folder.
Now open the admin console of the application (in my case as http://backupsvr/softwares/admin/ ).

Login with default admin username/password, which is admin/admin.

We can create user using the New user button. I have created a user guest, and this account will be used by general users to access the software repository. We can configure the settings and permissions for the user by selecting the user and going to the Settings link.

 The global settings can be changed by going to the Settings link:

I have configured the application such a way that the guest user can see only a folder named softwares and guest user can only search and download files from their login.
Using the admin login I will upload files and tag those files and put them in appropriate folder as per user level access. Go to the file manager console using the To the File Manager link

We can also go to the file manager by browsing the root folder of the application (http://backupsvr/softwares/ in my case) and entering username and password. After login as admin we will be in the root of the file repository. I have created a folder softwares where I am going to upload the common softwares which can be downloaded by the guest user.

 Navigate to the softwares folder, I am going to upload real player software to the file repository. Select the file and click on Upload button.

After file is uploaded, right click on the file’s name and click on add tags to file(s) to add tags for the uploaded file.

The tags I have added are real player, real, audio player, audio, video player, video, player, music. Click Ok to add the tag.

One issue with this application is that, if one of my software is in a folder (for example MS-Office) with multiple files, then I have to archive all the files of the application into a single file and upload it to the file manager, so that I can tag it for searching.
To exit from the file manager console right click anywhere in the console (except the on the files) and click on logout.

 Now suppose a user needs a web browser, so he/she login to the file manager using the guest login. The user will be landed to the root folder that we configured for the guest user (i.e. the softwares folder).

 Now as the user needs web browser he/she will enter web browser in the tags field under the Search panel. As this application uses ajax, so once we type web browser in the tags field, automatically all the files tagged as web browser will be displayed in the right hand panel.

 Right click on the file that is required and click on download file to download the selected file.

Now Save or Run the file as per your requirement.