Handle hostnames with upper-case letters
[webmin.git] / sendmail / index.cgi
1 #!/usr/local/bin/perl
2 # index.cgi
3 # Display icons for various things that can be configured in sendmail
4
5 require './sendmail-lib.pl';
6 require './boxes-lib.pl';
7
8 # Check if sendmail is actually installed
9 if (!-x $config{'sendmail_path'}) {
10         &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0,
11                 &help_search_link("sendmail", "man", "doc", "google"));
12         print &text('index_epath', "<tt>$config{'sendmail_path'}</tt>",
13                           "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
14
15         &foreign_require("software", "software-lib.pl");
16         $lnk = &software::missing_install_link(
17                         "sendmail", $text{'index_sendmail'},
18                         "../$module_name/", $text{'index_title'});
19         print $lnk,"<p>\n" if ($lnk);
20
21         &ui_print_footer("/", $text{'index'});
22         exit;
23         }
24
25 # Get the executable version number
26 $ever = &get_sendmail_version(\$out);
27
28 # Check if the config file exists, and is the right version
29 if (!-s $config{'sendmail_cf'}) {
30         &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0,
31                 &help_search_link("sendmail", "man", "doc", "google"));
32         print &text('index_econfig', "<tt>$config{'sendmail_cf'}</tt>",
33                   "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
34
35         &foreign_require("software", "software-lib.pl");
36         $lnk = &software::missing_install_link(
37                         "sendmail", $text{'index_sendmail'},
38                         "../$module_name/", $text{'index_header'});
39         print $lnk,"<p>\n" if ($lnk);
40
41         &ui_print_footer("/", $text{'index'});
42         exit;
43         }
44 $conf = &get_sendmailcf();
45 $cfgver = &find_type("V", $conf);
46 &ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0,
47         &help_search_link("sendmail", "man", "doc", "google"), undef, undef,
48         $ever && $cfgver ? &text('index_version2',$ever,"V$cfgver->{'value'}") :
49         $cfgver ? &text('index_version', "V$cfgver->{'value'}") :
50         $ever ? &text('index_xversion', $ever) : undef);
51
52 if (!&check_sendmail_version($conf)) {
53         print "$text{'index_eversion'}<p>\n";
54         &ui_print_footer("/", "index");
55         exit;
56         }
57
58 local $mcount;
59 if (!$config{'mailq_count'}) {
60         # Check the mail spool
61         @qfiles = &list_mail_queue($conf);
62         if ($access{'qdoms'}) {
63                 # Filter out blocked mails
64                 @qfiles = grep { &can_view_qfile(&mail_from_queue($_)) }
65                                @qfiles;
66                 }
67         $mcount = scalar(@qfiles);
68         }
69
70 @olinks =  ( "list_opts.cgi", "list_ports.cgi", "list_aliases.cgi", "list_cws.cgi", "list_masq.cgi", "list_trusts.cgi", "list_virtusers.cgi", "list_mailers.cgi", "list_generics.cgi", "list_cgs.cgi", "list_domains.cgi", "list_access.cgi", "list_relay.cgi", "list_features.cgi", "list_mailq.cgi", "../mailboxes/" );
71
72 @otitles = ( "$text{'opts_title'} (O)", $text{'ports_title'}, "$text{'aliases_title'} (aliases)", "$text{'cws_title'} (Cw)", "$text{'masq_title'} (CM)", "$text{'trusts_title'} (T)", "$text{'virtusers_title'} (virtuser)", "$text{'mailers_title'} (mailertable)", "$text{'generics_title'} (generics)", "$text{'cgs_title'} (CG)", "$text{'domains_title'} (domaintable)", "$text{'access_title'} (access)", "$text{'relay_title'} (CR)", $text{'features_title'}, "$text{'mailq_title'} (mailq)".(defined($mcount) ? "<br>".&text('mailq_count', $mcount) : ""), "$text{'boxes_title'}"); 
73
74 @oicons =  ( "images/opts.gif", "images/ports.gif", "images/aliases.gif", "images/cws.gif", "images/masq.gif", "images/trusts.gif", "images/virtusers.gif", "images/mailers.gif", "images/generics.gif", "images/cgs.gif", "images/domains.gif", "images/access.gif", "images/relay.gif", "images/features.gif", "images/mailq.gif", "images/boxes.gif" );
75
76 &filter_icons($access{'opts'}, "list_opts.cgi");
77 &filter_icons($access{'ports'}, "list_ports.cgi");
78 &filter_icons($access{'cws'}, "list_cws.cgi");
79 &filter_icons($access{'masq'}, "list_masq.cgi");
80 &filter_icons($access{'trusts'}, "list_trusts.cgi");
81 &filter_icons($access{'vmode'}, "list_virtusers.cgi");
82 &filter_icons($access{'amode'}, "list_aliases.cgi");
83 &filter_icons($access{'omode'}, "list_generics.cgi");
84 &filter_icons($access{'cgs'}, "list_cgs.cgi");
85 &filter_icons($access{'relay'}, "list_relay.cgi");
86 &filter_icons($access{'mailq'}, "list_mailq.cgi");
87 &filter_icons($access{'mailers'}, "list_mailers.cgi");
88 &filter_icons($access{'access'}, "list_access.cgi");
89 &filter_icons($access{'domains'}, "list_domains.cgi");
90 &filter_icons($features_access, "list_features.cgi");
91 &filter_icons(&foreign_available("mailboxes"), "list_boxes.cgi");
92
93 &icons_table(\@olinks, \@otitles, \@oicons);
94
95 if ($access{'stop'}) {
96         print &ui_hr();
97         print &ui_buttons_start();
98         if (&is_sendmail_running()) {
99                 print &ui_buttons_row("stop.cgi", $text{'index_stop'},
100                                       $text{'index_stopmsg'});
101                 }
102         else {
103                 print &ui_buttons_row("start.cgi", $text{'index_start'},
104                                       &text('index_startmsg',
105                                 "<tt>$config{'sendmail_command'}</tt>"));
106                 }
107         print &ui_buttons_end();
108         }
109
110 &ui_print_footer("/", $text{'index'});
111
112 sub filter_icons
113 {
114 if (!$_[0]) {
115         local $idx = &indexof($_[1], @olinks);
116         splice(@olinks, $idx, 1);
117         splice(@otitles, $idx, 1);
118         splice(@oicons, $idx, 1);
119         }
120 }
121