CGI-FileManager
view release on metacpan or search on metacpan
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 )