diff options
author | Melanie | 2010-03-23 02:05:56 +0000 |
---|---|---|
committer | Melanie | 2010-03-23 02:05:56 +0000 |
commit | dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912 (patch) | |
tree | ef72d57634075b044c65428f31c8f04c4c53a7bb /OpenSim/Region/Framework | |
parent | Somehow the starting estate number in MySQL was lost. This adds a migration (diff) | |
download | opensim-SC-dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912.zip opensim-SC-dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912.tar.gz opensim-SC-dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912.tar.bz2 opensim-SC-dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912.tar.xz |
First stage of the new interactive region creation. This will allow creation
of a region and joining it to an existing estate or creating a new estate,
as well as creating an estate owner if in standalone, and assigning estate
owners. In Grid mode, existing users must be used. MySQL ONLY!!!! so far, as
I can't develop or test for either SQLite or MSSQL.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 115 |
2 files changed, 120 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index 6861544..87c7a05 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs | |||
@@ -25,6 +25,7 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System.Collections.Generic; | ||
28 | using OpenMetaverse; | 29 | using OpenMetaverse; |
29 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
30 | 31 | ||
@@ -35,6 +36,11 @@ namespace OpenSim.Region.Framework.Interfaces | |||
35 | void Initialise(string connectstring); | 36 | void Initialise(string connectstring); |
36 | 37 | ||
37 | EstateSettings LoadEstateSettings(UUID regionID, bool create); | 38 | EstateSettings LoadEstateSettings(UUID regionID, bool create); |
39 | EstateSettings LoadEstateSettings(int estateID); | ||
38 | void StoreEstateSettings(EstateSettings es); | 40 | void StoreEstateSettings(EstateSettings es); |
41 | List<int> GetEstates(string search); | ||
42 | bool LinkRegion(UUID regionID, int estateID); | ||
43 | List<UUID> GetRegions(int estateID); | ||
44 | bool DeleteEstate(int estateID); | ||
39 | } | 45 | } |
40 | } | 46 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 078cf03..da81c03 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -604,7 +604,44 @@ namespace OpenSim.Region.Framework.Scenes | |||
604 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); | 604 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); |
605 | if (m_storageManager.EstateDataStore != null) | 605 | if (m_storageManager.EstateDataStore != null) |
606 | { | 606 | { |
607 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, true); | 607 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, false); |
608 | if (m_regInfo.EstateSettings.EstateID == 0) // No record at all | ||
609 | { | ||
610 | MainConsole.Instance.Output("Your region is not part of an estate."); | ||
611 | while (true) | ||
612 | { | ||
613 | string response = MainConsole.Instance.CmdPrompt("Do you wish to join an existing estate?", "no", new List<string>() {"yes", "no"}); | ||
614 | if (response == "no") | ||
615 | { | ||
616 | // Create a new estate | ||
617 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, true); | ||
618 | |||
619 | m_regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", m_regInfo.EstateSettings.EstateName); | ||
620 | m_regInfo.EstateSettings.Save(); | ||
621 | break; | ||
622 | } | ||
623 | else | ||
624 | { | ||
625 | response = MainConsole.Instance.CmdPrompt("Estate name to join", "None"); | ||
626 | if (response == "None") | ||
627 | continue; | ||
628 | |||
629 | List<int> estateIDs = m_storageManager.EstateDataStore.GetEstates(response); | ||
630 | if (estateIDs.Count < 1) | ||
631 | { | ||
632 | MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); | ||
633 | continue; | ||
634 | } | ||
635 | |||
636 | int estateID = estateIDs[0]; | ||
637 | |||
638 | if (m_storageManager.EstateDataStore.LinkRegion(m_regInfo.RegionID, estateID)) | ||
639 | break; | ||
640 | |||
641 | MainConsole.Instance.Output("Joining the estate failed. Please try again."); | ||
642 | } | ||
643 | } | ||
644 | } | ||
608 | } | 645 | } |
609 | 646 | ||
610 | //Bind Storage Manager functions to some land manager functions for this scene | 647 | //Bind Storage Manager functions to some land manager functions for this scene |
@@ -1215,6 +1252,82 @@ namespace OpenSim.Region.Framework.Scenes | |||
1215 | m_dialogModule = RequestModuleInterface<IDialogModule>(); | 1252 | m_dialogModule = RequestModuleInterface<IDialogModule>(); |
1216 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); | 1253 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); |
1217 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); | 1254 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); |
1255 | |||
1256 | // Shoving this in here for now, because we have the needed | ||
1257 | // interfaces at this point | ||
1258 | // | ||
1259 | // TODO: Find a better place for this | ||
1260 | // | ||
1261 | while (m_regInfo.EstateSettings.EstateOwner == UUID.Zero) | ||
1262 | { | ||
1263 | MainConsole.Instance.Output("The current estate has no owner set."); | ||
1264 | string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test"); | ||
1265 | string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User"); | ||
1266 | |||
1267 | UserAccount account = UserAccountService.GetUserAccount(m_regInfo.ScopeID, first, last); | ||
1268 | |||
1269 | if (account == null) | ||
1270 | { | ||
1271 | account = new UserAccount(m_regInfo.ScopeID, first, last, String.Empty); | ||
1272 | if (account.ServiceURLs == null || (account.ServiceURLs != null && account.ServiceURLs.Count == 0)) | ||
1273 | { | ||
1274 | account.ServiceURLs = new Dictionary<string, object>(); | ||
1275 | account.ServiceURLs["HomeURI"] = string.Empty; | ||
1276 | account.ServiceURLs["GatekeeperURI"] = string.Empty; | ||
1277 | account.ServiceURLs["InventoryServerURI"] = string.Empty; | ||
1278 | account.ServiceURLs["AssetServerURI"] = string.Empty; | ||
1279 | } | ||
1280 | |||
1281 | if (UserAccountService.StoreUserAccount(account)) | ||
1282 | { | ||
1283 | string password = MainConsole.Instance.PasswdPrompt("Password"); | ||
1284 | string email = MainConsole.Instance.CmdPrompt("Email", ""); | ||
1285 | |||
1286 | account.Email = email; | ||
1287 | UserAccountService.StoreUserAccount(account); | ||
1288 | |||
1289 | bool success = false; | ||
1290 | success = AuthenticationService.SetPassword(account.PrincipalID, password); | ||
1291 | if (!success) | ||
1292 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set password for account {0} {1}.", | ||
1293 | first, last); | ||
1294 | |||
1295 | GridRegion home = null; | ||
1296 | if (GridService != null) | ||
1297 | { | ||
1298 | List<GridRegion> defaultRegions = GridService.GetDefaultRegions(UUID.Zero); | ||
1299 | if (defaultRegions != null && defaultRegions.Count >= 1) | ||
1300 | home = defaultRegions[0]; | ||
1301 | |||
1302 | if (PresenceService != null && home != null) | ||
1303 | PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0)); | ||
1304 | else | ||
1305 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set home for account {0} {1}.", | ||
1306 | first, last); | ||
1307 | |||
1308 | } | ||
1309 | else | ||
1310 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to retrieve home region for account {0} {1}.", | ||
1311 | first, last); | ||
1312 | |||
1313 | if (InventoryService != null) | ||
1314 | success = InventoryService.CreateUserInventory(account.PrincipalID); | ||
1315 | if (!success) | ||
1316 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to create inventory for account {0} {1}.", | ||
1317 | first, last); | ||
1318 | |||
1319 | |||
1320 | m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", first, last); | ||
1321 | |||
1322 | m_regInfo.EstateSettings.EstateOwner = account.PrincipalID; | ||
1323 | m_regInfo.EstateSettings.Save(); | ||
1324 | } | ||
1325 | } | ||
1326 | else | ||
1327 | { | ||
1328 | MainConsole.Instance.Output("You appear to be connected to a grid and can't create users from here. Please enter the name of an existing user"); | ||
1329 | } | ||
1330 | } | ||
1218 | } | 1331 | } |
1219 | 1332 | ||
1220 | #endregion | 1333 | #endregion |