Handle hostnames with upper-case letters
[webmin.git] / file / index.cgi
1 #!/usr/local/bin/perl
2 # index.cgi
3 # Output HTML for the file manager applet
4
5 require './file-lib.pl';
6 &ReadParse();
7 $theme_no_table = 1;
8 if ($access{'uid'} < 0 && !defined(getpwnam($remote_user))) {
9         &error(&text('index_eremote', $remote_user));
10         }
11
12 # Display header, depending on how many modules the user has
13 &read_acl(undef, \%acl);
14 $mc = @{$acl{$base_remote_user}} == 1;
15 $nolo = $ENV{'ANONYMOUS_USER'} ||
16       $ENV{'SSL_USER'} || $ENV{'LOCAL_USER'} ||
17       $ENV{'HTTP_USER_AGENT'} =~ /webmin/i;
18 if ($gconfig{'gotoone'} && $mc == 1 && !$nolo) {
19         &header($text{'index_title'}, "", undef, 0, 1);
20         $w = 100;
21         $h = 80;
22         }
23 else {
24         &header($text{'index_title'});
25         $w = 100;
26         $h = 100;
27         if (!$tconfig{'inframe'}) {
28                 $return = "<param name=return value=\"$gconfig{'webprefix'}/?cat=$module_info{'category'}\">";
29                 $returnhtml = &text('index_index',
30                                     "$gconfig{'webprefix'}/")."<p>";
31                 }
32         }
33
34 if ($gconfig{'referers_none'}) {
35         # Because java applet HTTP requests don't always include a referer:
36         # header, we need to use a DBM of trust keys to identify trusted applets
37         if (defined(&seed_random)) { &seed_random(); }
38         else { srand(time() ^ $$); }
39         $trust = int(rand(1000000000));
40         local $now = time();
41         &open_trust_db();
42         foreach $k (keys %trustdb) {
43                 if ($now - $trustdb{$k} > 30*24*60*60) {
44                         delete($trustdb{$k});
45                         }
46                 }
47         $trustdb{$trust} = $now;
48         dbmclose(%trustdb);
49         }
50
51 $sharing = $access{'uid'} ? 0 : 1;
52 $mounting = !$access{'uid'} && &foreign_check("mount") ? 1 : 0;
53 if ($in{'open'}) {
54         $open = "<param name=open value=\"".&html_escape($in{'open'})."\">";
55         }
56 if ($main::session_id) {
57         $session = "<param name=session value=\"sid=$main::session_id\">";
58         }
59 if (!$access{'noconfig'}) {
60         $config = "<param name=config value=\"$gconfig{'webprefix'}/config.cgi?$module_name\">";
61         }
62 $iconsize = int($config{'iconsize'});
63 $root = join(" ", @allowed_roots);
64 $noroot = join(" ", @denied_roots);
65
66 foreach $d (@disallowed_buttons) {
67         $disallowed .= "<param name=no_$d value=1>\n";
68         }
69
70 # Create parameters for custom colours
71 foreach $k (keys %tconfig) {
72         if ($k =~ /^applet_(.*)/) {
73                 $colours .= "<param name=$k value=\"$tconfig{$k}\">\n";
74                 }
75         }
76
77 # Extract classes from jar, if we can
78 if ($config{'extract'} &&
79     &has_command("unzip") && !-r "$module_root_directory/FileManager.class") {
80         system("unzip file.jar >/dev/null 2>&1");
81         }
82
83 print <<EOF;
84 <script>
85 function upload(dir)
86 {
87 open("upform.cgi?dir="+escape(dir)+"&trust=$trust", "upload", "toolbar=no,menubar=no,scrollbar=no,width=550,height=230");
88 }
89 function htmledit(file, dir)
90 {
91 open("edit_html.cgi?file="+escape(file)+"&dir="+escape(dir)+"&trust=$trust", "html", "toolbar=no,menubar=no,scrollbar=no,width=800,height=600");
92 }
93 </script>
94
95 <applet code=FileManager name=FileManager archive=file.jar width=$w% height=$h% MAYSCRIPT>
96 <param name=root value="$root">
97 <param name=noroot value="$noroot">
98 <param name=follow value="$follow">
99 <param name=ro value="$access{'ro'}">
100 <param name=sharing value="$sharing">
101 <param name=mounting value="$mounting">
102 <param name=trust value="$trust">
103 <param name=goto value="$access{'goto'}">
104 <param name=iconsize value="$iconsize">
105 <param name=doarchive value="$archive">
106 <param name=unarchive value="$unarchive">
107 <param name=dostounix value="$dostounix">
108 <param name=fixed value="$config{'fixed'}">
109 <param name=small_fixed value="$config{'small_fixed'}">
110 <param name=canperms value="$canperms">
111 <param name=canusers value="$canusers">
112 <param name=contents value="$contents">
113 <param name=force_text value="$config{'force_text'}">
114 <param name=htmlexts value="$config{'htmlexts'}">
115 $config
116 $session
117 $open
118 $return
119 $disallowed
120 $colours
121 $text{'index_nojava'} <p>
122 $returnhtml
123 </applet>
124 EOF
125 &footer();
126
127