// MC Server JAR Management public ActionResult SelectServerVersion(string jarFile) { var config = WebConfig.OpenWebConfiguration("~"); config.AppSettings.Settings["McJarFile"].Value = jarFile; config.Save(); return(RedirectToAction("")); }
public ActionResult UpdateServer(string ver) { // http://assets.minecraft.net/ <- This is an XML file // http://assets.minecraft.net/V_E_R/minecraft_server.jar // Old Stuff, from beta 1.8 pre till 1.5.2, and from 11w47 till 13w12 snapshots // https://s3.amazonaws.com/Minecraft.Download/versions/versions.json // https://s3.amazonaws.com/Minecraft.Download/versions/V.E.R/minecraft_server.V.E.R.jar // Minimum Available Server Version: 1.2.5 var client = new System.Net.WebClient(); client.CachePolicy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable); HttpContext.Application["UpdateProgress"] = "Starting..."; // Get Latest Version if (ver.StartsWith("Latest")) { var jObj = JObject.Parse(client.DownloadString( "https://s3.amazonaws.com/Minecraft.Download/versions/versions.json")); ver = jObj["latest"][ver.Split(' ')[1].ToLower()].Value <string>(); } var jarFile = "minecraft_server." + ver + ".jar"; var jarUri = "https://s3.amazonaws.com/Minecraft.Download/versions/" + ver + "/" + jarFile; var config = WebConfig.OpenWebConfiguration("~"); var settings = config.AppSettings.Settings; client.DownloadProgressChanged += (o, e) => HttpContext.Application["UpdateProgress"] = e.ProgressPercentage + "%"; client.DownloadFileCompleted += (o, e) => { if (e.Error != null) { HttpContext.Application["UpdateProgress"] = "Error: " + e.Error; return; } HttpContext.Application["UpdateProgress"] = "Completed"; settings["McJarFile"].Value = jarFile; config.Save(); }; HttpContext.Application["UpdateProgress"] = "0%"; System.Threading.Tasks.Task.Run(() => // Workaround to allow Async call { try { client.DownloadFileAsync(new Uri(jarUri), settings["McServerPath"].Value + jarFile); } catch (Exception ex) { HttpContext.Application["UpdateProgress"] = "Error: " + ex; } }); return(Content("OK " + DateTime.Now.Ticks)); }