diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 92 |
1 files changed, 65 insertions, 27 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 026c6ed..826a1b0 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -562,12 +562,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
562 | /// <description>desired region X coordinate (integer)</description></item> | 562 | /// <description>desired region X coordinate (integer)</description></item> |
563 | /// <item><term>region_y</term> | 563 | /// <item><term>region_y</term> |
564 | /// <description>desired region Y coordinate (integer)</description></item> | 564 | /// <description>desired region Y coordinate (integer)</description></item> |
565 | /// <item><term>region_master_first</term> | 565 | /// <item><term>estate_owner_first</term> |
566 | /// <description>firstname of region master</description></item> | 566 | /// <description>firstname of estate owner (formerly region master) |
567 | /// <item><term>region_master_last</term> | 567 | /// (required if new estate is being created, optional otherwise)</description></item> |
568 | /// <description>lastname of region master</description></item> | 568 | /// <item><term>estate_owner_last</term> |
569 | /// <item><term>region_master_uuid</term> | 569 | /// <description>lastname of estate owner (formerly region master) |
570 | /// <description>explicit UUID to use for master avatar (optional)</description></item> | 570 | /// (required if new estate is being created, optional otherwise)</description></item> |
571 | /// <item><term>estate_owner_uuid</term> | ||
572 | /// <description>explicit UUID to use for estate owner (optional)</description></item> | ||
571 | /// <item><term>listen_ip</term> | 573 | /// <item><term>listen_ip</term> |
572 | /// <description>internal IP address (dotted quad)</description></item> | 574 | /// <description>internal IP address (dotted quad)</description></item> |
573 | /// <item><term>listen_port</term> | 575 | /// <item><term>listen_port</term> |
@@ -583,6 +585,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
583 | /// <item><term>enable_voice</term> | 585 | /// <item><term>enable_voice</term> |
584 | /// <description>if true, enable voice on all parcels, | 586 | /// <description>if true, enable voice on all parcels, |
585 | /// ('true' or 'false') (optional, default: false)</description></item> | 587 | /// ('true' or 'false') (optional, default: false)</description></item> |
588 | /// <item><term>estate_name</term> | ||
589 | /// <description>the name of the estate to join (or to create if it doesn't | ||
590 | /// already exist)</description></item> | ||
586 | /// </list> | 591 | /// </list> |
587 | /// | 592 | /// |
588 | /// XmlRpcCreateRegionMethod returns | 593 | /// XmlRpcCreateRegionMethod returns |
@@ -621,9 +626,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
621 | { | 626 | { |
622 | "password", | 627 | "password", |
623 | "region_name", | 628 | "region_name", |
624 | "region_master_first", "region_master_last", | 629 | "listen_ip", "external_address", |
625 | "region_master_password", | 630 | "estate_name" |
626 | "listen_ip", "external_address" | ||
627 | }); | 631 | }); |
628 | CheckIntegerParams(request, new string[] {"region_x", "region_y", "listen_port"}); | 632 | CheckIntegerParams(request, new string[] {"region_x", "region_y", "listen_port"}); |
629 | 633 | ||
@@ -694,18 +698,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
694 | 698 | ||
695 | region.ExternalHostName = (string) requestData["external_address"]; | 699 | region.ExternalHostName = (string) requestData["external_address"]; |
696 | 700 | ||
697 | string masterFirst = (string) requestData["region_master_first"]; | ||
698 | string masterLast = (string) requestData["region_master_last"]; | ||
699 | string masterPassword = (string) requestData["region_master_password"]; | ||
700 | |||
701 | UUID userID = UUID.Zero; | ||
702 | if (requestData.ContainsKey("region_master_uuid")) | ||
703 | { | ||
704 | // ok, client wants us to use an explicit UUID | ||
705 | // regardless of what the avatar name provided | ||
706 | userID = new UUID((string) requestData["estate_owner_uuid"]); | ||
707 | } | ||
708 | |||
709 | bool persist = Convert.ToBoolean((string) requestData["persist"]); | 701 | bool persist = Convert.ToBoolean((string) requestData["persist"]); |
710 | if (persist) | 702 | if (persist) |
711 | { | 703 | { |
@@ -740,7 +732,55 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
740 | { | 732 | { |
741 | region.Persistent = false; | 733 | region.Persistent = false; |
742 | } | 734 | } |
743 | 735 | ||
736 | // Set the estate | ||
737 | |||
738 | // Check for an existing estate | ||
739 | List<int> estateIDs = m_application.StorageManager.EstateDataStore.GetEstates((string) requestData["estate_name"]); | ||
740 | if (estateIDs.Count < 1) | ||
741 | { | ||
742 | UUID userID = UUID.Zero; | ||
743 | if (requestData.ContainsKey("estate_owner_uuid")) | ||
744 | { | ||
745 | // ok, client wants us to use an explicit UUID | ||
746 | // regardless of what the avatar name provided | ||
747 | userID = new UUID((string) requestData["estate_owner_uuid"]); | ||
748 | } | ||
749 | else if (requestData.ContainsKey("estate_owner_first") & requestData.ContainsKey("estate_owner_last")) | ||
750 | { | ||
751 | // We need to look up the UUID for the avatar with the provided name. | ||
752 | string ownerFirst = (string) requestData["estate_owner_first"]; | ||
753 | string ownerLast = (string) requestData["estate_owner_last"]; | ||
754 | |||
755 | Scene currentOrFirst = m_application.SceneManager.CurrentOrFirstScene; | ||
756 | IUserAccountService accountService = currentOrFirst.UserAccountService; | ||
757 | UserAccount user = accountService.GetUserAccount(currentOrFirst.RegionInfo.ScopeID, | ||
758 | ownerFirst, ownerLast); | ||
759 | userID = user.PrincipalID; | ||
760 | } | ||
761 | else | ||
762 | { | ||
763 | throw new Exception("Estate owner details not provided."); | ||
764 | } | ||
765 | |||
766 | // Create a new estate with the name provided | ||
767 | region.EstateSettings = m_application.StorageManager.EstateDataStore.LoadEstateSettings(region.RegionID, true); | ||
768 | |||
769 | region.EstateSettings.EstateName = (string) requestData["estate_name"]; | ||
770 | region.EstateSettings.EstateOwner = userID; | ||
771 | // Persistence does not seem to effect the need to save a new estate | ||
772 | region.EstateSettings.Save(); | ||
773 | } | ||
774 | else | ||
775 | { | ||
776 | int estateID = estateIDs[0]; | ||
777 | |||
778 | region.EstateSettings = m_application.StorageManager.EstateDataStore.LoadEstateSettings(estateID); | ||
779 | |||
780 | if (!m_application.StorageManager.EstateDataStore.LinkRegion(region.RegionID, estateID)) | ||
781 | throw new Exception("Failed to join estate."); | ||
782 | } | ||
783 | |||
744 | // Create the region and perform any initial initialization | 784 | // Create the region and perform any initial initialization |
745 | 785 | ||
746 | IScene newScene; | 786 | IScene newScene; |
@@ -749,9 +789,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
749 | // If an access specification was provided, use it. | 789 | // If an access specification was provided, use it. |
750 | // Otherwise accept the default. | 790 | // Otherwise accept the default. |
751 | newScene.RegionInfo.EstateSettings.PublicAccess = GetBoolean(requestData, "public", m_publicAccess); | 791 | newScene.RegionInfo.EstateSettings.PublicAccess = GetBoolean(requestData, "public", m_publicAccess); |
752 | newScene.RegionInfo.EstateSettings.EstateOwner = userID; | 792 | newScene.RegionInfo.EstateSettings.Save(); |
753 | if (persist) | ||
754 | newScene.RegionInfo.EstateSettings.Save(); | ||
755 | 793 | ||
756 | // enable voice on newly created region if | 794 | // enable voice on newly created region if |
757 | // requested by either the XmlRpc request or the | 795 | // requested by either the XmlRpc request or the |
@@ -1615,7 +1653,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1615 | if (destinationFolder.Type != (short)AssetType.Clothing) | 1653 | if (destinationFolder.Type != (short)AssetType.Clothing) |
1616 | { | 1654 | { |
1617 | destinationFolder = new InventoryFolderBase(); | 1655 | destinationFolder = new InventoryFolderBase(); |
1618 | 1656 | ||
1619 | destinationFolder.ID = UUID.Random(); | 1657 | destinationFolder.ID = UUID.Random(); |
1620 | destinationFolder.Name = "Clothing"; | 1658 | destinationFolder.Name = "Clothing"; |
1621 | destinationFolder.Owner = destination; | 1659 | destinationFolder.Owner = destination; |
@@ -3100,7 +3138,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
3100 | /// <param name="password"></param> | 3138 | /// <param name="password"></param> |
3101 | private bool ChangeUserPassword(string firstName, string lastName, string password) | 3139 | private bool ChangeUserPassword(string firstName, string lastName, string password) |
3102 | { | 3140 | { |
3103 | Scene scene = m_application.SceneManager.CurrentOrFirstScene; | 3141 | Scene scene = m_application.SceneManager.CurrentOrFirstScene; |
3104 | IUserAccountService userAccountService = scene.UserAccountService; | 3142 | IUserAccountService userAccountService = scene.UserAccountService; |
3105 | IAuthenticationService authenticationService = scene.AuthenticationService; | 3143 | IAuthenticationService authenticationService = scene.AuthenticationService; |
3106 | 3144 | ||