diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 30601696d5..8662ea83ac 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -365,52 +365,8 @@ namespace OpenSim scene.SetModuleInterfaces(); - // FIXME: Put me into a separate method! while (regionInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) - { - MainConsole.Instance.OutputFormat("Estate {0} has no owner set.", regionInfo.EstateSettings.EstateName); - List excluded = new List(new char[1]{' '}); - string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test", excluded); - string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User", excluded); - - UserAccount account = scene.UserAccountService.GetUserAccount(regionInfo.ScopeID, first, last); - - if (account == null) - { - m_log.DebugFormat("A {0}", scene.UserAccountService.GetType()); - -// if (scene.UserAccountService is LocalUserAccountServicesConnector) -// { -// IUserAccountService innerUas -// = ((LocalUserAccountServicesConnector)scene.UserAccountService).UserAccountService; -// -// m_log.DebugFormat("B {0}", innerUas.GetType()); -// -// if (innerUas is UserAccountService) -// { - - if (scene.UserAccountService is UserAccountService) - { - string password = MainConsole.Instance.PasswdPrompt("Password"); - string email = MainConsole.Instance.CmdPrompt("Email", ""); - - // TODO: Where do we put m_regInfo.ScopeID? - account = ((UserAccountService)scene.UserAccountService).CreateUser(first, last, password, email); - } -// } - } - - if (account == null) - { - m_log.ErrorFormat( - "[OPENSIM]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first."); - } - else - { - regionInfo.EstateSettings.EstateOwner = account.PrincipalID; - regionInfo.EstateSettings.Save(); - } - } + SetUpEstateOwner(scene); // Prims have to be loaded after module configuration since some modules may be invoked during the load scene.LoadPrimsFromStorage(regionInfo.originRegionID); @@ -466,6 +422,55 @@ namespace OpenSim return clientServer; } + private void SetUpEstateOwner(Scene scene) + { + RegionInfo regionInfo = scene.RegionInfo; + + MainConsole.Instance.OutputFormat("Estate {0} has no owner set.", regionInfo.EstateSettings.EstateName); + List excluded = new List(new char[1]{' '}); + string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test", excluded); + string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User", excluded); + + UserAccount account = scene.UserAccountService.GetUserAccount(regionInfo.ScopeID, first, last); + + if (account == null) + { + + // XXX: The LocalUserAccountServicesConnector is currently registering its inner service rather than + // itself! +// if (scene.UserAccountService is LocalUserAccountServicesConnector) +// { +// IUserAccountService innerUas +// = ((LocalUserAccountServicesConnector)scene.UserAccountService).UserAccountService; +// +// m_log.DebugFormat("B {0}", innerUas.GetType()); +// +// if (innerUas is UserAccountService) +// { + + if (scene.UserAccountService is UserAccountService) + { + string password = MainConsole.Instance.PasswdPrompt("Password"); + string email = MainConsole.Instance.CmdPrompt("Email", ""); + + // TODO: Where do we put m_regInfo.ScopeID? + account = ((UserAccountService)scene.UserAccountService).CreateUser(first, last, password, email); + } +// } + } + + if (account == null) + { + m_log.ErrorFormat( + "[OPENSIM]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first."); + } + else + { + regionInfo.EstateSettings.EstateOwner = account.PrincipalID; + regionInfo.EstateSettings.Save(); + } + } + private void ShutdownRegion(Scene scene) { m_log.DebugFormat("[SHUTDOWN]: Shutting down region {0}", scene.RegionInfo.RegionName); diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/LocalUserAccountServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/LocalUserAccountServiceConnector.cs index 546fe8856e..0a0ce3cf47 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/LocalUserAccountServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/LocalUserAccountServiceConnector.cs @@ -124,6 +124,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts if (!m_Enabled) return; + // FIXME: Why do we bother setting this module and caching up if we just end up registering the inner + // user account service?! scene.RegisterModuleInterface(UserAccountService); }