Add UI for changing the minecraft server version
This commit is contained in:
parent
53982c2c0f
commit
5e15e740e1
15
minecraft/change_version.cgi
Normal file
15
minecraft/change_version.cgi
Normal file
@ -0,0 +1,15 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Update the current version
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './minecraft-lib.pl';
|
||||
our (%in, %text, %config);
|
||||
&ReadParse();
|
||||
|
||||
my @vers = &list_installed_versions();
|
||||
my ($v) = grep { $_->{'file'} eq $in{'ver'} } @vers;
|
||||
$v || &error($text{'versions_echange'}." ".$in{'ver'});
|
||||
&save_minecraft_jar($in{'ver'});
|
||||
&webmin_log("changeversion", undef, $in{'ver'});
|
||||
&redirect("");
|
BIN
minecraft/images/versions.gif
Normal file
BIN
minecraft/images/versions.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1001 B |
@ -63,17 +63,20 @@ my @links = ( "edit_conf.cgi", "edit_users.cgi",
|
||||
"view_logs.cgi", "list_conns.cgi",
|
||||
"list_worlds.cgi", "edit_cmds.cgi",
|
||||
"console.cgi", "edit_backup.cgi",
|
||||
"list_playtime.cgi", "edit_manual.cgi" );
|
||||
"list_playtime.cgi", "list_versions.cgi",
|
||||
"edit_manual.cgi" );
|
||||
my @titles = ( $text{'conf_title'}, $text{'users_title'},
|
||||
$text{'logs_title'}, $text{'conns_title'},
|
||||
$text{'worlds_title'}, $text{'cmds_title'},
|
||||
$text{'console_title'}, $text{'backup_title'},
|
||||
$text{'playtime_title'}, $text{'manual_title'} );
|
||||
$text{'playtime_title'}, $text{'versions_title'},
|
||||
$text{'manual_title'} );
|
||||
my @icons = ( "images/conf.gif", "images/users.gif",
|
||||
"images/logs.gif", "images/conns.gif",
|
||||
"images/worlds.gif", "images/cmds.gif",
|
||||
"images/console.gif", "images/backup.gif",
|
||||
"images/playtime.gif", "images/manual.gif" );
|
||||
"images/playtime.gif", "images/versions.gif",
|
||||
"images/manual.gif" );
|
||||
&icons_table(\@links, \@titles, \@icons, 5);
|
||||
|
||||
print &ui_hr();
|
||||
|
@ -318,6 +318,8 @@ log_delboot=Disabled server at boot time
|
||||
log_enable_backup=Enabled scheduled backups to $1
|
||||
log_disable_backup=Disabled scheduled backups
|
||||
log_playtime=Changed play time limits
|
||||
log_changeversion=Changed server to version $1
|
||||
log_addversion=Added server version $1
|
||||
|
||||
monitor_up=Minecraft Server Alive
|
||||
monitor_latest=Minecraft Server Up To Date
|
||||
@ -354,3 +356,19 @@ playtime_eusers=No users to limit entered
|
||||
playtime_edays=No days of the week selected
|
||||
playtime_eips=No IP addresses entered
|
||||
playtime_total=Total time
|
||||
|
||||
versions_title=Minecraft Versions
|
||||
versions_file=Filename
|
||||
versions_desc=Description
|
||||
versions_size=JAR Size
|
||||
versions_save=Change Version
|
||||
versions_save2=Change Version and Restart Server
|
||||
versions_none=No Minecraft versions found!
|
||||
versions_header=Add Minecraft Version
|
||||
versions_src=JAR file source
|
||||
versions_src0=Download from URL
|
||||
versions_src1=Upload file
|
||||
versions_newver=Server version
|
||||
versions_newsame=Work out from filename
|
||||
versions_all=Install Version
|
||||
versions_echange=Selected version does not exist
|
||||
|
51
minecraft/list_versions.cgi
Normal file
51
minecraft/list_versions.cgi
Normal file
@ -0,0 +1,51 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show available server versions
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './minecraft-lib.pl';
|
||||
our (%in, %text, %config);
|
||||
|
||||
&ui_print_header(undef, $text{'versions_title'}, "");
|
||||
|
||||
my @vers = &list_installed_versions();
|
||||
my $cur = &get_minecraft_jar();
|
||||
if (@vers) {
|
||||
print &ui_form_start("change_version.cgi");
|
||||
print &ui_columns_start([ "",
|
||||
$text{'versions_file'},
|
||||
$text{'versions_desc'},
|
||||
$text{'versions_size'} ], 100);
|
||||
foreach my $v (@vers) {
|
||||
my @st = stat($v->{'path'});
|
||||
print &ui_radio_columns_row([
|
||||
$v->{'file'},
|
||||
$v->{'desc'},
|
||||
&nice_size($st[9]),
|
||||
], undef, "ver", $v->{'file'},
|
||||
&same_file($v->{'path'}, $cur));
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_form_end([ [ undef, $text{'versions_save'} ] ]);
|
||||
}
|
||||
else {
|
||||
print "<b>$text{'versions_none'}</b><p>\n";
|
||||
}
|
||||
|
||||
# Show form to download / add one
|
||||
print &ui_hr();
|
||||
print &ui_form_start("add_version.cgi", "form-data");
|
||||
print &ui_table_start($text{'versions_header'}, undef, 2);
|
||||
|
||||
print &ui_table_row($text{'versions_src'},
|
||||
&ui_radio_table("mode", 0,
|
||||
[ [ 0, $text{'versions_src0'}, &ui_textbox("url", undef, 60) ],
|
||||
[ 1, $text{'versions_src1'}, &ui_upload("jar") ] ]));
|
||||
|
||||
print &ui_table_row($text{'versions_newver'},
|
||||
&ui_opt_textbox("newver", undef, 10, $text{'versions_newsame'}));
|
||||
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ undef, $text{'versions_all'} ] ]);
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
@ -11,6 +11,9 @@ my ($user, $script, $action, $type, $object, $p) = @_;
|
||||
if ($object eq 'backup') {
|
||||
return &text('log_'.$action.'_backup', $object);
|
||||
}
|
||||
elsif ($action eq 'changeversion' || $action eq 'addversion') {
|
||||
return &text('log_'.$action, "<tt>".&html_escape($object)."</tt>");
|
||||
}
|
||||
else {
|
||||
return $text{'log_'.$action};
|
||||
}
|
||||
|
@ -11,7 +11,8 @@ use POSIX;
|
||||
&init_config();
|
||||
our ($module_root_directory, %text, %gconfig, $root_directory, %config,
|
||||
$module_name, $remote_user, $base_remote_user, $gpgpath,
|
||||
$module_config_directory, @lang_order_list, @root_directories);
|
||||
$module_config_directory, @lang_order_list, @root_directories,
|
||||
$module_config_file);
|
||||
our $history_file = "$module_config_directory/history.txt";
|
||||
our $download_page_url = "https://www.minecraft.net/en-us/download/server/";
|
||||
our $playtime_dir = "$module_config_directory/playtime";
|
||||
@ -1175,4 +1176,48 @@ my $jar = &get_minecraft_jar();
|
||||
return $jar =~ /bukkit-[0-9]/ ? 'bukkit' : 'default';
|
||||
}
|
||||
|
||||
# list_installed_versions()
|
||||
# Returns a list of hash refs, one per available server version
|
||||
sub list_installed_versions
|
||||
{
|
||||
# Find all the jars
|
||||
my @files;
|
||||
my $dir = $config{'minecraft_dir'};
|
||||
my $cur = &get_minecraft_jar();
|
||||
opendir(DIR, $dir);
|
||||
foreach my $f (readdir(DIR)) {
|
||||
push(@files, $dir."/".$f) if ($f =~ /\.jar$/);
|
||||
}
|
||||
closedir(DIR);
|
||||
push(@files, $cur) if (&indexof($cur, @files) < 0);
|
||||
|
||||
# Figure out what they are
|
||||
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->{'desc'} = $ver->{'ver'};
|
||||
push(@rv, $ver);
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# save_minecraft_jar(file)
|
||||
# Update the server jar file
|
||||
sub save_minecraft_jar
|
||||
{
|
||||
my ($file) = @_;
|
||||
my $dir = $config{'minecraft_dir'};
|
||||
&lock_file($module_config_file);
|
||||
if ($file =~ /^\Q$dir\E\/(.*)$/) {
|
||||
$config{'minecraft_jar'} = $1;
|
||||
}
|
||||
else {
|
||||
$config{'minecraft_jar'} = $file;
|
||||
}
|
||||
&save_module_config(\%config);
|
||||
&unlock_file($module_config_file);
|
||||
}
|
||||
|
||||
1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user