diff options
author | UbitUmarov | 2015-09-01 14:54:35 +0100 |
---|---|---|
committer | UbitUmarov | 2015-09-01 14:54:35 +0100 |
commit | 371c9dd2af01a2e7422ec901ee1f80757284a78c (patch) | |
tree | 058d2a513cacb12efcce0c0df0ae14ad135dbfe2 /OpenSim/ApplicationPlugins/RemoteController | |
parent | remove lixo (diff) | |
parent | dont change camera on crossings (diff) | |
download | opensim-SC-371c9dd2af01a2e7422ec901ee1f80757284a78c.zip opensim-SC-371c9dd2af01a2e7422ec901ee1f80757284a78c.tar.gz opensim-SC-371c9dd2af01a2e7422ec901ee1f80757284a78c.tar.bz2 opensim-SC-371c9dd2af01a2e7422ec901ee1f80757284a78c.tar.xz |
bad merge?
Diffstat (limited to 'OpenSim/ApplicationPlugins/RemoteController')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 288 |
1 files changed, 236 insertions, 52 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 0228c3c..0c582e1 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -75,6 +75,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
75 | 75 | ||
76 | private string m_name = "RemoteAdminPlugin"; | 76 | private string m_name = "RemoteAdminPlugin"; |
77 | private string m_version = "0.0"; | 77 | private string m_version = "0.0"; |
78 | private string m_openSimVersion; | ||
78 | 79 | ||
79 | public string Version | 80 | public string Version |
80 | { | 81 | { |
@@ -94,6 +95,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
94 | 95 | ||
95 | public void Initialise(OpenSimBase openSim) | 96 | public void Initialise(OpenSimBase openSim) |
96 | { | 97 | { |
98 | m_openSimVersion = openSim.GetVersionText(); | ||
99 | |||
97 | m_configSource = openSim.ConfigSource.Source; | 100 | m_configSource = openSim.ConfigSource.Source; |
98 | try | 101 | try |
99 | { | 102 | { |
@@ -136,6 +139,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
136 | availableMethods["admin_region_query"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRegionQueryMethod); | 139 | availableMethods["admin_region_query"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRegionQueryMethod); |
137 | availableMethods["admin_shutdown"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcShutdownMethod); | 140 | availableMethods["admin_shutdown"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcShutdownMethod); |
138 | availableMethods["admin_broadcast"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAlertMethod); | 141 | availableMethods["admin_broadcast"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAlertMethod); |
142 | availableMethods["admin_dialog"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcDialogMethod); | ||
139 | availableMethods["admin_restart"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRestartMethod); | 143 | availableMethods["admin_restart"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRestartMethod); |
140 | availableMethods["admin_load_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadHeightmapMethod); | 144 | availableMethods["admin_load_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadHeightmapMethod); |
141 | availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod); | 145 | availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod); |
@@ -164,8 +168,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
164 | availableMethods["admin_acl_list"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListList); | 168 | availableMethods["admin_acl_list"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListList); |
165 | availableMethods["admin_estate_reload"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcEstateReload); | 169 | availableMethods["admin_estate_reload"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcEstateReload); |
166 | 170 | ||
167 | // Land management | 171 | // Misc |
168 | availableMethods["admin_reset_land"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcResetLand); | 172 | availableMethods["admin_refresh_search"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRefreshSearch); |
173 | availableMethods["admin_refresh_map"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRefreshMap); | ||
174 | availableMethods["admin_get_opensim_version"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetOpenSimVersion); | ||
175 | availableMethods["admin_get_agent_count"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetAgentCount); | ||
169 | 176 | ||
170 | // Either enable full remote functionality or just selected features | 177 | // Either enable full remote functionality or just selected features |
171 | string enabledMethods = m_config.GetString("enabled_methods", "all"); | 178 | string enabledMethods = m_config.GetString("enabled_methods", "all"); |
@@ -266,25 +273,105 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
266 | 273 | ||
267 | try | 274 | try |
268 | { | 275 | { |
269 | m_log.Info("[RADMIN]: Request to restart Region."); | 276 | Scene rebootedScene = null; |
277 | bool restartAll = false; | ||
270 | 278 | ||
271 | CheckRegionParams(requestData, responseData); | 279 | IConfig startupConfig = m_configSource.Configs["Startup"]; |
280 | if (startupConfig != null) | ||
281 | { | ||
282 | if (startupConfig.GetBoolean("InworldRestartShutsDown", false)) | ||
283 | { | ||
284 | rebootedScene = m_application.SceneManager.CurrentOrFirstScene; | ||
285 | restartAll = true; | ||
286 | } | ||
287 | } | ||
272 | 288 | ||
273 | Scene rebootedScene = null; | 289 | if (rebootedScene == null) |
274 | GetSceneFromRegionParams(requestData, responseData, out rebootedScene); | 290 | { |
291 | CheckRegionParams(requestData, responseData); | ||
292 | |||
293 | GetSceneFromRegionParams(requestData, responseData, out rebootedScene); | ||
294 | } | ||
295 | |||
296 | IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>(); | ||
275 | 297 | ||
276 | responseData["success"] = false; | 298 | responseData["success"] = false; |
277 | responseData["accepted"] = true; | 299 | responseData["accepted"] = true; |
278 | responseData["rebooting"] = true; | 300 | responseData["rebooting"] = true; |
279 | 301 | ||
280 | IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>(); | 302 | string message; |
281 | if (restartModule != null) | 303 | List<int> times = new List<int>(); |
304 | |||
305 | if (requestData.ContainsKey("alerts")) | ||
282 | { | 306 | { |
283 | List<int> times = new List<int> { 30, 15 }; | 307 | string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','}); |
308 | if (alertTimes.Length == 1 && Convert.ToInt32(alertTimes[0]) == -1) | ||
309 | { | ||
310 | m_log.Info("[RADMIN]: Request to cancel restart."); | ||
284 | 311 | ||
285 | restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), true); | 312 | if (restartModule != null) |
286 | responseData["success"] = true; | 313 | { |
314 | message = "Restart has been cancelled"; | ||
315 | |||
316 | if (requestData.ContainsKey("message")) | ||
317 | message = requestData["message"].ToString(); | ||
318 | |||
319 | restartModule.AbortRestart(message); | ||
320 | |||
321 | responseData["success"] = true; | ||
322 | responseData["rebooting"] = false; | ||
323 | |||
324 | return; | ||
325 | } | ||
326 | } | ||
327 | foreach (string a in alertTimes) | ||
328 | times.Add(Convert.ToInt32(a)); | ||
329 | } | ||
330 | else | ||
331 | { | ||
332 | int timeout = 30; | ||
333 | if (requestData.ContainsKey("milliseconds")) | ||
334 | timeout = Int32.Parse(requestData["milliseconds"].ToString()) / 1000; | ||
335 | while (timeout > 0) | ||
336 | { | ||
337 | times.Add(timeout); | ||
338 | if (timeout > 300) | ||
339 | timeout -= 120; | ||
340 | else if (timeout > 30) | ||
341 | timeout -= 30; | ||
342 | else | ||
343 | timeout -= 15; | ||
344 | } | ||
287 | } | 345 | } |
346 | |||
347 | m_log.Info("[RADMIN]: Request to restart Region."); | ||
348 | |||
349 | message = "Region is restarting in {0}. Please save what you are doing and log out."; | ||
350 | |||
351 | if (requestData.ContainsKey("message")) | ||
352 | message = requestData["message"].ToString(); | ||
353 | |||
354 | bool notice = true; | ||
355 | if (requestData.ContainsKey("noticetype") | ||
356 | && ((string)requestData["noticetype"] == "dialog")) | ||
357 | { | ||
358 | notice = false; | ||
359 | } | ||
360 | |||
361 | List<Scene> restartList; | ||
362 | |||
363 | if (restartAll) | ||
364 | restartList = m_application.SceneManager.Scenes; | ||
365 | else | ||
366 | restartList = new List<Scene>() { rebootedScene }; | ||
367 | |||
368 | foreach (Scene s in m_application.SceneManager.Scenes) | ||
369 | { | ||
370 | restartModule = s.RequestModuleInterface<IRestartModule>(); | ||
371 | if (restartModule != null) | ||
372 | restartModule.ScheduleRestart(UUID.Zero, message, times.ToArray(), notice); | ||
373 | } | ||
374 | responseData["success"] = true; | ||
288 | } | 375 | } |
289 | catch (Exception e) | 376 | catch (Exception e) |
290 | { | 377 | { |
@@ -321,6 +408,32 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
321 | m_log.Info("[RADMIN]: Alert request complete"); | 408 | m_log.Info("[RADMIN]: Alert request complete"); |
322 | } | 409 | } |
323 | 410 | ||
411 | public void XmlRpcDialogMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | ||
412 | { | ||
413 | Hashtable responseData = (Hashtable)response.Value; | ||
414 | |||
415 | m_log.Info("[RADMIN]: Dialog request started"); | ||
416 | |||
417 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
418 | |||
419 | string message = (string)requestData["message"]; | ||
420 | string fromuuid = (string)requestData["from"]; | ||
421 | m_log.InfoFormat("[RADMIN]: Broadcasting: {0}", message); | ||
422 | |||
423 | responseData["accepted"] = true; | ||
424 | responseData["success"] = true; | ||
425 | |||
426 | m_application.SceneManager.ForEachScene( | ||
427 | delegate(Scene scene) | ||
428 | { | ||
429 | IDialogModule dialogModule = scene.RequestModuleInterface<IDialogModule>(); | ||
430 | if (dialogModule != null) | ||
431 | dialogModule.SendNotificationToUsersInRegion(UUID.Zero, fromuuid, message); | ||
432 | }); | ||
433 | |||
434 | m_log.Info("[RADMIN]: Dialog request complete"); | ||
435 | } | ||
436 | |||
324 | private void XmlRpcLoadHeightmapMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 437 | private void XmlRpcLoadHeightmapMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
325 | { | 438 | { |
326 | m_log.Info("[RADMIN]: Load height maps request started"); | 439 | m_log.Info("[RADMIN]: Load height maps request started"); |
@@ -424,13 +537,32 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
424 | message = "Region is going down now."; | 537 | message = "Region is going down now."; |
425 | } | 538 | } |
426 | 539 | ||
427 | m_application.SceneManager.ForEachScene( | 540 | if (requestData.ContainsKey("noticetype") |
541 | && ((string) requestData["noticetype"] == "dialog")) | ||
542 | { | ||
543 | m_application.SceneManager.ForEachScene( | ||
544 | |||
428 | delegate(Scene scene) | 545 | delegate(Scene scene) |
546 | { | ||
547 | IDialogModule dialogModule = scene.RequestModuleInterface<IDialogModule>(); | ||
548 | if (dialogModule != null) | ||
549 | dialogModule.SendNotificationToUsersInRegion(UUID.Zero, "System", message); | ||
550 | }); | ||
551 | } | ||
552 | else | ||
553 | { | ||
554 | if (!requestData.ContainsKey("noticetype") | ||
555 | || ((string)requestData["noticetype"] != "none")) | ||
556 | { | ||
557 | m_application.SceneManager.ForEachScene( | ||
558 | delegate(Scene scene) | ||
429 | { | 559 | { |
430 | IDialogModule dialogModule = scene.RequestModuleInterface<IDialogModule>(); | 560 | IDialogModule dialogModule = scene.RequestModuleInterface<IDialogModule>(); |
431 | if (dialogModule != null) | 561 | if (dialogModule != null) |
432 | dialogModule.SendGeneralAlert(message); | 562 | dialogModule.SendGeneralAlert(message); |
433 | }); | 563 | }); |
564 | } | ||
565 | } | ||
434 | 566 | ||
435 | // Perform shutdown | 567 | // Perform shutdown |
436 | System.Timers.Timer shutdownTimer = new System.Timers.Timer(timeout); // Wait before firing | 568 | System.Timers.Timer shutdownTimer = new System.Timers.Timer(timeout); // Wait before firing |
@@ -1489,7 +1621,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1489 | } | 1621 | } |
1490 | 1622 | ||
1491 | IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>(); | 1623 | IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>(); |
1492 | Dictionary<string, object> archiveOptions = new Dictionary<string,object>(); | 1624 | Dictionary<string, object> archiveOptions = new Dictionary<string, object>(); |
1493 | if (mergeOar) archiveOptions.Add("merge", null); | 1625 | if (mergeOar) archiveOptions.Add("merge", null); |
1494 | if (skipAssets) archiveOptions.Add("skipAssets", null); | 1626 | if (skipAssets) archiveOptions.Add("skipAssets", null); |
1495 | if (archiver != null) | 1627 | if (archiver != null) |
@@ -1749,21 +1881,31 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1749 | 1881 | ||
1750 | private void XmlRpcRegionQueryMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 1882 | private void XmlRpcRegionQueryMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
1751 | { | 1883 | { |
1752 | m_log.Info("[RADMIN]: Received Query XML Administrator Request"); | ||
1753 | |||
1754 | Hashtable responseData = (Hashtable)response.Value; | 1884 | Hashtable responseData = (Hashtable)response.Value; |
1755 | Hashtable requestData = (Hashtable)request.Params[0]; | 1885 | Hashtable requestData = (Hashtable)request.Params[0]; |
1756 | 1886 | ||
1887 | int flags = 0; | ||
1888 | string text = String.Empty; | ||
1889 | int health = 0; | ||
1890 | responseData["success"] = true; | ||
1891 | |||
1757 | CheckRegionParams(requestData, responseData); | 1892 | CheckRegionParams(requestData, responseData); |
1758 | 1893 | ||
1759 | Scene scene = null; | 1894 | Scene scene = null; |
1760 | GetSceneFromRegionParams(requestData, responseData, out scene); | 1895 | try |
1761 | 1896 | { | |
1762 | int health = scene.GetHealth(); | 1897 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1763 | responseData["health"] = health; | 1898 | health = scene.GetHealth(out flags, out text); |
1899 | } | ||
1900 | catch (Exception e) | ||
1901 | { | ||
1902 | responseData["error"] = null; | ||
1903 | } | ||
1764 | 1904 | ||
1765 | responseData["success"] = true; | 1905 | responseData["success"] = true; |
1766 | m_log.Info("[RADMIN]: Query XML Administrator Request complete"); | 1906 | responseData["health"] = health; |
1907 | responseData["flags"] = flags; | ||
1908 | responseData["message"] = text; | ||
1767 | } | 1909 | } |
1768 | 1910 | ||
1769 | private void XmlRpcConsoleCommandMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 1911 | private void XmlRpcConsoleCommandMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
@@ -2068,55 +2210,97 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2068 | responseData["success"] = true; | 2210 | responseData["success"] = true; |
2069 | } | 2211 | } |
2070 | 2212 | ||
2071 | private void XmlRpcResetLand(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 2213 | private void XmlRpcRefreshSearch(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
2072 | { | 2214 | { |
2073 | Hashtable requestData = (Hashtable)request.Params[0]; | 2215 | m_log.Info("[RADMIN]: Received Refresh Search Request"); |
2216 | |||
2074 | Hashtable responseData = (Hashtable)response.Value; | 2217 | Hashtable responseData = (Hashtable)response.Value; |
2218 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
2219 | |||
2220 | CheckRegionParams(requestData, responseData); | ||
2075 | 2221 | ||
2076 | string musicURL = string.Empty; | 2222 | Scene scene = null; |
2077 | UUID groupID = UUID.Zero; | 2223 | GetSceneFromRegionParams(requestData, responseData, out scene); |
2078 | uint flags = 0; | ||
2079 | bool set_group = false, set_music = false, set_flags = false; | ||
2080 | 2224 | ||
2081 | if (requestData.Contains("group") && requestData["group"] != null) | 2225 | ISearchModule searchModule = scene.RequestModuleInterface<ISearchModule>(); |
2082 | set_group = UUID.TryParse(requestData["group"].ToString(), out groupID); | 2226 | if (searchModule != null) |
2083 | if (requestData.Contains("music") && requestData["music"] != null) | ||
2084 | { | 2227 | { |
2085 | musicURL = requestData["music"].ToString(); | 2228 | searchModule.Refresh(); |
2086 | set_music = true; | 2229 | responseData["success"] = true; |
2087 | } | 2230 | } |
2088 | if (requestData.Contains("flags") && requestData["flags"] != null) | 2231 | else |
2089 | set_flags = UInt32.TryParse(requestData["flags"].ToString(), out flags); | 2232 | { |
2233 | responseData["success"] = false; | ||
2234 | } | ||
2235 | |||
2236 | m_log.Info("[RADMIN]: Refresh Search Request complete"); | ||
2237 | } | ||
2238 | |||
2239 | private void XmlRpcRefreshMap(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | ||
2240 | { | ||
2241 | m_log.Info("[RADMIN]: Received Refresh Map Request"); | ||
2242 | |||
2243 | Hashtable responseData = (Hashtable)response.Value; | ||
2244 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
2090 | 2245 | ||
2091 | m_log.InfoFormat("[RADMIN]: Received Reset Land Request group={0} musicURL={1} flags={2}", | 2246 | CheckRegionParams(requestData, responseData); |
2092 | (set_group ? groupID.ToString() : "unchanged"), | ||
2093 | (set_music ? musicURL : "unchanged"), | ||
2094 | (set_flags ? flags.ToString() : "unchanged")); | ||
2095 | 2247 | ||
2096 | m_application.SceneManager.ForEachScene(delegate(Scene s) | 2248 | Scene scene = null; |
2249 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
2250 | |||
2251 | IMapImageUploadModule mapTileModule = scene.RequestModuleInterface<IMapImageUploadModule>(); | ||
2252 | if (mapTileModule != null) | ||
2097 | { | 2253 | { |
2098 | List<ILandObject> parcels = s.LandChannel.AllParcels(); | 2254 | Util.FireAndForget((x) => |
2099 | foreach (ILandObject p in parcels) | ||
2100 | { | 2255 | { |
2101 | if (set_music) | 2256 | mapTileModule.UploadMapTile(scene); |
2102 | p.LandData.MusicURL = musicURL; | 2257 | }); |
2258 | responseData["success"] = true; | ||
2259 | } | ||
2260 | else | ||
2261 | { | ||
2262 | responseData["success"] = false; | ||
2263 | } | ||
2103 | 2264 | ||
2104 | if (set_group) | 2265 | m_log.Info("[RADMIN]: Refresh Map Request complete"); |
2105 | p.LandData.GroupID = groupID; | 2266 | } |
2106 | 2267 | ||
2107 | if (set_flags) | 2268 | private void XmlRpcGetOpenSimVersion(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
2108 | p.LandData.Flags = flags; | 2269 | { |
2270 | m_log.Info("[RADMIN]: Received Get OpenSim Version Request"); | ||
2109 | 2271 | ||
2110 | s.LandChannel.UpdateLandObject(p.LandData.LocalID, p.LandData); | 2272 | Hashtable responseData = (Hashtable)response.Value; |
2111 | } | ||
2112 | } | ||
2113 | ); | ||
2114 | 2273 | ||
2274 | responseData["version"] = m_openSimVersion; | ||
2115 | responseData["success"] = true; | 2275 | responseData["success"] = true; |
2116 | 2276 | ||
2117 | m_log.Info("[RADMIN]: Reset Land Request complete"); | 2277 | m_log.Info("[RADMIN]: Get OpenSim Version Request complete"); |
2118 | } | 2278 | } |
2119 | 2279 | ||
2280 | private void XmlRpcGetAgentCount(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | ||
2281 | { | ||
2282 | m_log.Info("[RADMIN]: Received Get Agent Count Request"); | ||
2283 | |||
2284 | Hashtable responseData = (Hashtable)response.Value; | ||
2285 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
2286 | |||
2287 | CheckRegionParams(requestData, responseData); | ||
2288 | |||
2289 | Scene scene = null; | ||
2290 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
2291 | |||
2292 | if (scene == null) | ||
2293 | { | ||
2294 | responseData["success"] = false; | ||
2295 | } | ||
2296 | else | ||
2297 | { | ||
2298 | responseData["count"] = scene.GetRootAgentCount(); | ||
2299 | responseData["success"] = true; | ||
2300 | } | ||
2301 | |||
2302 | m_log.Info("[RADMIN]: Get Agent Count Request complete"); | ||
2303 | } | ||
2120 | 2304 | ||
2121 | /// <summary> | 2305 | /// <summary> |
2122 | /// Parse a float with the given parameter name from a request data hash table. | 2306 | /// Parse a float with the given parameter name from a request data hash table. |
@@ -2823,7 +3007,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2823 | /// </summary> | 3007 | /// </summary> |
2824 | private void ApplyNextOwnerPermissions(InventoryItemBase item) | 3008 | private void ApplyNextOwnerPermissions(InventoryItemBase item) |
2825 | { | 3009 | { |
2826 | if (item.InvType == (int)InventoryType.Object) | 3010 | if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) |
2827 | { | 3011 | { |
2828 | uint perms = item.CurrentPermissions; | 3012 | uint perms = item.CurrentPermissions; |
2829 | PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms); | 3013 | PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms); |