Handle hostnames with upper-case letters
[webmin.git] / custom / view.cgi
1 #!/usr/local/bin/perl
2 # view.cgi
3 # Display a file for editing
4
5 require './custom-lib.pl';
6 &ReadParse();
7 $edit = &get_command($in{'id'}, $in{'idx'});
8 $edit->{'edit'} && &can_run_command($edit) || &error($text{'edit_ecannot'});
9
10 # Work out proper filename
11 $file = $edit->{'edit'};
12 if ($file !~ /^\//) {
13         # File is relative to user's home directory
14         @uinfo = getpwnam($remote_user);
15         $file = "$uinfo[7]/$file" if (@uinfo);
16         }
17
18 # Set environment variables for parameters
19 ($env, $export, $str, $displayfile) = &set_parameter_envs($edit, $file);
20 $displayfile = &html_escape($displayfile);
21
22 if ($edit->{'envs'} || @{$edit->{'args'}}) {
23         # Do environment variable substitution
24         chop($file = `echo "$file"`);
25         }
26
27 # Run any before-edit command
28 if ($edit->{'beforeedit'}) {
29         $out = &backquote_logged("($edit->{'beforeedit'}) 2>&1 </dev/null");
30         &error(&text('view_ebeforeedit', &html_escape($out))) if ($?);
31         }
32
33 # Show the editor form
34 &ui_print_header(undef, $text{'view_title'}, "");
35
36 $w = $config{'width'} || 80;
37 $h = $config{'height'} || 20;
38 print &ui_form_start("save.cgi", "form-data");
39 print &ui_table_start(&text('view_header', "<tt>$displayfile</tt>"), undef, 2);
40 foreach my $i (keys %in) {
41         print &ui_hidden($i, $in{$i}),"\n";
42         }
43 $data = &read_file_contents($file);
44 print &ui_table_row(undef, &ui_textarea("data", $data, $h, $w, $config{'wrap'}),
45                     2);
46 print &ui_table_end();
47 print &ui_form_end([ [ undef, $text{'save'} ] ]);
48
49 &ui_print_footer("", $text{'index_return'});
50