/// <summary> /// Links a region to a system estate. /// </summary> /// <returns>The system estate.</returns> /// <param name="regionID">Region ID.</param> /// <param name="estateID">Estate ID.</param> EstateSettings LinkSystemEstate(UUID regionID, int estateID) { // link region to a system estate > Mainland / Governor or System / RealEstateOwner IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); ISystemEstateService sysEstates = m_registry.RequestModuleInterface <ISystemEstateService> (); EstateSettings ES; string estateName = sysEstates.GetSystemEstateName(estateID); // try & link region if (estateConnector.LinkRegion(regionID, estateID)) { ES = estateConnector.GetRegionEstateSettings(regionID); // refresh to check linking if ((ES == null) || (ES.EstateID == 0)) { MainConsole.Instance.Warn("An error was encountered linking the region to '" + estateName + "'!\n" + "Possibly a problem with the server connection, please link this region later."); return(null); } MainConsole.Instance.Warn("Successfully joined '" + estateName + "'!"); return(ES); } MainConsole.Instance.Warn("Joining '" + estateName + "' failed. Please link this region later."); return(null); }
/// <summary> /// Region side /// </summary> /// <param name="message"></param> /// <returns></returns> protected OSDMap OnMessageReceived(OSDMap message) { // We need to check and see if this is an AgentStatusChange if (message.ContainsKey("Method") && message ["Method"] == "EstateUpdated") { OSDMap innerMessage = (OSDMap)message ["Message"]; // We got a message, deal with it uint estateID = innerMessage ["EstateID"].AsUInteger(); UUID regionID = innerMessage ["RegionID"].AsUUID(); ISceneManager manager = m_registry.RequestModuleInterface <ISceneManager> (); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); if (manager != null && estateConnector != null) { foreach (IScene scene in manager.Scenes) { if (scene.RegionInfo.EstateSettings.EstateID == estateID) { EstateSettings es = null; if ((es = estateConnector.GetRegionEstateSettings(regionID)) != null && es.EstateID != 0) { scene.RegionInfo.EstateSettings = es; MainConsole.Instance.Debug("[EstateProcessor]: Updated estate information."); } } } } } return(null); }
public void FinishStartup(IScene scene, IConfigSource source, ISimulationBase simBase) { IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); if (estateConnector != null) { EstateSettings ES = estateConnector.GetRegionEstateSettings(scene.RegionInfo.RegionID); if (ES == null) { //Could not locate the estate service, wait until it can find it MainConsole.Instance.Warn( "We could not find the estate service for this region. Please make sure that your URLs are correct in grid mode."); while (true) { MainConsole.Instance.Prompt("Press enter to try again."); if ((ES = estateConnector.GetRegionEstateSettings(scene.RegionInfo.RegionID)) == null || ES.EstateID == 0) { ES = CreateEstateInfo(scene); break; } if (ES != null) { break; } } } else if (ES.EstateID == 0) { //This region does not belong to an estate, make a new one or join and existing one MainConsole.Instance.Warn("[EstateInitializer]: Your region '" + scene.RegionInfo.RegionName + "' is not part of an estate."); ES = CreateEstateInfo(scene); } scene.RegionInfo.EstateSettings = ES; } }
/// <summary> /// Links a region to an estate. /// </summary> /// <returns>The region estate.</returns> /// <param name="regionID">Region identifier.</param> /// <param name="estateID">Estate name.</param> EstateSettings LinkRegionEstate(UUID regionID, int estateID) { EstateSettings ES = null; IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); // link up the region ES = estateConnector.GetRegionEstateSettings(regionID); if (!estateConnector.LinkRegion(regionID, estateID)) { MainConsole.Instance.WarnFormat("[Estate]: Joining the {0} estate failed. Please try again.", ES.EstateName); return(ES); } // make sure that the region is fully set up if ((ES = estateConnector.GetRegionEstateSettings(regionID)) == null || ES.EstateID == 0) { MainConsole.Instance.Warn("[Estate]: Unable to verify region update (possible server connection error), please try again."); return(null); } MainConsole.Instance.InfoFormat("[Estate]: Successfully joined the {0} estate!", ES.EstateName); return(ES); }
public bool Store(GridRegion region) { if (region.EstateOwner == UUID.Zero) { IEstateConnector EstateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); EstateSettings ES = null; if (EstateConnector != null) { ES = EstateConnector.GetRegionEstateSettings(region.RegionID); if ((ES != null) && (ES.EstateID != 0)) { region.EstateOwner = ES.EstateOwner; } } if (region.EstateOwner == UUID.Zero && ES != null && ES.EstateID != 0) { MainConsole.Instance.Error( "[LocalGridConnector] Attempt to store region with owner of UUID.Zero detected:" + (new System.Diagnostics.StackTrace()).GetFrame(1)); } } Dictionary <string, object> row = new Dictionary <string, object> (14); row ["ScopeID"] = region.ScopeID; row ["RegionUUID"] = region.RegionID; row ["RegionName"] = region.RegionName; row ["LocX"] = region.RegionLocX; row ["LocY"] = region.RegionLocY; row ["LocZ"] = region.RegionLocZ; row ["OwnerUUID"] = region.EstateOwner; row ["Access"] = region.Access; row ["SizeX"] = region.RegionSizeX; row ["SizeY"] = region.RegionSizeY; row ["SizeZ"] = region.RegionSizeZ; row ["Flags"] = region.Flags; row ["SessionID"] = region.SessionID; row ["Info"] = OSDParser.SerializeJsonString(region.ToOSD()); return(m_GD.Replace(m_realm, row)); }
/// <summary> /// Link a region to an estate. /// </summary> /// <param name="scene">Scene.</param> /// <param name="cmd">Cmd.</param> void EstateLinkRegionCommand(IScene scene, string [] cmd) { IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); IGridService gridService = m_registry.RequestModuleInterface <IGridService> (); string estateName = ""; string regionName = ""; // check for passed estate name estateName = (cmd.Length < 4) ? MainConsole.Instance.Prompt("Estate name", estateName) : cmd [3]; if (estateName == "") { return; } // verify that the estate does exist EstateSettings ES = estateConnector.GetEstateSettings(estateName); if (ES == null) { MainConsole.Instance.ErrorFormat("[EstateService]: The estate '{0}' does not exist!", estateName); return; } // check for passed region to link to if (scene != null) { regionName = scene.RegionInfo.RegionName; } regionName = (cmd.Length < 4) ? MainConsole.Instance.Prompt("Region to add to " + estateName, regionName) : cmd [4]; if (regionName == "") { return; } // verify that the region does exist var region = gridService.GetRegionByName(null, regionName); if (region == null) { MainConsole.Instance.ErrorFormat("[EstateService]: The requested region '{0}' does not exist!", regionName); return; } // have all details.. do it... regionName = region.RegionName; if (estateConnector.LinkRegion(region.RegionID, (int)ES.EstateID)) { // check for update.. var es = estateConnector.GetRegionEstateSettings(region.RegionID); if ((es == null) || (es.EstateID == 0)) { MainConsole.Instance.Warn("The region link failed, please try again soon."); } else { MainConsole.Instance.InfoFormat("Region '{0}' is now attached to estate '{1}'", regionName, estateName); UpdateConsoleRegionEstate(regionName, es); } } else { MainConsole.Instance.Warn("Joining the estate failed. Please try again."); } }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); if (httpRequest.Query.ContainsKey("regionid")) { var regionService = webInterface.Registry.RequestModuleInterface <IGridService>(); var region = regionService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query["regionid"].ToString())); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector>(); EstateSettings estate = null; if (estateConnector != null) { estate = estateConnector.GetRegionEstateSettings(region.RegionID); } if (estate != null) { vars.Add("OwnerUUID", estate.EstateOwner); var estateOwnerAccount = webInterface.Registry.RequestModuleInterface <IUserAccountService>(). GetUserAccount(null, estate.EstateOwner); vars.Add("OwnerName", estateOwnerAccount == null ? "No account found" : estateOwnerAccount.Name); } else { vars.Add("OwnerUUID", "Unknown"); vars.Add("OwnerName", "Unknown"); } vars.Add("RegionName", region.RegionName); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionTerrain", region.RegionTerrain); vars.Add("RegionMaturity", Utilities.GetRegionMaturity(region.Access)); bool regionIsOnline = (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline; vars.Add("RegionOnline", regionIsOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService>(); IUserAccountService userService = webInterface.Registry.RequestModuleInterface <IUserAccountService>(); if (agentInfoService != null) { List <UserInfo> usersInRegion = agentInfoService.GetUserInfos(region.RegionID); vars.Add("NumberOfUsersInRegion", usersInRegion != null ? usersInRegion.Count : 0); List <Dictionary <string, object> > users = new List <Dictionary <string, object> >(); if (userService != null) { foreach (var client in usersInRegion) { UserAccount account = userService.GetUserAccount(null, (UUID)client.UserID); if (account == null) { continue; } Dictionary <string, object> user = new Dictionary <string, object>(); user.Add("UserNameText", translator.GetTranslatedString("UserNameText")); user.Add("UserUUID", client.UserID); user.Add("UserName", account.Name); users.Add(user); } } vars.Add("UsersInRegion", users); } else { vars.Add("NumberOfUsersInRegion", 0); vars.Add("UsersInRegion", new List <Dictionary <string, object> >()); } IDirectoryServiceConnector directoryConnector = Framework.Utilities.DataManager.RequestPlugin <IDirectoryServiceConnector>(); if (directoryConnector != null) { List <LandData> parcelData = directoryConnector.GetParcelsByRegion(0, 10, region.RegionID, UUID.Zero, ParcelFlags.None, ParcelCategory.Any); if (parcelData != null) { vars.Add("NumberOfParcelsInRegion", parcelData.Count); } else { vars.Add("NumberOfParcelsInRegion", 0); } } IWebHttpTextureService webTextureService = webInterface.Registry.RequestModuleInterface <IWebHttpTextureService>(); var regionMapURL = "../images/icons/no_terrain.jpg"; if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { regionMapURL = webTextureService.GetTextureURL(region.TerrainMapImage); } vars.Add("RegionImageURL", regionMapURL); // worldview IConfig worldViewConfig = webInterface.Registry.RequestModuleInterface <ISimulationBase>().ConfigSource.Configs["WorldViewModule"]; bool worldViewEnabled = false; if (worldViewConfig != null) { worldViewEnabled = worldViewConfig.GetBoolean("Enabled", true); } if (webTextureService != null && worldViewEnabled && regionIsOnline) { vars.Add("RegionWorldViewURL", webTextureService.GetRegionWorldViewURL(region.RegionID)); } else { vars.Add("RegionWorldViewURL", regionMapURL); } // Menu Region vars.Add("MenuRegionTitle", translator.GetTranslatedString("MenuRegionTitle")); vars.Add("TooltipsMenuRegion", translator.GetTranslatedString("TooltipsMenuRegion")); vars.Add("MenuParcelTitle", translator.GetTranslatedString("MenuParcelTitle")); vars.Add("TooltipsMenuParcel", translator.GetTranslatedString("TooltipsMenuParcel")); vars.Add("MenuOwnerTitle", translator.GetTranslatedString("MenuOwnerTitle")); vars.Add("TooltipsMenuOwner", translator.GetTranslatedString("TooltipsMenuOwner")); vars.Add("RegionInformationText", translator.GetTranslatedString("RegionInformationText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionMaturityText", translator.GetTranslatedString("RegionMaturityText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("RegionInfoText", translator.GetTranslatedString("RegionInfoText")); vars.Add("RegionOnlineText", translator.GetTranslatedString("RegionOnlineText")); vars.Add("NumberOfUsersInRegionText", translator.GetTranslatedString("NumberOfUsersInRegionText")); vars.Add("ParcelsInRegionText", translator.GetTranslatedString("ParcelsInRegionText")); vars.Add("MainServerURL", webInterface.GridURL); } return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); if (httpRequest.Query.ContainsKey("regionid")) { var regionService = webInterface.Registry.RequestModuleInterface <IGridService> (); var region = regionService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); var ownerUUID = UUID.Zero; string ownerName = "Unknown"; if (estateConnector != null) { EstateSettings estate = estateConnector.GetRegionEstateSettings(region.RegionID); if (estate != null) { ownerUUID = estate.EstateOwner; UserAccount estateOwnerAccount = null; var accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (accountService != null) { estateOwnerAccount = accountService.GetUserAccount(null, estate.EstateOwner); } ownerName = estateOwnerAccount == null ? "No account found" : estateOwnerAccount.Name; } } else { ownerUUID = UUID.Zero; ownerName = "Unknown"; } vars.Add("OwnerUUID", ownerUUID); vars.Add("OwnerName", ownerName); vars.Add("RegionName", region.RegionName); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionTerrain", region.RegionTerrain); vars.Add("RegionOnline", (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); IDirectoryServiceConnector directoryConnector = Framework.Utilities.DataManager.RequestPlugin <IDirectoryServiceConnector> (); if (directoryConnector != null) { IUserAccountService accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); List <LandData> data = directoryConnector.GetParcelsByRegion(0, 10, region.RegionID, UUID.Zero, ParcelFlags.None, ParcelCategory.Any); List <Dictionary <string, object> > parcels = new List <Dictionary <string, object> > (); string url = "../images/icons/no_parcel.jpg"; if (data != null) { foreach (var p in data) { Dictionary <string, object> parcel = new Dictionary <string, object> (); parcel.Add("ParcelNameText", translator.GetTranslatedString("ParcelNameText")); parcel.Add("ParcelOwnerText", translator.GetTranslatedString("ParcelOwnerText")); parcel.Add("ParcelUUID", p.GlobalID); parcel.Add("ParcelName", p.Name); parcel.Add("ParcelOwnerUUID", p.OwnerID); parcel.Add("ParcelSnapshotURL", url); if (accountService != null) { var account = accountService.GetUserAccount(null, p.OwnerID); if (account != null) { parcel.Add("ParcelOwnerName", account.Name); } else { parcel.Add("ParcelOwnerName", translator.GetTranslatedString("NoAccountFound")); } } parcels.Add(parcel); } } vars.Add("ParcelInRegion", parcels); vars.Add("NumberOfParcelsInRegion", parcels.Count); } IWebHttpTextureService webTextureService = webInterface.Registry.RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "../images/icons/no_terrain.jpg"); } vars.Add("RegionInformationText", translator.GetTranslatedString("RegionInformationText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("RegionInfoText", translator.GetTranslatedString("RegionInfoText")); vars.Add("RegionOnlineText", translator.GetTranslatedString("RegionOnlineText")); vars.Add("NumberOfUsersInRegionText", translator.GetTranslatedString("NumberOfUsersInRegionText")); vars.Add("ParcelsInRegionText", translator.GetTranslatedString("ParcelsInRegionText")); vars.Add("MainServerURL", webInterface.GridURL); } return(vars); }
/// <summary> /// Creates the estate info for a region. /// </summary> /// <returns>The estate info.</returns> /// <param name="scene">Scene.</param> EstateSettings CreateEstateInfo(IScene scene) { // check for regionType to determine if this is 'Mainland' or an 'Estate' string regType = scene.RegionInfo.RegionType.ToLower(); if (regType.StartsWith("m", System.StringComparison.Ordinal)) { return(LinkSystemEstate(scene.RegionInfo.RegionID, Constants.MainlandEstateID)); } // we are linking to a user estate IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); ISystemAccountService sysAccounts = m_registry.RequestModuleInterface <ISystemAccountService> (); string sysEstateOwnerName; var sysAccount = scene.UserAccountService.GetUserAccount(scene.RegionInfo.AllScopeIDs, sysAccounts.SystemEstateOwnerUUID); if (!sysAccount.Valid) { sysEstateOwnerName = sysAccounts.SystemEstateOwnerName; } else { sysEstateOwnerName = sysAccount.Name; } // This is an 'Estate' so get some details.... var LastEstateOwner = sysEstateOwnerName; string LastEstateName; while (true) { UserAccount ownerAcct; string estateOwner; estateOwner = MainConsole.Instance.Prompt("Estate owner name (" + sysEstateOwnerName + "/User Name)", LastEstateOwner); // we have a prospective estate owner... List <EstateSettings> ownerEstates = null; ownerAcct = scene.UserAccountService.GetUserAccount(scene.RegionInfo.AllScopeIDs, estateOwner); if (ownerAcct.Valid) { // we have a user account... LastEstateOwner = ownerAcct.Name; ownerEstates = estateConnector.GetEstates(ownerAcct.PrincipalID); } if (!ownerAcct.Valid || ownerEstates == null || ownerEstates.Count == 0) { if (!ownerAcct.Valid) { MainConsole.Instance.Warn("[Estate]: Unable to locate the user " + estateOwner); } else { MainConsole.Instance.WarnFormat("[Estate]: The user, {0}, has no estates currently.", ownerAcct.Name); } string joinSystemland = MainConsole.Instance.Prompt( "Do you want to 'park' the region with the system owner/estate? (yes/no)", "yes"); if (joinSystemland.ToLower().StartsWith("y", System.StringComparison.Ordinal)) // joining 'Systemland' { return(LinkSystemEstate(scene.RegionInfo.RegionID, Constants.SystemEstateID)); } continue; } if (ownerEstates.Count > 1) { MainConsole.Instance.InfoFormat("[Estate]: User {0} has {1} estates currently. {2}", ownerAcct.Name, ownerEstates.Count, "These estates are the following:"); foreach (EstateSettings t in ownerEstates) { MainConsole.Instance.CleanInfo(" " + t.EstateName); } LastEstateName = ownerEstates [0].EstateName; List <string> responses = ownerEstates.Select(settings => settings.EstateName).ToList(); responses.Add("Cancel"); do { //TODO: This could be a problem if we have a lot of estates string response = MainConsole.Instance.Prompt("Estate name to join", LastEstateName, responses); if (response == "None" || response == "Cancel") { LastEstateName = ""; break; } LastEstateName = response; } while (LastEstateName == ""); if (LastEstateName == "") { continue; } } else { LastEstateName = ownerEstates [0].EstateName; } // we should have a user account and estate name by now int estateID = estateConnector.GetEstate(ownerAcct.PrincipalID, LastEstateName); if (estateID == 0) { MainConsole.Instance.Warn("[Estate]: The name you have entered matches no known estate. Please try again"); continue; } // link up the region EstateSettings ES; UUID oldOwnerID = UUID.Zero; if (scene.RegionInfo.EstateSettings != null) { oldOwnerID = scene.RegionInfo.EstateSettings.EstateOwner; } if (!estateConnector.LinkRegion(scene.RegionInfo.RegionID, estateID)) { MainConsole.Instance.WarnFormat("[Estate]: Joining the {0} estate failed. Please try again.", LastEstateName); continue; } // make sure that the region is fully set up if ((ES = estateConnector.GetRegionEstateSettings(scene.RegionInfo.RegionID)) == null || ES.EstateID == 0) { MainConsole.Instance.Warn("[Estate]: Unable to verify region update (possible server connection error), please try again."); continue; } // Linking was successful, change any previously owned parcels to the new owner if (oldOwnerID != UUID.Zero) { IParcelManagementModule parcelManagement = scene.RequestModuleInterface <IParcelManagementModule> (); if (parcelManagement != null) { parcelManagement.ReclaimParcels(oldOwnerID, ES.EstateOwner); } } MainConsole.Instance.InfoFormat("[Estate]: Successfully joined the {0} estate!", LastEstateName); return(ES); } }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); var gridService = webInterface.Registry.RequestModuleInterface <IGridService> (); var user = Authenticator.GetAuthentication(httpRequest); vars.Add("RegionServerURL", webInterface.GridURL); // This needs to be sorted out for grid regions #region EditRegion if (requestParameters.ContainsKey("Submit")) { var regionServerURL = requestParameters ["RegionServerURL"].ToString(); // required if (regionServerURL == "") { response = "<h3>" + translator.GetTranslatedString("RegionServerURLError") + "</h3>"; return(null); } var regionID = requestParameters ["RegionID"].ToString(); var regionName = requestParameters ["RegionName"].ToString(); var regionLocX = requestParameters ["RegionLocX"].ToString(); var regionLocY = requestParameters ["RegionLocY"].ToString(); var regionSizeX = requestParameters ["RegionSizeX"].ToString(); var regionSizeY = requestParameters ["RegionSizeY"].ToString(); var regionType = requestParameters ["RegionType"].ToString(); var regionPresetType = requestParameters ["RegionPresetType"].ToString(); var regionTerrain = requestParameters ["RegionTerrain"].ToString(); var regionLoadTerrain = requestParameters.ContainsKey("RegionLoadTerrain") ? requestParameters ["RegionLoadTerrain"].ToString() : ""; // a bit of idiot proofing if (regionName == "") { response = "<h3>" + translator.GetTranslatedString("RegionNameError") + "</h3>"; return(null); } if ((regionLocX == "") || (regionLocY == "")) { response = "<h3>" + translator.GetTranslatedString("RegionLocationError") + "</h3>"; return(null); } // so far so good... // build the new region details int RegionPort = int.Parse(requestParameters ["RegionPort"].ToString()); var newRegion = new RegionInfo(); if (regionID != "") { newRegion.RegionID = UUID.Parse(regionID); } newRegion.RegionName = regionName; newRegion.RegionType = regionType; newRegion.RegionLocX = int.Parse(regionLocX); newRegion.RegionLocY = int.Parse(regionLocY); newRegion.RegionSizeX = int.Parse(regionSizeX); newRegion.RegionSizeY = int.Parse(regionSizeY); newRegion.RegionPort = RegionPort; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 50000; newRegion.Startup = StartupType.Normal; var regionPreset = regionPresetType.ToLower(); //SubString(0,1); if (regionPreset.StartsWith("c", System.StringComparison.Ordinal)) { newRegion.RegionPort = int.Parse(requestParameters ["RegionPort"].ToString()); newRegion.SeeIntoThisSimFromNeighbor = (requestParameters ["RegionVisibility"].ToString().ToLower() == "yes"); newRegion.InfiniteRegion = (requestParameters ["RegionInfinite"].ToString().ToLower() == "yes"); newRegion.ObjectCapacity = int.Parse(requestParameters ["RegionCapacity"].ToString()); string delayStartup = requestParameters ["RegionDelayStartup"].ToString(); newRegion.Startup = delayStartup.StartsWith("n", System.StringComparison.Ordinal) ? StartupType.Normal : StartupType.Medium; } if (regionPreset.StartsWith("u", System.StringComparison.Ordinal)) { // 'standard' setup newRegion.RegionType = newRegion.RegionType + "Universe"; newRegion.RegionTerrain = "Flatland"; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 100000; newRegion.RegionPort = RegionPort; } if (regionPreset.StartsWith("o", System.StringComparison.Ordinal)) { // 'Openspace' setup newRegion.RegionType = newRegion.RegionType + "Openspace"; if (regionTerrain.StartsWith("a", System.StringComparison.Ordinal)) { newRegion.RegionTerrain = "Aquatic"; } else { newRegion.RegionTerrain = "Grassland"; } newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 50000; newRegion.RegionSettings.AgentLimit = 10; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("h", System.StringComparison.Ordinal)) { // 'Homestead' setup newRegion.RegionType = newRegion.RegionType + "Homestead"; newRegion.RegionTerrain = "Homestead"; newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 75000; newRegion.RegionSettings.AgentLimit = 20; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("f", System.StringComparison.Ordinal)) { // 'Full Region' setup newRegion.RegionType = newRegion.RegionType + "Full Region"; newRegion.RegionTerrain = regionTerrain; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 100000; newRegion.RegionSettings.AgentLimit = 100; if (newRegion.RegionType.StartsWith("M", System.StringComparison.Ordinal)) // defaults are 'true' { newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; newRegion.InfiniteRegion = true; } } if (regionLoadTerrain.Length > 0) { // we are loading terrain from a file... handled later newRegion.RegionTerrain = "Custom"; } // TODO: !!! Assumes everything is local for now !!! if (requestParameters.ContainsKey("NewRegion")) { ISceneManager scenemanager = webInterface.Registry.RequestModuleInterface <ISceneManager> (); if (scenemanager.CreateRegion(newRegion)) { response = "<h3>Successfully created region</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; return(null); } response = "<h3>Error creating this region.</h3>"; return(null); } // TODO: This will not work yet :) // update region details var infoConnector = Framework.Utilities.DataManager.RequestPlugin <IRegionInfoConnector> (); if (infoConnector != null) { infoConnector.UpdateRegionInfo(newRegion); response = "<h3>Region details updated.</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; } else { response = "<h3>Unable to update Region details!</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; } return(null); } #endregion #region EditRegion // we have or need data if (httpRequest.Query.ContainsKey("regionid")) { var region = gridService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); vars.Add("RegionID", region.RegionID.ToString()); vars.Add("RegionName", region.RegionName); UserAccount estateOwnerAccount = null; var estateOwner = UUID.Zero; var estateId = -1; IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); if (estateConnector != null) { EstateSettings estate = estateConnector.GetRegionEstateSettings(region.RegionID); if (estate != null) { estateId = (int)estate.EstateID; estateOwner = estate.EstateOwner; } var accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (accountService != null) { estateOwnerAccount = accountService.GetUserAccount(null, estate.EstateOwner); } } vars.Add("EstateList", WebHelpers.EstateSelections(webInterface.Registry, estateOwner.ToString(), estateId)); vars.Add("OwnerUUID", region.EstateOwner); vars.Add("OwnerName", estateOwnerAccount != null ? estateOwnerAccount.Name : "No account found"); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionPort", region.InternalPort.ToString()); vars.Add("RegionType", WebHelpers.RegionTypeArgs(translator, region.RegionType)); vars.Add("RegionPresetType", WebHelpers.RegionPresetArgs(translator, region.RegionType)); vars.Add("RegionTerrain", WebHelpers.RegionTerrainArgs(translator, region.RegionTerrain)); // TODO: This will not work yet :) bool switches = false; var infoConnector = Framework.Utilities.DataManager.RequestPlugin <IRegionInfoConnector> (); if (infoConnector != null) { var regionInfo = infoConnector.GetRegionInfo(region.RegionID); if (regionInfo != null) { vars.Add("RegionCapacity", regionInfo.ObjectCapacity.ToString()); vars.Add("RegionVisibility", WebHelpers.YesNoSelection(translator, regionInfo.SeeIntoThisSimFromNeighbor)); vars.Add("RegionInfinite", WebHelpers.YesNoSelection(translator, regionInfo.InfiniteRegion)); vars.Add("RegionDelayStartup", WebHelpers.RegionStartupSelection(translator, regionInfo.Startup)); } } if (!switches) { vars.Add("RegionCapacity", "Unknown"); vars.Add("RegionVisibility", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionInfinite", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionDelayStartup", WebHelpers.RegionStartupSelection(translator, StartupType.Normal)); // normal startup } IWebHttpTextureService webTextureService = webInterface.Registry.RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "images/icons/no_picture.jpg"); } vars.Add("Submit", translator.GetTranslatedString("SaveUpdates")); } #endregion vars.Add("RegionPresets", WebHelpers.RegionSelections(webInterface.Registry)); // Labels vars.Add("UserName", user.Name); vars.Add("RegionManagerText", translator.GetTranslatedString("MenuRegionManager")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionPresetText", translator.GetTranslatedString("RegionPresetText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("EstateText", translator.GetTranslatedString("EstateText")); vars.Add("RegionPortText", translator.GetTranslatedString("RegionPortText")); vars.Add("RegionDelayStartupText", translator.GetTranslatedString("RegionDelayStartupText")); vars.Add("RegionVisibilityText", translator.GetTranslatedString("RegionVisibilityText")); vars.Add("RegionInfiniteText", translator.GetTranslatedString("RegionInfiniteText")); vars.Add("RegionCapacityText", translator.GetTranslatedString("RegionCapacityText")); vars.Add("Cancel", translator.GetTranslatedString("Cancel")); vars.Add("InfoMessage", ""); return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); if (httpRequest.Query.ContainsKey("regionid")) { IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService> (); IUserAccountService userService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); var regionService = webInterface.Registry.RequestModuleInterface <IGridService> (); var region = regionService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); var ownerUUID = UUID.Zero; var ownerName = "Unknown"; if (estateConnector != null) { EstateSettings estate = estateConnector.GetRegionEstateSettings(region.RegionID); if (estate != null) { ownerUUID = estate.EstateOwner; UserAccount estateOwnerAcct = new UserAccount(); if (userService != null) { estateOwnerAcct = userService.GetUserAccount(null, estate.EstateOwner); } ownerName = estateOwnerAcct.Valid ? estateOwnerAcct.Name : "No account found"; } } vars.Add("OwnerUUID", ownerUUID); vars.Add("OwnerName", ownerName); vars.Add("RegionName", region.RegionName); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionTerrain", region.RegionTerrain); vars.Add("RegionOnline", (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); if (agentInfoService != null) { List <UserInfo> usersInRegion = agentInfoService.GetUserInfos(region.RegionID); if (usersInRegion.Count == 0) { vars.Add("NumberOfUsersInRegion", 0); vars.Add("UsersInRegion", new List <Dictionary <string, object> > ()); } else { vars.Add("NumberOfUsersInRegion", usersInRegion.Count); List <Dictionary <string, object> > users = new List <Dictionary <string, object> > (); foreach (var client in usersInRegion) { if (userService != null) { UserAccount userAcct = userService.GetUserAccount(null, client.UserID); if (userAcct.Valid) { Dictionary <string, object> user = new Dictionary <string, object> (); user.Add("UserNameText", translator.GetTranslatedString("UserNameText")); user.Add("UserUUID", client.UserID); user.Add("UserName", userAcct.Name); users.Add(user); } } } vars.Add("UsersInRegion", users); } } else { vars.Add("NumberOfUsersInRegion", 0); vars.Add("UsersInRegion", new List <Dictionary <string, object> > ()); } IDirectoryServiceConnector directoryConnector = Framework.Utilities.DataManager.RequestPlugin <IDirectoryServiceConnector> (); if (directoryConnector != null) { List <LandData> data = directoryConnector.GetParcelsByRegion(0, 10, region.RegionID, UUID.Zero, ParcelFlags.None, ParcelCategory.Any); List <Dictionary <string, object> > parcels = new List <Dictionary <string, object> > (); if (data != null) { foreach (var p in data) { Dictionary <string, object> parcel = new Dictionary <string, object> (); parcel.Add("ParcelNameText", translator.GetTranslatedString("ParcelNameText")); parcel.Add("ParcelOwnerText", translator.GetTranslatedString("ParcelOwnerText")); parcel.Add("ParcelUUID", p.GlobalID); parcel.Add("ParcelName", p.Name); parcel.Add("ParcelOwnerUUID", p.OwnerID); if (userService != null) { var parcelownerAcct = userService.GetUserAccount(null, p.OwnerID); if (parcelownerAcct.Valid) { parcel.Add("ParcelOwnerName", parcelownerAcct.Name); } else { parcel.Add("ParcelOwnerName", translator.GetTranslatedString("NoAccountFound")); } } parcels.Add(parcel); } } vars.Add("ParcelInRegion", parcels); vars.Add("NumberOfParcelsInRegion", parcels.Count); } IWebHttpTextureService webTextureService = webInterface.Registry. RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "images/icons/no_picture.jpg"); } // Menu Region vars.Add("MenuRegionTitle", translator.GetTranslatedString("MenuRegionTitle")); vars.Add("MenuParcelTitle", translator.GetTranslatedString("MenuParcelTitle")); vars.Add("MenuOwnerTitle", translator.GetTranslatedString("MenuOwnerTitle")); vars.Add("RegionInformationText", translator.GetTranslatedString("RegionInformationText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("RegionInfoText", translator.GetTranslatedString("RegionInfoText")); vars.Add("RegionOnlineText", translator.GetTranslatedString("RegionOnlineText")); vars.Add("NumberOfUsersInRegionText", translator.GetTranslatedString("NumberOfUsersInRegionText")); vars.Add("ParcelsInRegionText", translator.GetTranslatedString("ParcelsInRegionText")); // Style Switcher vars.Add("styles1", translator.GetTranslatedString("styles1")); vars.Add("styles2", translator.GetTranslatedString("styles2")); vars.Add("styles3", translator.GetTranslatedString("styles3")); vars.Add("styles4", translator.GetTranslatedString("styles4")); vars.Add("styles5", translator.GetTranslatedString("styles5")); vars.Add("StyleSwitcherStylesText", translator.GetTranslatedString("StyleSwitcherStylesText")); vars.Add("StyleSwitcherLanguagesText", translator.GetTranslatedString("StyleSwitcherLanguagesText")); vars.Add("StyleSwitcherChoiceText", translator.GetTranslatedString("StyleSwitcherChoiceText")); // Language Switcher vars.Add("en", translator.GetTranslatedString("en")); vars.Add("fr", translator.GetTranslatedString("fr")); vars.Add("de", translator.GetTranslatedString("de")); vars.Add("it", translator.GetTranslatedString("it")); vars.Add("es", translator.GetTranslatedString("es")); vars.Add("nl", translator.GetTranslatedString("nl")); var settings = webInterface.GetWebUISettings(); vars.Add("ShowLanguageTranslatorBar", !settings.HideLanguageTranslatorBar); vars.Add("ShowStyleBar", !settings.HideStyleBar); } return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); var gridService = webInterface.Registry.RequestModuleInterface <IGridService> (); vars.Add("RegionServerURL", webInterface.GridURL); // This needs to be sorted out for grid regions #region EditRegion if (requestParameters.ContainsKey("Submit")) { string RegionServerURL = requestParameters ["RegionServerURL"].ToString(); // required if (RegionServerURL == "") { response = "<h3>" + translator.GetTranslatedString("RegionServerURLError") + "</h3>"; return(null); } var regionID = requestParameters ["RegionID"].ToString(); var regionName = requestParameters ["RegionName"].ToString(); //var OwnerUUID = requestParameters["OwnerUUID"].ToString(); var regionLocX = requestParameters ["RegionLocX"].ToString(); var regionLocY = requestParameters ["RegionLocY"].ToString(); var regionSizeX = requestParameters ["RegionSizeX"].ToString(); var regionSizeY = requestParameters ["RegionSizeY"].ToString(); var regionType = requestParameters ["RegionType"].ToString(); var regionPresetType = requestParameters ["RegionPresetType"].ToString(); var regionTerrain = requestParameters ["RegionTerrain"].ToString(); var regionLoadTerrain = requestParameters.ContainsKey("RegionLoadTerrain") ? requestParameters ["RegionLoadTerrain"].ToString() : ""; // a bit of idiot proofing if (regionName == "") { response = "<h3>" + translator.GetTranslatedString("RegionNameError") + "</h3>"; return(null); } if ((regionLocX == "") || (regionLocY == "")) { response = "<h3>" + translator.GetTranslatedString("RegionLocationError") + "</h3>"; return(null); } // so far so good... // build the new region details int RegionPort = int.Parse(requestParameters ["RegionPort"].ToString()); var newRegion = new RegionInfo(); if (regionID != "") { newRegion.RegionID = UUID.Parse(regionID); } newRegion.RegionName = regionName; newRegion.RegionType = regionType; newRegion.RegionLocX = int.Parse(regionLocX); newRegion.RegionLocY = int.Parse(regionLocY); newRegion.RegionSizeX = int.Parse(regionSizeX); newRegion.RegionSizeY = int.Parse(regionSizeY); newRegion.RegionPort = RegionPort; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 50000; newRegion.Startup = StartupType.Normal; var regionPreset = regionPresetType.ToLower(); //SubString(0,1); if (regionPreset.StartsWith("c", System.StringComparison.Ordinal)) { newRegion.RegionPort = int.Parse(requestParameters ["RegionPort"].ToString()); newRegion.SeeIntoThisSimFromNeighbor = (requestParameters ["RegionVisibility"].ToString().ToLower() == "yes"); newRegion.InfiniteRegion = (requestParameters ["RegionInfinite"].ToString().ToLower() == "yes"); newRegion.ObjectCapacity = int.Parse(requestParameters ["RegionCapacity"].ToString()); string delayStartup = requestParameters ["RegionDelayStartup"].ToString(); newRegion.Startup = delayStartup.StartsWith("n", System.StringComparison.Ordinal) ? StartupType.Normal : StartupType.Medium; } if (regionPreset.StartsWith("w", System.StringComparison.Ordinal)) { // 'standard' setup newRegion.RegionType = newRegion.RegionType + "Whitecore"; //info.RegionPort; // use auto assigned port newRegion.RegionTerrain = "Flatland"; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 50000; newRegion.RegionPort = RegionPort; } if (regionPreset.StartsWith("o", System.StringComparison.Ordinal)) { // 'Openspace' setup newRegion.RegionType = newRegion.RegionType + "Openspace"; //newRegion.RegionPort; // use auto assigned port if (regionTerrain.StartsWith("a", System.StringComparison.Ordinal)) { newRegion.RegionTerrain = "Aquatic"; } else { newRegion.RegionTerrain = "Grassland"; } newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 750; newRegion.RegionSettings.AgentLimit = 10; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("h", System.StringComparison.Ordinal)) { // 'Homestead' setup newRegion.RegionType = newRegion.RegionType + "Homestead"; //info.RegionPort; // use auto assigned port newRegion.RegionTerrain = "Homestead"; newRegion.Startup = StartupType.Medium; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 3750; newRegion.RegionSettings.AgentLimit = 20; newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } if (regionPreset.StartsWith("f", System.StringComparison.Ordinal)) { // 'Full Region' setup newRegion.RegionType = newRegion.RegionType + "Full Region"; //newRegion.RegionPort; // use auto assigned port newRegion.RegionTerrain = regionTerrain; newRegion.Startup = StartupType.Normal; newRegion.SeeIntoThisSimFromNeighbor = true; newRegion.InfiniteRegion = true; newRegion.ObjectCapacity = 15000; newRegion.RegionSettings.AgentLimit = 100; if (newRegion.RegionType.StartsWith("M", System.StringComparison.Ordinal)) // defaults are 'true' { newRegion.RegionSettings.AllowLandJoinDivide = false; newRegion.RegionSettings.AllowLandResell = false; } } if (regionLoadTerrain.Length > 0) { // we are loading terrain from a file... handled later newRegion.RegionTerrain = "Custom"; } // TODO: !!! Assumes everything is local for now !!! if (requestParameters.ContainsKey("NewRegion")) { ISceneManager scenemanager = webInterface.Registry.RequestModuleInterface <ISceneManager> (); if (scenemanager.CreateRegion(newRegion)) { response = "<h3>Successfully created region</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; return(null); } response = "<h3>Error creating this region.</h3>"; return(null); } /* not necessary?? * IGridRegisterModule gridRegister = webInterface.Registry.RequestModuleInterface<IGridRegisterModule> (); * if (gridRegister != null) { * if (gridRegister.RegisterRegionWithGrid (null, true, false, null)) { * * } * * * // response = "<h3>" + error + "</h3>"; * response = "<h3> Error registering region with grid</h3>"; * } */ // update region details var infoConnector = Framework.Utilities.DataManager.RequestPlugin <IRegionInfoConnector> (); if (infoConnector != null) { infoConnector.UpdateRegionInfo(newRegion); response = "<h3>Region details updated.</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; } else { response = "<h3>Unable to update Region details!</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"/?page=region_manager\";}, 2000);" + "</script>"; } return(null); } #endregion #region EditRegion // we have or need data if (httpRequest.Query.ContainsKey("regionid")) { var region = gridService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); vars.Add("RegionID", region.RegionID.ToString()); vars.Add("RegionName", region.RegionName); UserAccount estateOwnerAccount = null; var estateOwner = UUID.Zero; var estateId = -1; IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); if (estateConnector != null) { EstateSettings estate = estateConnector.GetRegionEstateSettings(region.RegionID); if (estate != null) { estateId = (int)estate.EstateID; estateOwner = estate.EstateOwner; } var accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (accountService != null) { estateOwnerAccount = accountService.GetUserAccount(null, estate.EstateOwner); } } vars.Add("EstateList", WebHelpers.EstateSelections(webInterface.Registry, null, estateId)); vars.Add("OwnerUUID", region.EstateOwner); vars.Add("OwnerName", estateOwnerAccount != null ? estateOwnerAccount.Name : "No account found"); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionPort", region.InternalPort.ToString()); vars.Add("RegionType", WebHelpers.RegionTypeArgs(translator, region.RegionType)); vars.Add("RegionPresetType", WebHelpers.RegionPresetArgs(translator, region.RegionType)); vars.Add("RegionTerrain", WebHelpers.RegionTerrainArgs(translator, region.RegionTerrain)); // TODO: This will not work yet :) bool switches = false; var infoConnector = Framework.Utilities.DataManager.RequestPlugin <IRegionInfoConnector> (); if (infoConnector != null) { var regionInfo = infoConnector.GetRegionInfo(region.RegionID); if (regionInfo != null) { vars.Add("RegionCapacity", regionInfo.ObjectCapacity.ToString()); vars.Add("RegionVisibility", WebHelpers.YesNoSelection(translator, regionInfo.SeeIntoThisSimFromNeighbor)); vars.Add("RegionInfinite", WebHelpers.YesNoSelection(translator, regionInfo.InfiniteRegion)); vars.Add("RegionDelayStartup", WebHelpers.RegionStartupSelection(translator, regionInfo.Startup)); } } if (!switches) { vars.Add("RegionCapacity", "Unknown"); vars.Add("RegionVisibility", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionInfinite", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionDelayStartup", WebHelpers.RegionStartupSelection(translator, StartupType.Normal)); } //vars.Add ("RegionOnline", // (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline // ? translator.GetTranslatedString ("Online") // : translator.GetTranslatedString ("Offline")); IWebHttpTextureService webTextureService = webInterface.Registry. RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "images/icons/no_picture.jpg"); } vars.Add("Submit", translator.GetTranslatedString("SaveUpdates")); } #endregion else #region NewRegion { // default values // check for user region name seed string [] m_regionNameSeed = null; IConfig regionConfig = webInterface.Registry.RequestModuleInterface <ISimulationBase> ().ConfigSource.Configs ["FileBasedSimulationData"]; if (regionConfig != null) { string regionNameSeed = regionConfig.GetString("RegionNameSeed", ""); if (regionNameSeed != "") { m_regionNameSeed = regionNameSeed.Split(','); } } var rNames = new Utilities.MarkovNameGenerator(); string regionName = rNames.FirstName(m_regionNameSeed == null ? Utilities.RegionNames : m_regionNameSeed, 3, 7); vars.Add("RegionID", ""); vars.Add("RegionName", regionName); var scenemanager = webInterface.Registry.RequestModuleInterface <ISceneManager> (); var gconnector = Framework.Utilities.DataManager.RequestPlugin <IGenericsConnector> (); var settings = gconnector.GetGeneric <WebUISettings> (UUID.Zero, "WebUISettings", "Settings"); if (settings == null) { settings = new WebUISettings(); } // get some current details (This may be better than using scenemanager) //List<GridRegion> regions = gridService.GetRegionsByName(null, "", null,null); var currentInfo = scenemanager.FindCurrentRegionInfo(); //Dictionary<string, int> currentInfo = null; if (currentInfo != null) { vars.Add("RegionLocX", currentInfo ["minX"] > 0 ? currentInfo ["minX"] : settings.MapCenter.X); vars.Add("RegionLocY", currentInfo ["minY"] > 0 ? currentInfo ["minY"] : settings.MapCenter.Y); vars.Add("RegionPort", currentInfo ["port"] > 0 ? currentInfo ["port"] + 1 : 9000); } else { vars.Add("RegionLocX", settings.MapCenter.X); vars.Add("RegionLocY", settings.MapCenter.Y); vars.Add("RegionPort", 9000); } vars.Add("RegionSizeX", Constants.RegionSize); vars.Add("RegionSizeY", Constants.RegionSize); vars.Add("RegionType", WebHelpers.RegionTypeArgs(translator, "")); vars.Add("RegionPresetType", WebHelpers.RegionPresetArgs(translator, "")); vars.Add("RegionTerrain", WebHelpers.RegionTerrainArgs(translator, "")); vars.Add("EstateList", WebHelpers.EstateSelections(webInterface.Registry, null, -1)); vars.Add("RegionCapacity", "Unknown"); vars.Add("RegionVisibility", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionInfinite", WebHelpers.YesNoSelection(translator, true)); vars.Add("RegionDelayStartup", WebHelpers.RegionStartupSelection(translator, StartupType.Normal)); // normal startup vars.Add("Submit", translator.GetTranslatedString("Save")); } #endregion vars.Add("RegionPresets", WebHelpers.RegionSelections(webInterface.Registry)); // Labels vars.Add("RegionManagerText", translator.GetTranslatedString("MenuRegionManager")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionPresetText", translator.GetTranslatedString("RegionPresetText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("EstateText", translator.GetTranslatedString("EstateText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionPortText", translator.GetTranslatedString("RegionPortText")); vars.Add("RegionDelayStartupText", translator.GetTranslatedString("RegionDelayStartupText")); vars.Add("RegionVisibilityText", translator.GetTranslatedString("RegionVisibilityText")); vars.Add("RegionInfiniteText", translator.GetTranslatedString("RegionInfiniteText")); vars.Add("RegionCapacityText", translator.GetTranslatedString("RegionCapacityText")); vars.Add("Cancel", translator.GetTranslatedString("Cancel")); vars.Add("InfoMessage", ""); return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { // under development //response = "<h3>Sorry! This feature is not available yet<</h3><br /> Redirecting to main page" + // "<script language=\"javascript\">" + // "setTimeout(function() {window.location.href = \"index.html\";}, 3000);" + // "</script>"; //return null; response = null; var vars = new Dictionary <string, object> (); if (httpRequest.Query.ContainsKey("regionid")) { var regionService = webInterface.Registry.RequestModuleInterface <IGridService> (); var region = regionService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); var ownerUUID = UUID.Zero; string ownerName = "Unknown"; if (estateConnector != null) { EstateSettings estate = estateConnector.GetRegionEstateSettings(region.RegionID); if (estate != null) { ownerUUID = estate.EstateOwner; UserAccount estateOwnerAccount = null; var accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (accountService != null) { estateOwnerAccount = accountService.GetUserAccount(null, estate.EstateOwner); } ownerName = estateOwnerAccount == null ? "No account found" : estateOwnerAccount.Name; } } else { ownerUUID = UUID.Zero; ownerName = "Unknown"; } vars.Add("OwnerUUID", ownerUUID); vars.Add("OwnerName", ownerName); vars.Add("RegionName", region.RegionName); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionTerrain", region.RegionTerrain); vars.Add("RegionOnline", (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); IDirectoryServiceConnector directoryConnector = Framework.Utilities.DataManager.RequestPlugin <IDirectoryServiceConnector> (); if (directoryConnector != null) { IUserAccountService accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); List <LandData> data = directoryConnector.GetParcelsByRegion(0, 10, region.RegionID, UUID.Zero, ParcelFlags.None, ParcelCategory.Any); List <Dictionary <string, object> > parcels = new List <Dictionary <string, object> > (); string url = "../images/icons/no_parcel.jpg"; if (data != null) { foreach (var p in data) { Dictionary <string, object> parcel = new Dictionary <string, object> (); parcel.Add("ParcelNameText", translator.GetTranslatedString("ParcelNameText")); parcel.Add("ParcelOwnerText", translator.GetTranslatedString("ParcelOwnerText")); parcel.Add("ParcelUUID", p.GlobalID); parcel.Add("ParcelName", p.Name); parcel.Add("ParcelOwnerUUID", p.OwnerID); parcel.Add("ParcelSnapshotURL", url); if (accountService != null) { var account = accountService.GetUserAccount(null, p.OwnerID); if (account != null) { parcel.Add("ParcelOwnerName", account.Name); } else { parcel.Add("ParcelOwnerName", translator.GetTranslatedString("NoAccountFound")); } } parcels.Add(parcel); } } vars.Add("ParcelInRegion", parcels); vars.Add("NumberOfParcelsInRegion", parcels.Count); } IWebHttpTextureService webTextureService = webInterface.Registry. RequestModuleInterface <IWebHttpTextureService> (); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "../images/icons/no_terrain.jpg"); } /* // Regionprofile Menus * vars.Add("MenuRegionTitle", translator.GetTranslatedString("MenuRegionTitle")); * vars.Add("TooltipsMenuRegion", translator.GetTranslatedString("TooltipsMenuRegion")); * vars.Add("MenuParcelTitle", translator.GetTranslatedString("MenuParcelTitle")); * vars.Add("TooltipsMenuParcel", translator.GetTranslatedString("TooltipsMenuParcel")); * vars.Add("MenuOwnerTitle", translator.GetTranslatedString("MenuOwnerTitle")); * vars.Add("TooltipsMenuOwner", translator.GetTranslatedString("TooltipsMenuOwner")); */ vars.Add("RegionInformationText", translator.GetTranslatedString("RegionInformationText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionTerrainText", translator.GetTranslatedString("RegionTerrainText")); vars.Add("RegionInfoText", translator.GetTranslatedString("RegionInfoText")); vars.Add("RegionOnlineText", translator.GetTranslatedString("RegionOnlineText")); vars.Add("NumberOfUsersInRegionText", translator.GetTranslatedString("NumberOfUsersInRegionText")); vars.Add("ParcelsInRegionText", translator.GetTranslatedString("ParcelsInRegionText")); vars.Add("MainServerURL", webInterface.GridURL); } return(vars); }