diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 400 |
1 files changed, 190 insertions, 210 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index d26a1bd..dcc88c4 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -258,17 +258,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
258 | { | 258 | { |
259 | m_log.Info("[RADMIN]: Request to restart Region."); | 259 | m_log.Info("[RADMIN]: Request to restart Region."); |
260 | 260 | ||
261 | CheckStringParameters(requestData, responseData, new string[] {"regionID"}); | 261 | CheckRegionParams(requestData, responseData); |
262 | 262 | ||
263 | UUID regionID = new UUID((string) requestData["regionID"]); | 263 | Scene rebootedScene = null; |
264 | 264 | GetSceneFromRegionParams(requestData, responseData, out rebootedScene); | |
265 | Scene rebootedScene; | ||
266 | 265 | ||
267 | responseData["success"] = false; | 266 | responseData["success"] = false; |
268 | responseData["accepted"] = true; | 267 | responseData["accepted"] = true; |
269 | if (!m_application.SceneManager.TryGetScene(regionID, out rebootedScene)) | ||
270 | throw new Exception("region not found"); | ||
271 | |||
272 | responseData["rebooting"] = true; | 268 | responseData["rebooting"] = true; |
273 | 269 | ||
274 | string message; | 270 | string message; |
@@ -392,14 +388,15 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
392 | // } | 388 | // } |
393 | 389 | ||
394 | CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"}); | 390 | CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"}); |
391 | CheckRegionParams(requestData, responseData); | ||
395 | 392 | ||
396 | string file = (string) requestData["filename"]; | 393 | Scene scene = null; |
397 | UUID regionID = (UUID) (string) requestData["regionid"]; | 394 | GetSceneFromRegionParams(requestData, responseData, out scene); |
398 | m_log.InfoFormat("[RADMIN]: Terrain Loading: {0}", file); | 395 | string file = (string)requestData["filename"]; |
399 | 396 | ||
400 | responseData["accepted"] = true; | 397 | responseData["accepted"] = true; |
401 | 398 | ||
402 | LoadHeightmap(file, regionID); | 399 | LoadHeightmap(file, scene.RegionInfo.RegionID); |
403 | 400 | ||
404 | responseData["success"] = true; | 401 | responseData["success"] = true; |
405 | 402 | ||
@@ -416,18 +413,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
416 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); | 413 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); |
417 | 414 | ||
418 | CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" }); | 415 | CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" }); |
416 | CheckRegionParams(requestData, responseData); | ||
417 | |||
418 | Scene region = null; | ||
419 | GetSceneFromRegionParams(requestData, responseData, out region); | ||
419 | 420 | ||
420 | string file = (string)requestData["filename"]; | 421 | string file = (string)requestData["filename"]; |
421 | UUID regionID = (UUID)(string)requestData["regionid"]; | ||
422 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); | 422 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); |
423 | 423 | ||
424 | responseData["accepted"] = true; | 424 | responseData["accepted"] = true; |
425 | 425 | ||
426 | Scene region = null; | ||
427 | |||
428 | if (!m_application.SceneManager.TryGetScene(regionID, out region)) | ||
429 | throw new Exception("1: unable to get a scene with that name"); | ||
430 | |||
431 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); | 426 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); |
432 | if (null == terrainModule) throw new Exception("terrain module not available"); | 427 | if (null == terrainModule) throw new Exception("terrain module not available"); |
433 | 428 | ||
@@ -814,7 +809,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
814 | 809 | ||
815 | responseData["success"] = true; | 810 | responseData["success"] = true; |
816 | responseData["region_name"] = region.RegionName; | 811 | responseData["region_name"] = region.RegionName; |
817 | responseData["region_uuid"] = region.RegionID.ToString(); | 812 | responseData["region_id"] = region.RegionID.ToString(); |
813 | responseData["region_uuid"] = region.RegionID.ToString(); //Deprecate July 2012 | ||
818 | 814 | ||
819 | m_log.Info("[RADMIN]: CreateRegion: request complete"); | 815 | m_log.Info("[RADMIN]: CreateRegion: request complete"); |
820 | } | 816 | } |
@@ -856,16 +852,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
856 | lock (m_requestLock) | 852 | lock (m_requestLock) |
857 | { | 853 | { |
858 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); | 854 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); |
855 | CheckRegionParams(requestData, responseData); | ||
859 | 856 | ||
860 | Scene scene = null; | 857 | Scene scene = null; |
861 | string regionName = (string) requestData["region_name"]; | 858 | GetSceneFromRegionParams(requestData, responseData, out scene); |
862 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
863 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
864 | 859 | ||
865 | m_application.RemoveRegion(scene, true); | 860 | m_application.RemoveRegion(scene, true); |
866 | 861 | ||
867 | responseData["success"] = true; | 862 | responseData["success"] = true; |
868 | responseData["region_name"] = regionName; | 863 | responseData["region_name"] = scene.RegionInfo.RegionName; |
864 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
869 | 865 | ||
870 | m_log.Info("[RADMIN]: DeleteRegion: request complete"); | 866 | m_log.Info("[RADMIN]: DeleteRegion: request complete"); |
871 | } | 867 | } |
@@ -905,44 +901,21 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
905 | 901 | ||
906 | Hashtable responseData = (Hashtable)response.Value; | 902 | Hashtable responseData = (Hashtable)response.Value; |
907 | Hashtable requestData = (Hashtable)request.Params[0]; | 903 | Hashtable requestData = (Hashtable)request.Params[0]; |
908 | Scene scene = null; | ||
909 | 904 | ||
910 | lock (m_requestLock) | 905 | lock (m_requestLock) |
911 | { | 906 | { |
912 | if (requestData.ContainsKey("region_id") && | 907 | CheckRegionParams(requestData, responseData); |
913 | !String.IsNullOrEmpty((string) requestData["region_id"])) | ||
914 | { | ||
915 | // Region specified by UUID | ||
916 | UUID regionID = (UUID) (string) requestData["region_id"]; | ||
917 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
918 | throw new Exception(String.Format("region \"{0}\" does not exist", regionID)); | ||
919 | |||
920 | m_application.CloseRegion(scene); | ||
921 | |||
922 | responseData["success"] = true; | ||
923 | responseData["region_id"] = regionID; | ||
924 | 908 | ||
925 | response.Value = responseData; | 909 | Scene scene = null; |
926 | } | 910 | GetSceneFromRegionParams(requestData, responseData, out scene); |
927 | else if ( | ||
928 | requestData.ContainsKey("region_name") | ||
929 | && !String.IsNullOrEmpty((string) requestData["region_name"])) | ||
930 | { | ||
931 | // Region specified by name | ||
932 | 911 | ||
933 | string regionName = (string) requestData["region_name"]; | 912 | m_application.CloseRegion(scene); |
934 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
935 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
936 | 913 | ||
937 | m_application.CloseRegion(scene); | 914 | responseData["success"] = true; |
915 | responseData["region_name"] = scene.RegionInfo.RegionName; | ||
916 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
938 | 917 | ||
939 | responseData["success"] = true; | 918 | response.Value = responseData; |
940 | responseData["region_name"] = regionName; | ||
941 | } | ||
942 | else | ||
943 | { | ||
944 | throw new Exception("no region specified"); | ||
945 | } | ||
946 | 919 | ||
947 | m_log.Info("[RADMIN]: CloseRegion: request complete"); | 920 | m_log.Info("[RADMIN]: CloseRegion: request complete"); |
948 | } | 921 | } |
@@ -989,12 +962,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
989 | 962 | ||
990 | lock (m_requestLock) | 963 | lock (m_requestLock) |
991 | { | 964 | { |
992 | CheckStringParameters(requestData, responseData, new string[] {"region_name"}); | 965 | CheckRegionParams(requestData, responseData); |
993 | 966 | ||
994 | Scene scene = null; | 967 | Scene scene = null; |
995 | string regionName = (string) requestData["region_name"]; | 968 | GetSceneFromRegionParams(requestData, responseData, out scene); |
996 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
997 | throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); | ||
998 | 969 | ||
999 | // Modify access | 970 | // Modify access |
1000 | scene.RegionInfo.EstateSettings.PublicAccess = | 971 | scene.RegionInfo.EstateSettings.PublicAccess = |
@@ -1024,7 +995,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1024 | } | 995 | } |
1025 | 996 | ||
1026 | responseData["success"] = true; | 997 | responseData["success"] = true; |
1027 | responseData["region_name"] = regionName; | 998 | responseData["region_name"] = scene.RegionInfo.RegionName; |
999 | responseData["region_id"] = scene.RegionInfo.RegionID; | ||
1028 | 1000 | ||
1029 | m_log.Info("[RADMIN]: ModifyRegion: request complete"); | 1001 | m_log.Info("[RADMIN]: ModifyRegion: request complete"); |
1030 | } | 1002 | } |
@@ -1420,22 +1392,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1420 | try | 1392 | try |
1421 | { | 1393 | { |
1422 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1394 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1395 | CheckRegionParams(requestData, responseData); | ||
1423 | 1396 | ||
1424 | string filename = (string) requestData["filename"]; | ||
1425 | Scene scene = null; | 1397 | Scene scene = null; |
1426 | if (requestData.Contains("region_uuid")) | 1398 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1427 | { | 1399 | |
1428 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1400 | string filename = (string) requestData["filename"]; |
1429 | if (!m_application.SceneManager.TryGetScene(region_uuid, out scene)) | ||
1430 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1431 | } | ||
1432 | else if (requestData.Contains("region_name")) | ||
1433 | { | ||
1434 | string region_name = (string) requestData["region_name"]; | ||
1435 | if (!m_application.SceneManager.TryGetScene(region_name, out scene)) | ||
1436 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1437 | } | ||
1438 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1439 | 1401 | ||
1440 | bool mergeOar = false; | 1402 | bool mergeOar = false; |
1441 | bool skipAssets = false; | 1403 | bool skipAssets = false; |
@@ -1516,22 +1478,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1516 | try | 1478 | try |
1517 | { | 1479 | { |
1518 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1480 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1481 | CheckRegionParams(requestData, responseData); | ||
1519 | 1482 | ||
1520 | string filename = (string)requestData["filename"]; | ||
1521 | Scene scene = null; | 1483 | Scene scene = null; |
1522 | if (requestData.Contains("region_uuid")) | 1484 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1523 | { | 1485 | |
1524 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1486 | string filename = (string)requestData["filename"]; |
1525 | if (!m_application.SceneManager.TryGetScene(region_uuid, out scene)) | ||
1526 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1527 | } | ||
1528 | else if (requestData.Contains("region_name")) | ||
1529 | { | ||
1530 | string region_name = (string) requestData["region_name"]; | ||
1531 | if (!m_application.SceneManager.TryGetScene(region_name, out scene)) | ||
1532 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1533 | } | ||
1534 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1535 | 1487 | ||
1536 | Dictionary<string, object> options = new Dictionary<string, object>(); | 1488 | Dictionary<string, object> options = new Dictionary<string, object>(); |
1537 | 1489 | ||
@@ -1603,25 +1555,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1603 | try | 1555 | try |
1604 | { | 1556 | { |
1605 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1557 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1558 | CheckRegionParams(requestData, responseData); | ||
1606 | 1559 | ||
1607 | string filename = (string) requestData["filename"]; | 1560 | Scene scene = null; |
1608 | if (requestData.Contains("region_uuid")) | 1561 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1609 | { | ||
1610 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1611 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1612 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1613 | |||
1614 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1615 | } | ||
1616 | else if (requestData.Contains("region_name")) | ||
1617 | { | ||
1618 | string region_name = (string) requestData["region_name"]; | ||
1619 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1620 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1621 | 1562 | ||
1622 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | 1563 | string filename = (string) requestData["filename"]; |
1623 | } | ||
1624 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1625 | 1564 | ||
1626 | responseData["switched"] = true; | 1565 | responseData["switched"] = true; |
1627 | 1566 | ||
@@ -1669,23 +1608,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1669 | try | 1608 | try |
1670 | { | 1609 | { |
1671 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); | 1610 | CheckStringParameters(requestData, responseData, new string[] {"filename"}); |
1611 | CheckRegionParams(requestData, responseData); | ||
1612 | |||
1613 | Scene scene = null; | ||
1614 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
1672 | 1615 | ||
1673 | string filename = (string) requestData["filename"]; | 1616 | string filename = (string) requestData["filename"]; |
1674 | if (requestData.Contains("region_uuid")) | ||
1675 | { | ||
1676 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1677 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1678 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1679 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1680 | } | ||
1681 | else if (requestData.Contains("region_name")) | ||
1682 | { | ||
1683 | string region_name = (string) requestData["region_name"]; | ||
1684 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1685 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1686 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1687 | } | ||
1688 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1689 | 1617 | ||
1690 | responseData["switched"] = true; | 1618 | responseData["switched"] = true; |
1691 | 1619 | ||
@@ -1729,24 +1657,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1729 | 1657 | ||
1730 | responseData["success"] = true; | 1658 | responseData["success"] = true; |
1731 | 1659 | ||
1732 | if (requestData.Contains("region_uuid")) | 1660 | CheckRegionParams(requestData, responseData); |
1733 | { | ||
1734 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1735 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1736 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1737 | } | ||
1738 | else if (requestData.Contains("region_name")) | ||
1739 | { | ||
1740 | string region_name = (string) requestData["region_name"]; | ||
1741 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1742 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1743 | } | ||
1744 | else | ||
1745 | { | ||
1746 | throw new Exception("neither region_name nor region_uuid given"); | ||
1747 | } | ||
1748 | 1661 | ||
1749 | Scene scene = m_application.SceneManager.CurrentScene; | 1662 | Scene scene = null; |
1663 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
1750 | 1664 | ||
1751 | int flags; | 1665 | int flags; |
1752 | string text; | 1666 | string text; |
@@ -1779,24 +1693,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1779 | 1693 | ||
1780 | responseData["success"] = true; | 1694 | responseData["success"] = true; |
1781 | 1695 | ||
1782 | if (requestData.Contains("region_uuid")) | 1696 | CheckRegionParams(requestData, responseData); |
1783 | { | ||
1784 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1785 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1786 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1787 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1788 | } | ||
1789 | else if (requestData.Contains("region_name")) | ||
1790 | { | ||
1791 | string region_name = (string) requestData["region_name"]; | ||
1792 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1793 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1794 | 1697 | ||
1795 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | 1698 | Scene scene = null; |
1796 | } | 1699 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1797 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1798 | 1700 | ||
1799 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1800 | scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; | 1701 | scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; |
1801 | 1702 | ||
1802 | if (scene.RegionInfo.Persistent) | 1703 | if (scene.RegionInfo.Persistent) |
@@ -1812,32 +1713,17 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1812 | Hashtable responseData = (Hashtable)response.Value; | 1713 | Hashtable responseData = (Hashtable)response.Value; |
1813 | Hashtable requestData = (Hashtable)request.Params[0]; | 1714 | Hashtable requestData = (Hashtable)request.Params[0]; |
1814 | 1715 | ||
1815 | if (requestData.Contains("region_uuid")) | 1716 | CheckRegionParams(requestData, responseData); |
1816 | { | 1717 | |
1817 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 1718 | Scene scene = null; |
1818 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 1719 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1819 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1820 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1821 | } | ||
1822 | else if (requestData.Contains("region_name")) | ||
1823 | { | ||
1824 | string region_name = (string) requestData["region_name"]; | ||
1825 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1826 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1827 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1828 | } | ||
1829 | else | ||
1830 | { | ||
1831 | throw new Exception("neither region_name nor region_uuid given"); | ||
1832 | } | ||
1833 | 1720 | ||
1834 | int addedUsers = 0; | 1721 | int addedUsers = 0; |
1835 | 1722 | ||
1836 | if (requestData.Contains("users")) | 1723 | if (requestData.Contains("users")) |
1837 | { | 1724 | { |
1838 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1725 | UUID scopeID = scene.RegionInfo.ScopeID; |
1839 | IUserAccountService userService = m_application.SceneManager.CurrentOrFirstScene.UserAccountService; | 1726 | IUserAccountService userService = scene.UserAccountService; |
1840 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1841 | Hashtable users = (Hashtable) requestData["users"]; | 1727 | Hashtable users = (Hashtable) requestData["users"]; |
1842 | List<UUID> uuids = new List<UUID>(); | 1728 | List<UUID> uuids = new List<UUID>(); |
1843 | foreach (string name in users.Values) | 1729 | foreach (string name in users.Values) |
@@ -1876,32 +1762,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1876 | Hashtable responseData = (Hashtable)response.Value; | 1762 | Hashtable responseData = (Hashtable)response.Value; |
1877 | Hashtable requestData = (Hashtable)request.Params[0]; | 1763 | Hashtable requestData = (Hashtable)request.Params[0]; |
1878 | 1764 | ||
1879 | responseData["success"] = true; | 1765 | CheckRegionParams(requestData, responseData); |
1880 | 1766 | ||
1881 | if (requestData.Contains("region_uuid")) | 1767 | Scene scene = null; |
1882 | { | 1768 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1883 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1884 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1885 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1886 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1887 | } | ||
1888 | else if (requestData.Contains("region_name")) | ||
1889 | { | ||
1890 | string region_name = (string) requestData["region_name"]; | ||
1891 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1892 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1893 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1894 | } | ||
1895 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1896 | 1769 | ||
1897 | int removedUsers = 0; | 1770 | int removedUsers = 0; |
1898 | 1771 | ||
1899 | if (requestData.Contains("users")) | 1772 | if (requestData.Contains("users")) |
1900 | { | 1773 | { |
1901 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1774 | UUID scopeID = scene.RegionInfo.ScopeID; |
1902 | IUserAccountService userService = m_application.SceneManager.CurrentOrFirstScene.UserAccountService; | 1775 | IUserAccountService userService = scene.UserAccountService; |
1903 | //UserProfileCacheService ups = m_application.CommunicationsManager.UserProfileCacheService; | 1776 | //UserProfileCacheService ups = m_application.CommunicationsManager.UserProfileCacheService; |
1904 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1905 | Hashtable users = (Hashtable) requestData["users"]; | 1777 | Hashtable users = (Hashtable) requestData["users"]; |
1906 | List<UUID> uuids = new List<UUID>(); | 1778 | List<UUID> uuids = new List<UUID>(); |
1907 | foreach (string name in users.Values) | 1779 | foreach (string name in users.Values) |
@@ -1928,6 +1800,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1928 | } | 1800 | } |
1929 | 1801 | ||
1930 | responseData["removed"] = removedUsers; | 1802 | responseData["removed"] = removedUsers; |
1803 | responseData["success"] = true; | ||
1931 | 1804 | ||
1932 | m_log.Info("[RADMIN]: Access List Remove Request complete"); | 1805 | m_log.Info("[RADMIN]: Access List Remove Request complete"); |
1933 | } | 1806 | } |
@@ -1939,32 +1812,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1939 | Hashtable responseData = (Hashtable)response.Value; | 1812 | Hashtable responseData = (Hashtable)response.Value; |
1940 | Hashtable requestData = (Hashtable)request.Params[0]; | 1813 | Hashtable requestData = (Hashtable)request.Params[0]; |
1941 | 1814 | ||
1942 | responseData["success"] = true; | 1815 | CheckRegionParams(requestData, responseData); |
1943 | 1816 | ||
1944 | if (requestData.Contains("region_uuid")) | 1817 | Scene scene = null; |
1945 | { | 1818 | GetSceneFromRegionParams(requestData, responseData, out scene); |
1946 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | ||
1947 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1948 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1949 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); | ||
1950 | } | ||
1951 | else if (requestData.Contains("region_name")) | ||
1952 | { | ||
1953 | string region_name = (string) requestData["region_name"]; | ||
1954 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | ||
1955 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1956 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); | ||
1957 | } | ||
1958 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1959 | 1819 | ||
1960 | Scene scene = m_application.SceneManager.CurrentScene; | ||
1961 | UUID[] accessControlList = scene.RegionInfo.EstateSettings.EstateAccess; | 1820 | UUID[] accessControlList = scene.RegionInfo.EstateSettings.EstateAccess; |
1962 | Hashtable users = new Hashtable(); | 1821 | Hashtable users = new Hashtable(); |
1963 | 1822 | ||
1964 | foreach (UUID user in accessControlList) | 1823 | foreach (UUID user in accessControlList) |
1965 | { | 1824 | { |
1966 | UUID scopeID = m_application.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; | 1825 | UUID scopeID = scene.RegionInfo.ScopeID; |
1967 | UserAccount account = m_application.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, user); | 1826 | UserAccount account = scene.UserAccountService.GetUserAccount(scopeID, user); |
1968 | if (account != null) | 1827 | if (account != null) |
1969 | { | 1828 | { |
1970 | users[user.ToString()] = account.FirstName + " " + account.LastName; | 1829 | users[user.ToString()] = account.FirstName + " " + account.LastName; |
@@ -1972,6 +1831,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1972 | } | 1831 | } |
1973 | 1832 | ||
1974 | responseData["users"] = users; | 1833 | responseData["users"] = users; |
1834 | responseData["success"] = true; | ||
1975 | 1835 | ||
1976 | m_log.Info("[RADMIN]: Access List List Request complete"); | 1836 | m_log.Info("[RADMIN]: Access List List Request complete"); |
1977 | } | 1837 | } |
@@ -2089,6 +1949,126 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2089 | } | 1949 | } |
2090 | } | 1950 | } |
2091 | 1951 | ||
1952 | private void CheckRegionParams(Hashtable requestData, Hashtable responseData) | ||
1953 | { | ||
1954 | //Checks if region parameters exist and gives exeption if no parameters are given | ||
1955 | if ((requestData.ContainsKey("region_id") && !String.IsNullOrEmpty((string)requestData["region_id"])) || | ||
1956 | (requestData.ContainsKey("region_name") && !String.IsNullOrEmpty((string)requestData["region_name"]))) | ||
1957 | { | ||
1958 | return; | ||
1959 | } | ||
1960 | #region Deprecate July 2012 | ||
1961 | //region_ID, regionid, region_uuid will be deprecated in July 2012!!!!!! | ||
1962 | else if (requestData.ContainsKey("regionid") && | ||
1963 | !String.IsNullOrEmpty((string)requestData["regionid"])) | ||
1964 | { | ||
1965 | m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead"); | ||
1966 | } | ||
1967 | else if (requestData.ContainsKey("region_ID") && | ||
1968 | !String.IsNullOrEmpty((string)requestData["region_ID"])) | ||
1969 | { | ||
1970 | m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead"); | ||
1971 | } | ||
1972 | else if (requestData.ContainsKey("regionID") && | ||
1973 | !String.IsNullOrEmpty((string)requestData["regionID"])) | ||
1974 | { | ||
1975 | m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead"); | ||
1976 | } | ||
1977 | else if (requestData.ContainsKey("region_uuid") && | ||
1978 | !String.IsNullOrEmpty((string)requestData["region_uuid"])) | ||
1979 | { | ||
1980 | m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead"); | ||
1981 | } | ||
1982 | #endregion | ||
1983 | else | ||
1984 | { | ||
1985 | responseData["accepted"] = false; | ||
1986 | throw new Exception("no region_name or region_id given"); | ||
1987 | } | ||
1988 | } | ||
1989 | |||
1990 | private void GetSceneFromRegionParams(Hashtable requestData, Hashtable responseData, out Scene scene) | ||
1991 | { | ||
1992 | scene = null; | ||
1993 | |||
1994 | if (requestData.ContainsKey("region_id") && | ||
1995 | !String.IsNullOrEmpty((string)requestData["region_id"])) | ||
1996 | { | ||
1997 | UUID regionID = (UUID)(string)requestData["region_id"]; | ||
1998 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
1999 | { | ||
2000 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
2001 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
2002 | } | ||
2003 | } | ||
2004 | #region Deprecate July 2012 | ||
2005 | else if (requestData.ContainsKey("regionid") && | ||
2006 | !String.IsNullOrEmpty((string)requestData["regionid"])) | ||
2007 | { | ||
2008 | m_log.WarnFormat("[RADMIN]: Use of parameter regionid will be deprecated as of July 2012. Use region_id instead"); | ||
2009 | |||
2010 | UUID regionID = (UUID)(string)requestData["regionid"]; | ||
2011 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
2012 | { | ||
2013 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
2014 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
2015 | } | ||
2016 | } | ||
2017 | else if (requestData.ContainsKey("region_ID") && | ||
2018 | !String.IsNullOrEmpty((string)requestData["region_ID"])) | ||
2019 | { | ||
2020 | m_log.WarnFormat("[RADMIN]: Use of parameter region_ID will be deprecated as of July 2012. Use region_id instead"); | ||
2021 | |||
2022 | UUID regionID = (UUID)(string)requestData["region_ID"]; | ||
2023 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
2024 | { | ||
2025 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
2026 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
2027 | } | ||
2028 | } | ||
2029 | else if (requestData.ContainsKey("regionID") && | ||
2030 | !String.IsNullOrEmpty((string)requestData["regionID"])) | ||
2031 | { | ||
2032 | m_log.WarnFormat("[RADMIN]: Use of parameter regionID will be deprecated as of July 2012. Use region_id instead"); | ||
2033 | |||
2034 | UUID regionID = (UUID)(string)requestData["regionID"]; | ||
2035 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
2036 | { | ||
2037 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
2038 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
2039 | } | ||
2040 | } | ||
2041 | else if (requestData.ContainsKey("region_uuid") && | ||
2042 | !String.IsNullOrEmpty((string)requestData["region_uuid"])) | ||
2043 | { | ||
2044 | m_log.WarnFormat("[RADMIN]: Use of parameter region_uuid will be deprecated as of July 2012. Use region_id instead"); | ||
2045 | |||
2046 | UUID regionID = (UUID)(string)requestData["region_uuid"]; | ||
2047 | if (!m_application.SceneManager.TryGetScene(regionID, out scene)) | ||
2048 | { | ||
2049 | responseData["error"] = String.Format("Region ID {0} not found", regionID); | ||
2050 | throw new Exception(String.Format("Region ID {0} not found", regionID)); | ||
2051 | } | ||
2052 | } | ||
2053 | #endregion | ||
2054 | else if (requestData.ContainsKey("region_name") && | ||
2055 | !String.IsNullOrEmpty((string)requestData["region_name"])) | ||
2056 | { | ||
2057 | string regionName = (string)requestData["region_name"]; | ||
2058 | if (!m_application.SceneManager.TryGetScene(regionName, out scene)) | ||
2059 | { | ||
2060 | responseData["error"] = String.Format("Region {0} not found", regionName); | ||
2061 | throw new Exception(String.Format("Region {0} not found", regionName)); | ||
2062 | } | ||
2063 | } | ||
2064 | else | ||
2065 | { | ||
2066 | responseData["error"] = "no region_name or region_id given"; | ||
2067 | throw new Exception("no region_name or region_id given"); | ||
2068 | } | ||
2069 | return; | ||
2070 | } | ||
2071 | |||
2092 | private bool GetBoolean(Hashtable requestData, string tag, bool defaultValue) | 2072 | private bool GetBoolean(Hashtable requestData, string tag, bool defaultValue) |
2093 | { | 2073 | { |
2094 | // If an access value has been provided, apply it. | 2074 | // If an access value has been provided, apply it. |