diff --git a/xterm/index.cgi b/xterm/index.cgi index c6195ea94..a9c6157e7 100755 --- a/xterm/index.cgi +++ b/xterm/index.cgi @@ -14,34 +14,37 @@ ReadParse(); $ENV{'HTTP_WEBMIN_PATH'} && error($text{'index_eproxy'}); # Check for needed modules -my @modnames = ("Digest::SHA", "Digest::MD5", - "IO::Select", "Time::HiRes", - "Net::WebSocket::Server"); -foreach my $modname (@modnames) { - eval "use ${modname};"; ## no critic (ProhibitStringyEval) - if ($@) { - ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0); - my $missinglink = text('index_cpan', "$modname", - "../cpan/download.cgi?source=3&cpan=$modname&mode=2&return=/$module_name/&returndesc=".urlize($module_info{'desc'})); - if ($gconfig{'os_type'} eq 'redhat-linux') { - $missinglink .= " ". - text('index_epel', - 'https://docs.fedoraproject.org/en-US/epel'); - } - elsif ($gconfig{'os_type'} eq 'suse-linux') { - $missinglink = - text('index_suse', "$modname", - 'https://software.opensuse.org/download/package?package=perl-IO-Tty&project=devel%3Alanguages%3Aperl'); - } - if (get_product_name() eq 'usermin') { - print text('index_missing', $modname) ."
\n"; - } - else { - print $missinglink ."
\n"; - } - ui_print_footer("/", $text{'index'}); - exit; +my @modload = ( + ['Digest::SHA', sub { eval { require Digest::SHA; Digest::SHA->import; 1 } }], + ['Digest::MD5', sub { eval { require Digest::MD5; Digest::MD5->import; 1 } }], + ['IO::Select', sub { eval { require IO::Select; IO::Select->import; 1 } }], + ['Time::HiRes', sub { eval { require Time::HiRes; Time::HiRes->import; 1 } }], + ['Net::WebSocket::Server', sub { eval { require Net::WebSocket::Server; Net::WebSocket::Server->import; 1 } }], + ); +foreach my $m (@modload) { + my ($modname, $loader) = @$m; + next if ($loader->()); + ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0); + my $missinglink = text('index_cpan', "$modname", + "../cpan/download.cgi?source=3&cpan=$modname&mode=2&return=/$module_name/&returndesc=".urlize($module_info{'desc'})); + if ($gconfig{'os_type'} eq 'redhat-linux') { + $missinglink .= " ". + text('index_epel', + 'https://docs.fedoraproject.org/en-US/epel'); } + elsif ($gconfig{'os_type'} eq 'suse-linux') { + $missinglink = + text('index_suse', "$modname", + 'https://software.opensuse.org/download/package?package=perl-IO-Tty&project=devel%3Alanguages%3Aperl'); + } + if (get_product_name() eq 'usermin') { + print text('index_missing', $modname) ."
\n"; + } + else { + print $missinglink ."
\n"; + } + ui_print_footer("/", $text{'index'}); + exit; } # Get Webmin current version for links serial