CGI-FileManager
view release on metacpan or search on metacpan
lib/CGI/FileManager.pm view on Meta::CPAN
=back
=head2 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.
=cut
# Hmm, either this module does not deal at all with authentication and assumes that
# something around it can deal with this.
# But we also would like to be able to create a list of users and for each user to assign
# a virtual directory. Onto this virtual directory we would like to be able to "mount"
# any subdirectory of the real file system. We can even go further and provide options
# to this "mount" such as read-only (for that specific user) or read/write.
#=head2 Quota
#Maybe we can also implement some quota on the file system ?
=head2 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.
=head1 USE CASES
=head2 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;
=head2 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
=head1 Changes
=head2 v0.01 2004 June 27
Initial release
=head2 v0.02_01
Move file/directory
Unzip file (.zip)
=head2 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
=head1 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 ?
=head1 Author
( run in 0.412 second using v1.01-cache-2.11-cpan-5735350b133 )