From e74b0deb4ebc46b2688368e2e793f9fd1defd322 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 25 Nov 2010 03:43:23 +0000 Subject: [PATCH] Fix up remote controller. --- .../RemoteController/RemoteAdminPlugin.cs | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 7be152beab..27e73f6b09 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -216,18 +216,41 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (!m_application.SceneManager.TryGetScene(regionID, out rebootedScene)) throw new Exception("region not found"); - int timeout = 30; string message; + List times = new List(); - if (requestData.ContainsKey("restart") - && ((string)requestData["restart"] == "delayed") - && requestData.ContainsKey("milliseconds")) + if (requestData.ContainsKey("alerts")) { - timeout = Int32.Parse(requestData["milliseconds"].ToString()) / 1000; + string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','}); + foreach (string a in alertTimes) + times.Add(Convert.ToInt32(a)); + } + else + { + int timeout = 30; + if (requestData.ContainsKey("milliseconds")) + timeout = Int32.Parse(requestData["milliseconds"].ToString()) / 1000; + while (timeout > 0) + { + times.Add(timeout); + if (timeout > 300) + timeout -= 120; + else if (timeout > 30) + timeout -= 30; + else + timeout -= 15; + } } + if (requestData.ContainsKey("restart") + && ((string)requestData["restart"] == "delayed")) + + message = "Region is restarting in {0}. Please save what you are doing and log out."; + if (requestData.ContainsKey("message")) + message = requestData["message"].ToString(); + bool notice = true; if (requestData.ContainsKey("noticetype") && ((string)requestData["noticetype"] == "dialog")) @@ -240,9 +263,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController IRestartModule restartModule = rebootedScene.RequestModuleInterface(); if (restartModule != null) { - List times = new List { 30, 15 }; - - restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), notice); + restartModule.ScheduleRestart(UUID.Zero, message, times.ToArray(), notice); responseData["success"] = true; } response.Value = responseData;