#!/usr/local/bin/perl
# index.cgi
# Output HTML for the file manager applet
require './file-lib.pl';
&ReadParse();
$theme_no_table = 1;
if ($access{'uid'} < 0 && !defined(getpwnam($remote_user))) {
&error(&text('index_eremote', $remote_user));
}
# Display header, depending on how many modules the user has
&read_acl(undef, \%acl);
$mc = @{$acl{$base_remote_user}} == 1;
$nolo = $ENV{'ANONYMOUS_USER'} ||
$ENV{'SSL_USER'} || $ENV{'LOCAL_USER'} ||
$ENV{'HTTP_USER_AGENT'} =~ /webmin/i;
if ($gconfig{'gotoone'} && $mc == 1 && !$nolo) {
&header($text{'index_title'}, "", undef, 0, 1);
$w = 100;
$h = 80;
}
else {
&header($text{'index_title'});
$w = 100;
$h = 100;
}
if ($gconfig{'referers_none'}) {
# Because java applet HTTP requests don't always include a referer:
# header, we need to use a DBM of trust keys to identify trusted applets
if (defined(&seed_random)) { &seed_random(); }
else { srand(time() ^ $$); }
$trust = int(rand(1000000000));
local $now = time();
&open_trust_db();
foreach $k (keys %trustdb) {
if ($now - $trustdb{$k} > 30*24*60*60) {
delete($trustdb{$k});
}
}
$trustdb{$trust} = $now;
dbmclose(%trustdb);
}
$sharing = $access{'uid'} ? 0 : 1;
&read_acl(undef, \%acl);
$mc = @{$acl{$base_remote_user}};
if (!$gconfig{'gotoone'} || $mc > 1) {
%minfo = &get_module_info();
$return = "";
}
if ($in{'open'}) {
$open = "\n";
}
print <
function upload(dir)
{
open("upform.cgi?dir="+dir+"&trust=$trust", "upload", "toolbar=no,menubar=no,scrollbar=no,width=450,height=200");
}
EOF
&footer();