#!/usr/bin/perl require './tomcat-lib.pl'; require './java-lib.pl'; require '../webmin/webmin-lib.pl'; #require foreign_require('software', 'software-lib.pl'); use File::Basename; sub extract_java_archive{ my $jdk_archive = $_[0]; my $java_dir = '/usr/java'; if( ! -d $java_dir){ &make_dir($java_dir, 0755, 1); } $cmd_out=''; $cmd_err=''; print "
Extracting $jdk_archive to $java_dir...
"; local $out = &execute_command("tar -x -v --overwrite -f \"$jdk_archive\" -C/usr/java", undef, \$cmd_out, \$cmd_err, 0, 0); my $jdk_tar_first_line = ( split /\n/, $cmd_out )[0]; my $jdk_dir = $java_dir."/".(split /\//, $jdk_tar_first_line)[0]; if($cmd_err){ $cmd_err = s/\n/
/g; &error("Error: tar: $cmd_err"); }else{ $cmd_out = s/\n/
/g; print &html_escape($cmd_out); } &set_ownership_permissions('root','root', 0755, $jdk_dir); &execute_command("chown -R root:root $jdk_dir", undef, \$cmd_out, \$cmd_err, 0, 0); if($cmd_err){ $cmd_err = s/\n/
/g; &error("Error: chown: $cmd_err"); } return $jdk_dir; } #$| = 1; if ($ENV{REQUEST_METHOD} eq "POST") { &ReadParse(\%getin, "GET"); &ReadParseMime(undef, \&read_parse_mime_callback, [ $getin{'id'} ]); } else { &ReadParse(); $no_upload = 1; } &error_setup($text{'install_err'}); &ui_print_header(undef, $text{'java_title'}, ""); my $jdk_path = ''; if($in{'source'} == 200){ my $jdk_name = (split /=/, $in{'openjdk_ver'})[1]; my $openjdk_pkg = $jdk_name; if($in{'openjdk_headless'} == 1){ $openjdk_pkg .= '-headless'; } software::update_system_install($openjdk_pkg, undef); $jdk_path = get_jdk_dir_by_name($jdk_name); } else { if ($in{'source'} == 100) { my ($jdk_name, $url) = split /=/, $in{'jdk_ver'}; $in{'url'} = $url; $in{'source'} = 2; } my $jdk_archive = process_file_source(); $jdk_path = extract_java_archive($jdk_archive); } if($in{'def_jdk'} == 1){ set_default_java($jdk_path); } print "
Done
"; &ui_print_footer("", $text{'index_return'});