diff options
Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 406 |
1 files changed, 191 insertions, 215 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 7106e6a..7f1a0ed 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -257,17 +257,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
257 | { | 257 | { |
258 | m_log.Info("[RADMIN]: Request to restart Region."); | 258 | m_log.Info("[RADMIN]: Request to restart Region."); |
259 | 259 | ||
260 | CheckStringParameters(requestData, responseData, new string[] {"regionID"}); | 260 | CheckRegionParams(requestData, responseData); |
261 | 261 | ||
262 | UUID regionID = new UUID((string) requestData["regionID"]); | 262 | Scene rebootedScene = null; |
263 | 263 | GetSceneFromRegionParams(requestData, responseData, out rebootedScene); | |
264 | Scene rebootedScene; | ||
265 | 264 | ||
266 | responseData["success"] = false; | 265 | responseData["success"] = false; |
267 | responseData["accepted"] = true; | 266 | responseData["accepted"] = true; |
268 | if (!m_application.SceneManager.TryGetScene(regionID, out rebootedScene)) | ||
269 | throw new Exception("region not found"); | ||
270 | |||
271 | responseData["rebooting"] = true; | 267 | responseData["rebooting"] = true; |
272 | 268 | ||
273 | IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>(); | 269 | IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>(); |
@@ -329,14 +325,15 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
329 | // } | 325 | // } |
330 | 326 | ||
331 | CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"}); | 327 | CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"}); |
328 | CheckRegionParams(requestData, responseData); | ||
332 | 329 | ||
333 | string file = (string) requestData["filename"]; | 330 | Scene scene = null; |
334 | UUID regionID = (UUID) (string) requestData["regionid"]; | 331 | GetSceneFromRegionParams(requestData, responseData, out scene); |
335 | m_log.InfoFormat("[RADMIN]: Terrain Loading: {0}", file); | 332 | string file = (string)requestData["filename"]; |
336 | 333 | ||
337 | responseData["accepted"] = true; | 334 | responseData["accepted"] = true; |
338 | 335 | ||
339 | LoadHeightmap(file, regionID); | 336 | LoadHeightmap(file, scene.RegionInfo.RegionID); |
340 | 337 | ||
341 | responseData["success"] = true; | 338 | responseData["success"] = true; |
342 | 339 | ||
@@ -353,18 +350,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
353 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); | 350 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); |
354 | 351 | ||
355 | CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" }); | 352 | CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" }); |
353 | CheckRegionParams(requestData, responseData); | ||
354 | |||
355 | Scene region = null; | ||
356 | GetSceneFromRegionParams(requestData, responseData, out region); | ||
356 | 357 | ||
357 | string file = (string)requestData["filename"]; | 358 | string file = (string)requestData["filename"]; |
358 | UUID regionID = (UUID)(string)requestData["regionid"]; | ||
359 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); | 359 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); |
360 | 360 | ||
361 | responseData["accepted"] = true; | 361 | responseData["accepted"] = true; |
362 | 362 | ||
363 | Scene region = null; | ||
364 | |||
365 | if (!m_application.SceneManager.TryGetScene(regionID, out region)) | ||
366 | throw new Exception("1: unable to get a scene with that name"); | ||
367 | |||
368 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); | 363 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); |
369 | if (null == terrainModule) throw new Exception("terrain module not available"); | 364 | if (null == terrainModule) throw new Exception("terrain module not available"); |
370 | 365 | ||
@@ -732,7 +727,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
732 | 727 | ||
733 | responseData["success"] = true; | 728 | responseData["success"] = true; |
734 | responseData["region_name"] = region.RegionName; | 729 | responseData["region_name"] = region.RegionName; |
735 | responseData["region_uuid"] = region.RegionID.ToString(); | 730 | responseData["region_id"] = region.RegionID.ToString(); |
731 | responseData["region_uuid"] = region.RegionID.ToString(); //Deprecate July 2012 | ||
736 | 732 | ||
737 | m_log.Info("[RADMIN]: CreateRegion: request complete"); | 733 | m_log.Info("[RADMIN]: CreateRegion: request complete"); |
738 | } | 734 | } |
@@ -774,16 +770,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
774 | lock (m_requestLock) | 770 | lock (m_requestLock) |
775 | { | 771 | { |
776 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); | 772 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); |
773 | CheckRegionParams(requestData, responseData); | ||
777 | 774 | ||
778 | Scene scene = null; | 775 | Scene scene = null; |
779 | string regionName = (string) requestData["region_name"]; | 776 | GetSceneFromRegionParams(requestData, responseData, out scene); |
780 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
781 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
782 | 777 | ||
783 | m_application.RemoveRegion(scene, true); | 778 | m_application.RemoveRegion(scene, true); |
784 | 779 | ||
785 | responseData["success"] = true; | 780 | responseData["success"] = true; |
786 | responseData["region_name"] = regionName; | 781 | responseData["region_name"] = scene.RegionInfo.RegionName; |
782 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
787 | 783 | ||
788 | m_log.Info("[RADMIN]: DeleteRegion: request complete"); | 784 | m_log.Info("[RADMIN]: DeleteRegion: request complete"); |
789 | } | 785 | } |
@@ -823,44 +819,21 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
823 | 819 | ||
824 | Hashtable responseData = (Hashtable)response.Value; | 820 | Hashtable responseData = (Hashtable)response.Value; |
825 | Hashtable requestData = (Hashtable)request.Params[0]; | 821 | Hashtable requestData = (Hashtable)request.Params[0]; |
826 | Scene scene = null; | ||
827 | 822 | ||
828 | lock (m_requestLock) | 823 | lock (m_requestLock) |
829 | { | 824 | { |
830 | if (requestData.ContainsKey("region_id") && | 825 | CheckRegionParams(requestData, responseData); |
831 | !String.IsNullOrEmpty((string) requestData["region_id"])) | ||
832 | { | ||
833 | // Region specified by UUID | ||
834 | UUID regionID = (UUID) (string) requestData["region_id"]; | ||
835 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
836 | throw new Exception(String.Format("region \"{0}\" does not exist", regionID)); | ||
837 | |||
838 | m_application.CloseRegion(scene); | ||
839 | 826 | ||
840 | responseData["success"] = true; | 827 | Scene scene = null; |
841 | responseData["region_id"] = regionID; | 828 | GetSceneFromRegionParams(requestData, responseData, out scene); |
842 | |||
843 | response.Value = responseData; | ||
844 | } | ||
845 | else if ( | ||
846 | requestData.ContainsKey("region_name") | ||
847 | && !String.IsNullOrEmpty((string) requestData["region_name"])) | ||
848 | { | ||
849 | // Region specified by name | ||
850 | 829 | ||
851 | string regionName = (string) requestData["region_name"]; | 830 | m_application.CloseRegion(scene); |
852 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
853 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
854 | 831 | ||
855 | m_application.CloseRegion(scene); | 832 | responseData["success"] = true; |
833 | responseData["region_name"] = scene.RegionInfo.RegionName; | ||
834 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
856 | 835 | ||
857 | responseData["success"] = true; | 836 | response.Value = responseData; |
858 | responseData["region_name"] = regionName; | ||
859 | } | ||
860 | else | ||
861 | { | ||
862 | throw new Exception("no region specified"); | ||
863 | } | ||
864 | 837 | ||
865 | m_log.Info("[RADMIN]: CloseRegion: request complete"); | 838 | m_log.Info("[RADMIN]: CloseRegion: request complete"); |
866 | } | 839 | } |
@@ -907,12 +880,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
907 | 880 | ||
908 | lock (m_requestLock) | 881 | lock (m_requestLock) |
909 | { | 882 | { |
910 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); | 883 | CheckRegionParams(requestData, responseData); |
911 | 884 | ||
912 | Scene scene = null; | 885 | Scene scene = null; |
913 | string regionName = (string) requestData["region_name"]; | 886 | GetSceneFromRegionParams(requestData, responseData, out scene); |
914 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
915 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
916 | 887 | ||
917 | // Modify access | 888 | // Modify access |
918 | scene.RegionInfo.EstateSettings.PublicAccess = | 889 | scene.RegionInfo.EstateSettings.PublicAccess = |
@@ -942,7 +913,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
942 | } | 913 | } |
943 | 914 | ||
944 | responseData["success"] = true; | 915 | responseData["success"] = true; |
945 | responseData["region_name"] = regionName; | 916 | responseData["region_name"] = scene.RegionInfo.RegionName; |
917 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
946 | 918 | ||
947 | m_log.Info("[RADMIN]: ModifyRegion: request complete"); | 919 | m_log.Info("[RADMIN]: ModifyRegion: request complete"); |
948 | } | 920 | } |
@@ -1338,22 +1310,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1338 | try | 1310 | try |
1339 | { | 1311 | { |
1340 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1312 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1313 | CheckRegionParams(requestData, responseData); | ||
1341 | 1314 | ||
1342 | string filename = (string) requestData["filename"]; | ||
1343 | Scene scene = null; | 1315 | Scene scene = null; |
1344 | if (requestData.Contains("region_uuid")) | 1316 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1345 | { | 1317 | |
1346 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1318 | string filename = (string) requestData["filename"]; |
1347 | if (!m_application.SceneManager.TryGetScene(region_uuid, out scene)) | ||
1348 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1349 | } | ||
1350 | else if (requestData.Contains("region_name")) | ||
1351 | { | ||
1352 | string region_name = (string) requestData["region_name"]; | ||
1353 | if (!m_application.SceneManager.TryGetScene(region_name, out scene)) | ||
1354 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1355 | } | ||
1356 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1357 | 1319 | ||
1358 | bool mergeOar = false; | 1320 | bool mergeOar = false; |
1359 | bool skipAssets = false; | 1321 | bool skipAssets = false; |
@@ -1434,22 +1396,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1434 | try | 1396 | try |
1435 | { | 1397 | { |
1436 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1398 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1399 | CheckRegionParams(requestData, responseData); | ||
1437 | 1400 | ||
1438 | string filename = (string)requestData["filename"]; | ||
1439 | Scene scene = null; | 1401 | Scene scene = null; |
1440 | if (requestData.Contains("region_uuid")) | 1402 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1441 | { | 1403 | |
1442 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1404 | string filename = (string)requestData["filename"]; |
1443 | if (!m_application.SceneManager.TryGetScene(region_uuid, out scene)) | ||
1444 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1445 | } | ||
1446 | else if (requestData.Contains("region_name")) | ||
1447 | { | ||
1448 | string region_name = (string) requestData["region_name"]; | ||
1449 | if (!m_application.SceneManager.TryGetScene(region_name, out scene)) | ||
1450 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1451 | } | ||
1452 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1453 | 1405 | ||
1454 | Dictionary<string, object> options = new Dictionary<string, object>(); | 1406 | Dictionary<string, object> options = new Dictionary<string, object>(); |
1455 | 1407 | ||
@@ -1521,25 +1473,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1521 | try | 1473 | try |
1522 | { | 1474 | { |
1523 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1475 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1476 | CheckRegionParams(requestData, responseData); | ||
1524 | 1477 | ||
1525 | string filename = (string) requestData["filename"]; | 1478 | Scene scene = null; |
1526 | if (requestData.Contains("region_uuid")) | 1479 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1527 | { | ||
1528 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1529 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1530 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1531 | |||
1532 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1533 | } | ||
1534 | else if (requestData.Contains("region_name")) | ||
1535 | { | ||
1536 | string region_name = (string) requestData["region_name"]; | ||
1537 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1538 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1539 | 1480 | ||
1540 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | 1481 | string filename = (string) requestData["filename"]; |
1541 | } | ||
1542 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1543 | 1482 | ||
1544 | responseData["switched"] = true; | 1483 | responseData["switched"] = true; |
1545 | 1484 | ||
@@ -1587,23 +1526,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1587 | try | 1526 | try |
1588 | { | 1527 | { |
1589 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1528 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1529 | CheckRegionParams(requestData, responseData); | ||
1530 | |||
1531 | Scene scene = null; | ||
1532 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
1590 | 1533 | ||
1591 | string filename = (string) requestData["filename"]; | 1534 | string filename = (string) requestData["filename"]; |
1592 | if (requestData.Contains("region_uuid")) | ||
1593 | { | ||
1594 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1595 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1596 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1597 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1598 | } | ||
1599 | else if (requestData.Contains("region_name")) | ||
1600 | { | ||
1601 | string region_name = (string) requestData["region_name"]; | ||
1602 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1603 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1604 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1605 | } | ||
1606 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1607 | 1535 | ||
1608 | responseData["switched"] = true; | 1536 | responseData["switched"] = true; |
1609 | 1537 | ||
@@ -1647,33 +1575,15 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1647 | Hashtable responseData = (Hashtable)response.Value; | 1575 | Hashtable responseData = (Hashtable)response.Value; |
1648 | Hashtable requestData = (Hashtable)request.Params[0]; | 1576 | Hashtable requestData = (Hashtable)request.Params[0]; |
1649 | 1577 | ||
1650 | responseData["success"] = true; | 1578 | CheckRegionParams(requestData, responseData); |
1651 | |||
1652 | if (requestData.Contains("region_uuid")) | ||
1653 | { | ||
1654 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1655 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1656 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1657 | |||
1658 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1659 | } | ||
1660 | else if (requestData.Contains("region_name")) | ||
1661 | { | ||
1662 | string region_name = (string) requestData["region_name"]; | ||
1663 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1664 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1665 | 1579 | ||
1666 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | 1580 | Scene scene = null; |
1667 | } | 1581 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1668 | else | ||
1669 | { | ||
1670 | throw new Exception("neither region_name nor region_uuid given"); | ||
1671 | } | ||
1672 | 1582 | ||
1673 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1674 | int health = scene.GetHealth(); | 1583 | int health = scene.GetHealth(); |
1675 | responseData["health"] = health; | 1584 | responseData["health"] = health; |
1676 | 1585 | ||
1586 | responseData["success"] = true; | ||
1677 | m_log.Info("[RADMIN]: Query XML Administrator Request complete"); | 1587 | m_log.Info("[RADMIN]: Query XML Administrator Request complete"); |
1678 | } | 1588 | } |
1679 | 1589 | ||
@@ -1700,24 +1610,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1700 | 1610 | ||
1701 | responseData["success"] = true; | 1611 | responseData["success"] = true; |
1702 | 1612 | ||
1703 | if (requestData.Contains("region_uuid")) | 1613 | CheckRegionParams(requestData, responseData); |
1704 | { | ||
1705 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1706 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1707 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1708 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1709 | } | ||
1710 | else if (requestData.Contains("region_name")) | ||
1711 | { | ||
1712 | string region_name = (string) requestData["region_name"]; | ||
1713 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1714 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1715 | 1614 | ||
1716 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | 1615 | Scene scene = null; |
1717 | } | 1616 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1718 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1719 | 1617 | ||
1720 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1721 | scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; | 1618 | scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; |
1722 | 1619 | ||
1723 | if (scene.RegionInfo.Persistent) | 1620 | if (scene.RegionInfo.Persistent) |
@@ -1733,32 +1630,17 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1733 | Hashtable responseData = (Hashtable)response.Value; | 1630 | Hashtable responseData = (Hashtable)response.Value; |
1734 | Hashtable requestData = (Hashtable)request.Params[0]; | 1631 | Hashtable requestData = (Hashtable)request.Params[0]; |
1735 | 1632 | ||
1736 | if (requestData.Contains("region_uuid")) | 1633 | CheckRegionParams(requestData, responseData); |
1737 | { | 1634 | |
1738 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1635 | Scene scene = null; |
1739 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 1636 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1740 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1741 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1742 | } | ||
1743 | else if (requestData.Contains("region_name")) | ||
1744 | { | ||
1745 | string region_name = (string) requestData["region_name"]; | ||
1746 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1747 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1748 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1749 | } | ||
1750 | else | ||
1751 | { | ||
1752 | throw new Exception("neither region_name nor region_uuid given"); | ||
1753 | } | ||
1754 | 1637 | ||
1755 | int addedUsers = 0; | 1638 | int addedUsers = 0; |
1756 | 1639 | ||
1757 | if (requestData.Contains("users")) | 1640 | if (requestData.Contains("users")) |
1758 | { | 1641 | { |
1759 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1642 | UUID scopeID = scene.RegionInfo.ScopeID; |
1760 | IUserAccountService userService = m_application.SceneManager.CurrentOrFirstScene.UserAccountService; | 1643 | IUserAccountService userService = scene.UserAccountService; |
1761 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1762 | Hashtable users = (Hashtable) requestData["users"]; | 1644 | Hashtable users = (Hashtable) requestData["users"]; |
1763 | List<UUID> uuids = new List<UUID>(); | 1645 | List<UUID> uuids = new List<UUID>(); |
1764 | foreach (string name in users.Values) | 1646 | foreach (string name in users.Values) |
@@ -1797,32 +1679,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1797 | Hashtable responseData = (Hashtable)response.Value; | 1679 | Hashtable responseData = (Hashtable)response.Value; |
1798 | Hashtable requestData = (Hashtable)request.Params[0]; | 1680 | Hashtable requestData = (Hashtable)request.Params[0]; |
1799 | 1681 | ||
1800 | responseData["success"] = true; | 1682 | CheckRegionParams(requestData, responseData); |
1801 | 1683 | ||
1802 | if (requestData.Contains("region_uuid")) | 1684 | Scene scene = null; |
1803 | { | 1685 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1804 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1805 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1806 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1807 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1808 | } | ||
1809 | else if (requestData.Contains("region_name")) | ||
1810 | { | ||
1811 | string region_name = (string) requestData["region_name"]; | ||
1812 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1813 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1814 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1815 | } | ||
1816 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1817 | 1686 | ||
1818 | int removedUsers = 0; | 1687 | int removedUsers = 0; |
1819 | 1688 | ||
1820 | if (requestData.Contains("users")) | 1689 | if (requestData.Contains("users")) |
1821 | { | 1690 | { |
1822 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1691 | UUID scopeID = scene.RegionInfo.ScopeID; |
1823 | IUserAccountService userService = m_application.SceneManager.CurrentOrFirstScene.UserAccountService; | 1692 | IUserAccountService userService = scene.UserAccountService; |
1824 | //UserProfileCacheService ups = m_application.CommunicationsManager.UserProfileCacheService; | 1693 | //UserProfileCacheService ups = m_application.CommunicationsManager.UserProfileCacheService; |
1825 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1826 | Hashtable users = (Hashtable) requestData["users"]; | 1694 | Hashtable users = (Hashtable) requestData["users"]; |
1827 | List<UUID> uuids = new List<UUID>(); | 1695 | List<UUID> uuids = new List<UUID>(); |
1828 | foreach (string name in users.Values) | 1696 | foreach (string name in users.Values) |
@@ -1849,6 +1717,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1849 | } | 1717 | } |
1850 | 1718 | ||
1851 | responseData["removed"] = removedUsers; | 1719 | responseData["removed"] = removedUsers; |
1720 | responseData["success"] = true; | ||
1852 | 1721 | ||
1853 | m_log.Info("[RADMIN]: Access List Remove Request complete"); | 1722 | m_log.Info("[RADMIN]: Access List Remove Request complete"); |
1854 | } | 1723 | } |
@@ -1860,32 +1729,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1860 | Hashtable responseData = (Hashtable)response.Value; | 1729 | Hashtable responseData = (Hashtable)response.Value; |
1861 | Hashtable requestData = (Hashtable)request.Params[0]; | 1730 | Hashtable requestData = (Hashtable)request.Params[0]; |
1862 | 1731 | ||
1863 | responseData["success"] = true; | 1732 | CheckRegionParams(requestData, responseData); |
1864 | 1733 | ||
1865 | if (requestData.Contains("region_uuid")) | 1734 | Scene scene = null; |
1866 | { | 1735 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1867 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1868 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1869 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1870 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1871 | } | ||
1872 | else if (requestData.Contains("region_name")) | ||
1873 | { | ||
1874 | string region_name = (string) requestData["region_name"]; | ||
1875 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1876 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1877 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1878 | } | ||
1879 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1880 | 1736 | ||
1881 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1882 | UUID[] accessControlList = scene.RegionInfo.EstateSettings.EstateAccess; | 1737 | UUID[] accessControlList = scene.RegionInfo.EstateSettings.EstateAccess; |
1883 | Hashtable users = new Hashtable(); | 1738 | Hashtable users = new Hashtable(); |
1884 | 1739 | ||
1885 | foreach (UUID user in accessControlList) | 1740 | foreach (UUID user in accessControlList) |
1886 | { | 1741 | { |
1887 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1742 | UUID scopeID = scene.RegionInfo.ScopeID; |
1888 | UserAccount account = m_application.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, user); | 1743 | UserAccount account = scene.UserAccountService.GetUserAccount(scopeID, user); |
1889 | if (account != null) | 1744 | if (account != null) |
1890 | { | 1745 | { |
1891 | users[user.ToString()] = account.FirstName + " " + account.LastName; | 1746 | users[user.ToString()] = account.FirstName + " " + account.LastName; |
@@ -1893,6 +1748,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1893 | } | 1748 | } |
1894 | 1749 | ||
1895 | responseData["users"] = users; | 1750 | responseData["users"] = users; |
1751 | responseData["success"] = true; | ||
1896 | 1752 | ||
1897 | m_log.Info("[RADMIN]: Access List List Request complete"); | 1753 | m_log.Info("[RADMIN]: Access List List Request complete"); |
1898 | } | 1754 | } |
@@ -2010,6 +1866,126 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2010 | } | 1866 | } |
2011 | } | 1867 | } |
2012 | 1868 | ||
1869 | private void CheckRegionParams(Hashtable requestData, Hashtable responseData) | ||
1870 | { | ||
1871 | //Checks if region parameters exist and gives exeption if no parameters are given | ||
1872 | if ((requestData.ContainsKey("region_id") && !String.IsNullOrEmpty((string)requestData["region_id"])) || | ||
1873 | (requestData.ContainsKey("region_name") && !String.IsNullOrEmpty((string)requestData["region_name"]))) | ||
1874 | { | ||
1875 | return; | ||
1876 | } | ||
1877 | #region Deprecate July 2012 | ||
1878 | //region_ID, regionid, region_uuid will be deprecated in July 2012!!!!!! | ||
1879 | else if (requestData.ContainsKey("regionid") && | ||
1880 | !String.IsNullOrEmpty((string)requestData["regionid"])) | ||
1881 | { | ||
1882 | m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead"); | ||
1883 | } | ||
1884 | else if (requestData.ContainsKey("region_ID") && | ||
1885 | !String.IsNullOrEmpty((string)requestData["region_ID"])) | ||
1886 | { | ||
1887 | m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead"); | ||
1888 | } | ||
1889 | else if (requestData.ContainsKey("regionID") && | ||
1890 | !String.IsNullOrEmpty((string)requestData["regionID"])) | ||
1891 | { | ||
1892 | m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead"); | ||
1893 | } | ||
1894 | else if (requestData.ContainsKey("region_uuid") && | ||
1895 | !String.IsNullOrEmpty((string)requestData["region_uuid"])) | ||
1896 | { | ||
1897 | m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead"); | ||
1898 | } | ||
1899 | #endregion | ||
1900 | else | ||
1901 | { | ||
1902 | responseData["accepted"] = false; | ||
1903 | throw new Exception("no region_name or region_id given"); | ||
1904 | } | ||
1905 | } | ||
1906 | |||
1907 | private void GetSceneFromRegionParams(Hashtable requestData, Hashtable responseData, out Scene scene) | ||
1908 | { | ||
1909 | scene = null; | ||
1910 | |||
1911 | if (requestData.ContainsKey("region_id") && | ||
1912 | !String.IsNullOrEmpty((string)requestData["region_id"])) | ||
1913 | { | ||
1914 | UUID regionID = (UUID)(string)requestData["region_id"]; | ||
1915 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1916 | { | ||
1917 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
1918 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
1919 | } | ||
1920 | } | ||
1921 | #region Deprecate July 2012 | ||
1922 | else if (requestData.ContainsKey("regionid") && | ||
1923 | !String.IsNullOrEmpty((string)requestData["regionid"])) | ||
1924 | { | ||
1925 | m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead"); | ||
1926 | |||
1927 | UUID regionID = (UUID)(string)requestData["regionid"]; | ||
1928 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1929 | { | ||
1930 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
1931 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
1932 | } | ||
1933 | } | ||
1934 | else if (requestData.ContainsKey("region_ID") && | ||
1935 | !String.IsNullOrEmpty((string)requestData["region_ID"])) | ||
1936 | { | ||
1937 | m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead"); | ||
1938 | |||
1939 | UUID regionID = (UUID)(string)requestData["region_ID"]; | ||
1940 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1941 | { | ||
1942 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
1943 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
1944 | } | ||
1945 | } | ||
1946 | else if (requestData.ContainsKey("regionID") && | ||
1947 | !String.IsNullOrEmpty((string)requestData["regionID"])) | ||
1948 | { | ||
1949 | m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead"); | ||
1950 | |||
1951 | UUID regionID = (UUID)(string)requestData["regionID"]; | ||
1952 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1953 | { | ||
1954 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
1955 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
1956 | } | ||
1957 | } | ||
1958 | else if (requestData.ContainsKey("region_uuid") && | ||
1959 | !String.IsNullOrEmpty((string)requestData["region_uuid"])) | ||
1960 | { | ||
1961 | m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead"); | ||
1962 | |||
1963 | UUID regionID = (UUID)(string)requestData["region_uuid"]; | ||
1964 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1965 | { | ||
1966 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
1967 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
1968 | } | ||
1969 | } | ||
1970 | #endregion | ||
1971 | else if (requestData.ContainsKey("region_name") && | ||
1972 | !String.IsNullOrEmpty((string)requestData["region_name"])) | ||
1973 | { | ||
1974 | string regionName = (string)requestData["region_name"]; | ||
1975 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
1976 | { | ||
1977 | responseData["error"] = String.Format("Region {0} not found", regionName); | ||
1978 | throw new Exception(String.Format("Region {0} not found", regionName)); | ||
1979 | } | ||
1980 | } | ||
1981 | else | ||
1982 | { | ||
1983 | responseData["error"] = "no region_name or region_id given"; | ||
1984 | throw new Exception("no region_name or region_id given"); | ||
1985 | } | ||
1986 | return; | ||
1987 | } | ||
1988 | |||
2013 | private bool GetBoolean(Hashtable requestData, string tag, bool defaultValue) | 1989 | private bool GetBoolean(Hashtable requestData, string tag, bool defaultValue) |
2014 | { | 1990 | { |
2015 | // If an access value has been provided, apply it. | 1991 | // If an access value has been provided, apply it. |