|
|
@ -1,9 +1,10 @@ |
|
|
|
package kcauldron.updater; |
|
|
|
package kcauldron.updater; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.io.File; |
|
|
|
|
|
|
|
import java.io.FileOutputStream; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.nio.file.Files; |
|
|
|
import java.io.OutputStream; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
@ -11,10 +12,13 @@ import kcauldron.KCauldron; |
|
|
|
import kcauldron.updater.KVersionRetriever.IVersionCheckCallback; |
|
|
|
import kcauldron.updater.KVersionRetriever.IVersionCheckCallback; |
|
|
|
import net.minecraft.server.MinecraftServer; |
|
|
|
import net.minecraft.server.MinecraftServer; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.io.IOUtils; |
|
|
|
import org.apache.http.HttpResponse; |
|
|
|
import org.apache.http.HttpResponse; |
|
|
|
import org.apache.http.client.methods.HttpUriRequest; |
|
|
|
import org.apache.http.client.methods.HttpUriRequest; |
|
|
|
import org.apache.http.client.methods.RequestBuilder; |
|
|
|
import org.apache.http.client.methods.RequestBuilder; |
|
|
|
|
|
|
|
import org.apache.http.impl.client.CloseableHttpClient; |
|
|
|
import org.apache.http.impl.client.HttpClientBuilder; |
|
|
|
import org.apache.http.impl.client.HttpClientBuilder; |
|
|
|
|
|
|
|
import org.apache.http.impl.client.LaxRedirectStrategy; |
|
|
|
import org.bukkit.Bukkit; |
|
|
|
import org.bukkit.Bukkit; |
|
|
|
import org.bukkit.ChatColor; |
|
|
|
import org.bukkit.ChatColor; |
|
|
|
import org.bukkit.command.CommandSender; |
|
|
|
import org.bukkit.command.CommandSender; |
|
|
@ -113,9 +117,9 @@ public class KCauldronUpdater implements Runnable, IVersionCheckCallback { |
|
|
|
} |
|
|
|
} |
|
|
|
File kbootstrap = File.createTempFile("kbootstrap", |
|
|
|
File kbootstrap = File.createTempFile("kbootstrap", |
|
|
|
String.valueOf(System.currentTimeMillis())); |
|
|
|
String.valueOf(System.currentTimeMillis())); |
|
|
|
download("https://prok.pw/repo/pw/prok/KBootstrap/" |
|
|
|
download( |
|
|
|
+ kbootstrapVersion + "/KBootstrap-" + kbootstrapVersion |
|
|
|
"https://api.prok.pw/repo/blob/pw.prok/KBootstrap/latest/app", |
|
|
|
+ "-app.jar", kbootstrap); |
|
|
|
kbootstrap); |
|
|
|
if (!quite) { |
|
|
|
if (!quite) { |
|
|
|
mSender.sendMessage(ChatColor.DARK_PURPLE |
|
|
|
mSender.sendMessage(ChatColor.DARK_PURPLE |
|
|
|
+ "Installing KCauldron " + mVersion |
|
|
|
+ "Installing KCauldron " + mVersion |
|
|
@ -130,12 +134,15 @@ public class KCauldronUpdater implements Runnable, IVersionCheckCallback { |
|
|
|
command.add("-jar"); |
|
|
|
command.add("-jar"); |
|
|
|
command.add(kbootstrap.getCanonicalPath()); |
|
|
|
command.add(kbootstrap.getCanonicalPath()); |
|
|
|
command.add("--serverDir"); |
|
|
|
command.add("--serverDir"); |
|
|
|
command.add(KCauldron.getServerLocation().getCanonicalPath()); |
|
|
|
command.add(KCauldron.getServerHome().getCanonicalPath()); |
|
|
|
command.add("--installKCauldron"); |
|
|
|
command.add("--installKCauldron"); |
|
|
|
command.add(mVersion); |
|
|
|
command.add(String.format("%s:%s:%s", KCauldron.getGroup(), KCauldron.getChannel(), mVersion)); |
|
|
|
command.add("--serverSymlinks"); |
|
|
|
final String[] symlinks = MinecraftServer.kcauldronConfig.updatecheckerSymlinks |
|
|
|
command.add(MinecraftServer.kcauldronConfig.updatecheckerSymlinks |
|
|
|
.getValue().trim().split(File.pathSeparator); |
|
|
|
.getValue()); |
|
|
|
for (String symlink : symlinks) { |
|
|
|
|
|
|
|
command.add("--serverSymlinks"); |
|
|
|
|
|
|
|
command.add(symlink); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Bukkit.getConsoleSender().sendMessage( |
|
|
|
Bukkit.getConsoleSender().sendMessage( |
|
|
|
"Starting command: " + Joiner.on(' ').join(command)); |
|
|
|
"Starting command: " + Joiner.on(' ').join(command)); |
|
|
@ -180,13 +187,20 @@ public class KCauldronUpdater implements Runnable, IVersionCheckCallback { |
|
|
|
.addParameter("port", |
|
|
|
.addParameter("port", |
|
|
|
String.valueOf(MinecraftServer.getServer().getPort())) |
|
|
|
String.valueOf(MinecraftServer.getServer().getPort())) |
|
|
|
.build(); |
|
|
|
.build(); |
|
|
|
HttpResponse response = HttpClientBuilder.create() |
|
|
|
CloseableHttpClient client = HttpClientBuilder.create() |
|
|
|
.setUserAgent("KCauldron Updater").build().execute(request); |
|
|
|
.setRedirectStrategy(new LaxRedirectStrategy()) |
|
|
|
|
|
|
|
.setUserAgent("KCauldron Updater").build(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HttpResponse response = client.execute(request); |
|
|
|
if (response.getStatusLine().getStatusCode() != 200) { |
|
|
|
if (response.getStatusLine().getStatusCode() != 200) { |
|
|
|
|
|
|
|
client.close(); |
|
|
|
throw new IllegalStateException("Could not download " + url); |
|
|
|
throw new IllegalStateException("Could not download " + url); |
|
|
|
} |
|
|
|
} |
|
|
|
InputStream is = response.getEntity().getContent(); |
|
|
|
InputStream is = response.getEntity().getContent(); |
|
|
|
Files.copy(is, destination.toPath()); |
|
|
|
OutputStream os = new FileOutputStream(destination); |
|
|
|
|
|
|
|
IOUtils.copy(is, os); |
|
|
|
is.close(); |
|
|
|
is.close(); |
|
|
|
|
|
|
|
os.close(); |
|
|
|
|
|
|
|
client.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|