private EstateSettings CreateEstateInfo(Scene scene) { EstateSettings ES = null; while (true) { IEstateConnector EstateConnector = DataManager.RequestPlugin<IEstateConnector>(); string response = MainConsole.Instance.CmdPrompt("Do you wish to join an existing estate for " + scene.RegionInfo.RegionName + "? (Options are {yes, no, find})", LastEstateChoise, new List<string>() { "yes", "no", "find" }); LastEstateChoise = response; if (response == "no") { // Create a new estate ES = new EstateSettings(); ES.EstateName = MainConsole.Instance.CmdPrompt("New estate name", scene.RegionInfo.EstateSettings.EstateName); //Set to auto connect to this region next LastEstateName = ES.EstateName; LastEstateChoise = "yes"; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("New estate password (to keep others from joining your estate, blank to have no pass)", ES.EstatePass))); ES.EstatePass = Password; ES = EstateConnector.CreateEstate(ES, scene.RegionInfo.RegionID); if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } else if (ES.EstateID == 0) { m_log.Warn("There was an error in creating this estate: " + ES.EstateName); //EstateName holds the error. See LocalEstateConnector for more info. continue; } //We set this back if there wasn't an error because the EstateService will NOT send it back IGenericsConnector g = DataManager.RequestPlugin<IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } break; } else if (response == "yes") { response = MainConsole.Instance.CmdPrompt("Estate name to join", LastEstateName); if (response == "None") continue; LastEstateName = response; List<int> estateIDs = EstateConnector.GetEstates(response); if (estateIDs == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } if (estateIDs.Count < 1) { m_log.Warn("The name you have entered matches no known estate. Please try again"); continue; } int estateID = estateIDs[0]; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("Password for the estate", ""))); //We save the Password because we have to reset it after we tell the EstateService about it, as it clears it for security reasons if (EstateConnector.LinkRegion(scene.RegionInfo.RegionID, estateID, Password)) { ES = EstateConnector.LoadEstateSettings(scene.RegionInfo.RegionID); //We could do by EstateID now, but we need to completely make sure that it fully is set up if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } //Reset the pass and save it to the database IGenericsConnector g = DataManager.RequestPlugin<IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } break; } m_log.Warn("Joining the estate failed. Please try again."); continue; } else if (response == "find") { ES = EstateConnector.LoadEstateSettings(scene.RegionInfo.RegionID); if (ES == null) { m_log.Warn("The connection to the estate service was broken, please try again soon."); continue; } break; } } return ES; }
private EstateSettings CreateEstateInfo(Scene scene) { EstateSettings ES = new EstateSettings(); while (true) { IEstateConnector EstateConnector = DataManager.RequestPlugin <IEstateConnector>(); string name = MainConsole.Instance.CmdPrompt("Estate owner name", LastEstateOwner); UserAccount account = scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, name); if (account == null) { string createNewUser = MainConsole.Instance.CmdPrompt("Could not find user " + name + ". Would you like to create this user?", "yes"); if (createNewUser == "yes") { // Create a new account string password = MainConsole.Instance.PasswdPrompt(name + "'s password"); string email = MainConsole.Instance.CmdPrompt(name + "'s email", ""); scene.UserAccountService.CreateUser(name, Util.Md5Hash(password), email); account = scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, name); if (account == null) { m_log.ErrorFormat("[EstateService]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first."); continue; } } else { continue; } } LastEstateOwner = account.Name; string response = "no"; List <EstateSettings> ownerEstates = EstateConnector.GetEstates(account.PrincipalID); if (ownerEstates != null) { m_log.WarnFormat("Found user. {0} has {1} estates currently. {2}", account.Name, ownerEstates.Count, "These estates are the following:"); for (int i = 0; i < ownerEstates.Count; i++) { m_log.Warn(ownerEstates[i].EstateName); } response = MainConsole.Instance.CmdPrompt("Do you wish to join one of these existing estates? (Options are {yes, no})", LastEstateChoise, new List <string>() { "yes", "no" }); } else { m_log.WarnFormat("Found user. {0} has no estates currently. Creating a new estate.", account.Name); } LastEstateChoise = response; if (response == "no") { // Create a new estate ES.EstateName = MainConsole.Instance.CmdPrompt("New estate name", scene.RegionInfo.EstateSettings.EstateName); //Set to auto connect to this region next LastEstateName = ES.EstateName; LastEstateChoise = "yes"; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("New estate password (to keep others from joining your estate, blank to have no pass)", ES.EstatePass))); ES.EstatePass = Password; ES.EstateOwner = account.PrincipalID; ES = EstateConnector.CreateEstate(ES, scene.RegionInfo.RegionID); if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } else if (ES.EstateID == 0) { m_log.Warn("There was an error in creating this estate: " + ES.EstateName); //EstateName holds the error. See LocalEstateConnector for more info. continue; } //We set this back if there wasn't an error because the EstateService will NOT send it back IGenericsConnector g = DataManager.RequestPlugin <IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } break; } else if (response == "yes") { if (ownerEstates.Count != 1) { response = MainConsole.Instance.CmdPrompt("Estate name to join", LastEstateName); if (response == "None") { continue; } LastEstateName = response; } else { LastEstateName = ownerEstates[0].EstateName; } List <int> estateIDs = EstateConnector.GetEstates(LastEstateName); if (estateIDs == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } if (estateIDs.Count < 1) { m_log.Warn("The name you have entered matches no known estate. Please try again"); continue; } int estateID = estateIDs[0]; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("Password for the estate", ""))); //We save the Password because we have to reset it after we tell the EstateService about it, as it clears it for security reasons if (EstateConnector.LinkRegion(scene.RegionInfo.RegionID, estateID, Password)) { if (EstateConnector.LoadEstateSettings(scene.RegionInfo.RegionID, out ES)) //We could do by EstateID now, but we need to completely make sure that it fully is set up { if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } //Reset the pass and save it to the database IGenericsConnector g = DataManager.RequestPlugin <IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } } else { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } m_log.Warn("Successfully joined the estate!"); break; } m_log.Warn("Joining the estate failed. Please try again."); continue; } } return(ES); }
private EstateSettings CreateEstateInfo(Scene scene) { EstateSettings ES = new EstateSettings(); while (true) { IEstateConnector EstateConnector = DataManager.RequestPlugin<IEstateConnector>(); string name = MainConsole.Instance.CmdPrompt("Estate owner name", LastEstateOwner); UserAccount account = scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, name); if (account == null) { string createNewUser = MainConsole.Instance.CmdPrompt("Could not find user " + name + ". Would you like to create this user?", "yes"); if (createNewUser == "yes") { // Create a new account string password = MainConsole.Instance.PasswdPrompt(name + "'s password"); string email = MainConsole.Instance.CmdPrompt(name + "'s email", ""); scene.UserAccountService.CreateUser(name, Util.Md5Hash(password), email); account = scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, name); if (account == null) { m_log.ErrorFormat("[EstateService]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first."); continue; } } else continue; } LastEstateOwner = account.Name; List<EstateSettings> ownerEstates = EstateConnector.GetEstates (account.PrincipalID); string response = (ownerEstates != null && ownerEstates.Count > 0) ? "yes" : "no"; if (ownerEstates != null && ownerEstates.Count > 0) { m_log.WarnFormat("Found user. {0} has {1} estates currently. {2}", account.Name, ownerEstates.Count, "These estates are the following:"); for (int i = 0; i < ownerEstates.Count; i++) { m_log.Warn(ownerEstates[i].EstateName); } response = MainConsole.Instance.CmdPrompt ("Do you wish to join one of these existing estates? (Options are {yes, no, cancel})", response, new List<string> () { "yes", "no", "cancel" }); } else { m_log.WarnFormat("Found user. {0} has no estates currently. Creating a new estate.", account.Name); } LastEstateChoise = response; if (response == "no") { // Create a new estate ES.EstateName = MainConsole.Instance.CmdPrompt("New estate name (or cancel to go back)", "My Estate"); if (ES.EstateName == "cancel") continue; //Set to auto connect to this region next LastEstateName = ES.EstateName; LastEstateChoise = "yes"; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("New estate password (to keep others from joining your estate, blank to have no pass)", ES.EstatePass))); ES.EstatePass = Password; ES.EstateOwner = account.PrincipalID; ES = EstateConnector.CreateEstate(ES, scene.RegionInfo.RegionID); if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } else if (ES.EstateID == 0) { m_log.Warn("There was an error in creating this estate: " + ES.EstateName); //EstateName holds the error. See LocalEstateConnector for more info. continue; } //We set this back if there wasn't an error because the EstateService will NOT send it back IGenericsConnector g = DataManager.RequestPlugin<IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } break; } else if (response == "yes") { if (ownerEstates.Count != 1) { if (LastEstateName == "") LastEstateName = ownerEstates[0].EstateName; List<string> responses = new List<string> (); foreach (EstateSettings settings in ownerEstates) responses.Add (settings.EstateName); responses.Add ("None"); responses.Add ("Cancel"); response = MainConsole.Instance.CmdPrompt("Estate name to join", LastEstateName, responses); if (response == "None" || response == "Cancel") continue; LastEstateName = response; } else LastEstateName = ownerEstates[0].EstateName; List<int> estateIDs = EstateConnector.GetEstates(LastEstateName); if (estateIDs == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } if (estateIDs.Count < 1) { m_log.Warn("The name you have entered matches no known estate. Please try again"); continue; } int estateID = estateIDs[0]; string Password = Util.Md5Hash(Util.Md5Hash(MainConsole.Instance.CmdPrompt("Password for the estate", ""))); //We save the Password because we have to reset it after we tell the EstateService about it, as it clears it for security reasons if (EstateConnector.LinkRegion(scene.RegionInfo.RegionID, estateID, Password)) { if (EstateConnector.LoadEstateSettings(scene.RegionInfo.RegionID, out ES)) //We could do by EstateID now, but we need to completely make sure that it fully is set up { if (ES == null) { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } //Reset the pass and save it to the database IGenericsConnector g = DataManager.RequestPlugin<IGenericsConnector>(); EstatePassword s = new EstatePassword() { Password = Password }; if (g != null) //Save the pass to the database { g.AddGeneric(scene.RegionInfo.RegionID, "EstatePassword", ES.EstateID.ToString(), s.ToOSD()); } } else { m_log.Warn("The connection to the server was broken, please try again soon."); continue; } m_log.Warn("Successfully joined the estate!"); break; } m_log.Warn("Joining the estate failed. Please try again."); continue; } } return ES; }