Add UI to upload a new version

This commit is contained in:
Jamie Cameron
2021-08-22 16:49:49 -07:00
parent 5e15e740e1
commit eada9db4ce
5 changed files with 64 additions and 1 deletions

55
minecraft/add_version.cgi Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/local/bin/perl
# Upload or download a new JAR
use strict;
use warnings;
require './minecraft-lib.pl';
our (%in, %text, %config);
&error_setup($text{'versions_err'});
&ReadParseMime();
# Get the file
my $temp = &transname();
my $origfile;
if ($in{'mode'} == 0) {
# Download the file
$in{'url'} || &error($text{'versions_eurl'});
my ($host, $port, $page, $ssl) = &parse_http_url($in{'url'});
$host || &error($text{'versions_eurl2'});
my $err;
&http_download($host, $port, $page, $temp, \$err, undef, $ssl);
$err && &error($err);
$origfile = $page;
}
else {
# Use uploaded file
$in{'jar'} || &error($text{'versions_ejar'});
$in{'jar_filename'} || &error($text{'versions_ejar2'});
my $fh = "JAR";
&open_tempfile($fh, ">$temp", 0, 1);
&print_tempfile($fh, $in{'jar'});
&close_tempfile($fh);
$origfile = $in{'jar_filename'};
}
# Work out the filename to upload as
my $dir = $config{'minecraft_dir'};
my $ver;
my $dest;
if ($in{'newver_def'}) {
$origfile =~ s/^.*[\/\\]//;
$origfile =~ /([0-9\.]+)\.jar$/ || &error($text{'versions_ever'});
$ver = $1;
$dest = $dir."/".$origfile;
}
else {
$in{'newver'} =~ /^[0-9\.]+$/ || &error($text{'versions_enewver'});
$ver = $in{'newver'};
$dest = $dir."/"."minecraft_server.$in{'newver'}.jar";
}
# Check for a clash, and write the file
-r $dest && &error($text{'versions_eclash'});
&copy_source_dest($temp, $dest);
&webmin_log("addversion", undef, $ver);
&redirect("list_versions.cgi");

0
minecraft/change_version.cgi Normal file → Executable file
View File

View File

@@ -372,3 +372,11 @@ versions_newver=Server version
versions_newsame=Work out from filename
versions_all=Install Version
versions_echange=Selected version does not exist
versions_err=Failed to add new version
versions_eurl=Missing URL to download from
versions_eurl2=URL is not valid
versions_ejar=No JAR file uploaded
versions_ejar2=JAR file does not have a filename
versions_ever=Could not work out version from JAR filename
versions_enewver=Version must be numeric
versions_eclash=A server with the same filename already exists!

0
minecraft/list_versions.cgi Normal file → Executable file
View File

View File

@@ -1196,7 +1196,7 @@ my @rv;
foreach my $f (sort { $a cmp $b } @files) {
my $ver = { 'path' => $f };
$ver->{'file'} = $f =~ /^\Q$dir\E\/(.*)/ ? $1 : $f;
$ver->{'ver'} = $f =~ /([0-9\.]+)\.jar$/ ? $1 : "Unknown";
$ver->{'ver'} = $f =~ /([0-9][0-9\.]+)\.jar$/ ? $1 : "Unknown";
$ver->{'desc'} = $ver->{'ver'};
push(@rv, $ver);
}