CGI-FileManager

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

  DEFAULT
    To get the default behavior you can write the following code. The module
    will use the built in templates to create the pages.

     #!/usr/bin/perl -wT
     use strict;
 
     use CGI::FileManager;
     my $fm = CGI::FileManager->new(
                            PARAMS => {
                                    AUTH => {
                                            PASSWD_FILE => "/home/user/mypwfile",
                                    }
                            }
                    );
     $fm->run;

    new(OPTIONS)

  META-DATA
    Theoretically we could manage some meta-data about each file in some
    database that can be either outside our virtual file system or can be a
    special file in each directory.

  Limitations
    The user running the web server has to have read/write access on the
    relevant part of the file system in order to carry out all the
    functions.

USE CASES
  Virtual web hosting with no ftp access for one user
    A single user needs authentication and full access to one directory
    tree. This does not work yet.

     #!/usr/bin/perl -T
 
     use CGI::FileManager;
     my $fm = CGI::FileManager->new({
                 ROOT => "/home/gabor/web/client1",
                 AUTH => ["george", "WE#$%^DFRE"],   # the latter is the crypt-ed password we expect
                 });
     $fm->run;

  Virtual web hosting with no ftp access for a number of users
    A number of users need authentication and full access to one directory
    tree per user.

     #!/usr/bin/perl -T
 
     use CGI::FileManager;
     my $fm = CGI::FileManager->new(
                            PARAMS => {
                                    AUTH => {
                                            PASSWD_FILE => "/home/user/mypwfile",
                                    }
                            }
                    );
     $fm->run;

     The mypwfile file looks similar to an /etc/passwd file:
     username:password:uid:gid:geco:homedir:shell

     gid and shell are currently not used
     homedir is the directory the user has rights for
     password is encrypted by crypt
     uid is just a unique number

Changes
  v0.01 2004 June 27
     Initial release

  v0.02_01
     Move file/directory
     Unzip file (.zip)

  v0.02_02
     Separate CGI::FileManager::Templates
     add cfm-install.pl install script

     Use CGI::Application::Plugin::Session
     remove catching the warning of CA and require higher version of CA
     add a test that test a particular warning
     some subs were called as functions, now they are called as methods allowing better subclassing

TODO
     - install the module as regular CPAN module and add a script that will generate the templates
       and hard-code their location in the script.
 
     - Replace the Unix::ConfigFile with my own implementation

     Test the module on Windows and find out what need to be done to pass the windows
     tests ? Especially look at Unix::ConfigFile

     Show most of the error messages on the directory listing page
 
     Support for filenames with funny characters (eg. space)

     Test all the functions, look for security issues !
     Show the current directory  (the virtual path)
     Separate footer/header
     Enable external templates

     Security issues: can I be sure that unzipping a file will open files only under the current directory ?
     What should I do in case a file that comes from an unzip operation already exists ?

     ZIP: currently the path to unzip is hard coded. It probably should be replaced by Archive::Zip

     More fancy things:
     Create file
     Copy file/directory
     Unzip file (tar/gz/zip)
     Edit file (simple editor)

     look at CGI::Explorer and check what is the relationsip to it ?

Author
    Gabor Szabo, "<gabor@pti.co.il>"

Bugs
    Please report any bugs or feature requests to
    "bug-cgi-filemanager@rt.cpan.org", or through the web interface at
    <http://rt.cpan.org>. I will be notified, and then you'll automatically
    be notified of progress on your bug as I make changes.



( run in 0.624 second using v1.01-cache-2.11-cpan-5735350b133 )