=head1 geoserver-lib.pl Functions for managing Geoserver webapp configuration files. foreign_require("geoserver", "geoserver-lib.pl"); @sites = geoserver::list_geoserver_websites() =cut BEGIN { push(@INC, ".."); }; use warnings; use WebminCore; use File::Copy; init_config(); require './tomcat-lib.pl'; use File::Basename; foreign_require('software', 'software-lib.pl'); sub get_geoserver_config { my $lref = &read_file_lines($config{'geoserver_conf'}); my @rv; my $lnum = 0; foreach my $line (@$lref) { my ($n, $v) = split(/\s+/, $line, 2); if ($n) { push(@rv, { 'name' => $n, 'value' => $v, 'line' => $lnum }); } $lnum++; } return @rv; } sub get_acugeo_versions{ my %tver = &get_catalina_version(); my %gver = &get_geoserver_version(); $tver{'geoserver_ver'} = $gver{'number'}; $tver{'geoserver_build'} = $gver{'jdk'}; return %tver; } sub process_file_source{ my $file = ''; if (($in{'source'} == 0) && ($in{'file'} ne "")) { # from local file &error_setup(&text('source_err0', $in{'file'})); $file = $in{'file'}; if (!(-r $file)){ &error($text{'source_err0'}); } }elsif (($in{'source'} == 1) && ($in{'upload_filename'} ne "")) { # from uploaded file &error_setup($text{'source_err1'}); $need_unlink = 1; if ($no_upload) { &error($text{'source_err1.2'}); } $file = transname(file_basename($in{'upload_filename'})); open(MOD, ">$file"); binmode(MOD); print MOD $in{'upload'}; close(MOD); }elsif ($in{'source'} == 2 and $in{'url'} ne '') { # from ftp or http url (possible third-party) $url = $in{'url'}; &error_setup(&text('source_err2', $url)); $file = &transname(file_basename($url)); $need_unlink = 1; my $error; $progress_callback_url = $url; if ($url =~ /^(http|https):\/\/([^\/]+)(\/.*)$/) { $ssl = $1 eq 'https'; $host = $2; $page = $3; $port = $ssl ? 443 : 80; if ($host =~ /^(.*):(\d+)$/) { $host = $1; $port = $2; } my %cookie_headers = ('Cookie'=>'oraclelicense=accept-securebackup-cookie'); &http_download($host, $port, $page, $file, \$error, \&progress_callback, $ssl, undef, undef, 0, 0, 1, \%cookie_headers); } elsif ( $url =~ /^ftp:\/\/([^\/]+)(:21)?\/(.*)$/) { $host = $1; $ffile = $3; &ftp_download($host, $ffile, $file, \$error, \&progress_callback); }else { &error($text{'source_err3'}); } &error($error) if ($error); } return $file; } sub exec_cmd{ my $cmd = $_[0]; my $cmd_out=''; my $rv = &execute_command($cmd, undef, \$cmd_out, \$cmd_out, 0, 0); if($cmd_out){ $cmd_out = &html_escape($cmd_out); $cmd_out =~ s/[\r\n]/<\/br>/g; print $cmd_out; } return $rv; } sub unzip_me{ my $file = $_[0]; my @suffixlist = ('\.zip'); ($file_name,$path,$lib_suffix) = fileparse($file,@suffixlist); my $unzip_dir = "/tmp/.webmin/$file_name"; &make_dir($unzip_dir, 0754, 1); my $unzip_out; my $unzip_err; print "