123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- /*
- * Copyright (c) Contributors, http://www.openmetaverse.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSim Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
- using System;
- using System.Globalization;
- using System.Net;
- using System.Net.Sockets;
- using libsecondlife;
- using OpenSim.Framework.Console;
- using OpenSim.Framework.Interfaces;
- using OpenSim.Framework.Utilities;
- namespace OpenSim.Framework.Types
- {
- public class RegionInfo
- {
- public LLUUID SimUUID = new LLUUID();
- public string RegionName = "";
- private IPEndPoint m_internalEndPoint;
- public IPEndPoint InternalEndPoint
- {
- get
- {
- return m_internalEndPoint;
- }
- }
- public IPEndPoint ExternalEndPoint
- {
- get
- {
- // Old one defaults to IPv6
- //return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port );
- // New method favors IPv4
- IPAddress ia = null;
- foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
- {
- if (ia == null)
- ia = Adr;
- if (Adr.AddressFamily == AddressFamily.InterNetwork)
- {
- ia = Adr;
- break;
- }
- }
-
- return new IPEndPoint(ia, m_internalEndPoint.Port);
- }
- }
-
- private string m_externalHostName;
- public string ExternalHostName
- {
- get
- {
- return m_externalHostName;
- }
- }
- private uint? m_regionLocX;
- public uint RegionLocX
- {
- get
- {
- return m_regionLocX.Value;
- }
- }
- private uint? m_regionLocY;
- public uint RegionLocY
- {
- get
- {
- return m_regionLocY.Value;
- }
- }
- private ulong? m_regionHandle;
- public ulong RegionHandle
- {
- get
- {
- if (!m_regionHandle.HasValue)
- {
- m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
- }
- return m_regionHandle.Value;
- }
- }
- // Only used for remote regions , ie ones not in the current instance
- private uint m_remotingPort;
- public uint RemotingPort
- {
- get
- {
- return m_remotingPort;
- }
- set
- {
- m_remotingPort = value;
- }
- }
- public string RemotingAddress;
- public string DataStore = "";
- public bool isSandbox = false;
- public LLUUID MasterAvatarAssignedUUID = new LLUUID();
- public string MasterAvatarFirstName = "";
- public string MasterAvatarLastName = "";
- public string MasterAvatarSandboxPassword = "";
- public EstateSettings estateSettings;
- public RegionInfo()
- {
- estateSettings = new EstateSettings();
- }
- public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
- : this()
- {
- m_regionLocX = regionLocX;
- m_regionLocY = regionLocY;
- m_internalEndPoint = internalEndPoint;
- m_externalHostName = externalUri;
- }
- public void InitConfig(bool sandboxMode, IGenericConfig configData)
- {
- this.isSandbox = sandboxMode;
- try
- {
- string attri = "";
- // Sim UUID
- string simId = configData.GetAttribute("SimUUID");
- if (String.IsNullOrEmpty( simId ))
- {
- this.SimUUID = LLUUID.Random();
- }
- else
- {
- this.SimUUID = new LLUUID(simId);
- }
- configData.SetAttribute("SimUUID", this.SimUUID.ToString());
- this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name");
- //m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X");
-
- attri = "";
- attri = configData.GetAttribute("SimLocationX");
- if (attri == "")
- {
- string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000");
- configData.SetAttribute("SimLocationX", location);
- m_regionLocX = (uint)Convert.ToUInt32(location);
- }
- else
- {
- m_regionLocX = (uint)Convert.ToUInt32(attri);
- }
- // Sim/Grid location Y
- attri = "";
- attri = configData.GetAttribute("SimLocationY");
- if (attri == "")
- {
- string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000");
- configData.SetAttribute("SimLocationY", location);
- m_regionLocY = (uint)Convert.ToUInt32(location);
- }
- else
- {
- m_regionLocY = (uint)Convert.ToUInt32(attri);
- }
- m_regionHandle = null;
- this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage");
-
- IPAddress internalAddress = GetIPAddress(configData, "InternalIPAddress", "0.0.0.0", "Internal IP Address for UDP client connections");
- int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections");
- m_internalEndPoint = new IPEndPoint(internalAddress, internalPort);
- m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name");
- estateSettings.terrainFile =
- GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");
-
- attri = "";
- attri = configData.GetAttribute("TerrainMultiplier");
- if (attri == "")
- {
- string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
- this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
- configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
- }
- else
- {
- this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
- }
- attri = "";
- attri = configData.GetAttribute("MasterAvatarFirstName");
- if (attri == "")
- {
- this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
- configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
- }
- else
- {
- this.MasterAvatarFirstName = attri;
- }
- attri = "";
- attri = configData.GetAttribute("MasterAvatarLastName");
- if (attri == "")
- {
- this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
- configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
- }
- else
- {
- this.MasterAvatarLastName = attri;
- }
- if (isSandbox) //Sandbox Mode Specific Settings
- {
- attri = "";
- attri = configData.GetAttribute("MasterAvatarSandboxPassword");
- if (attri == "")
- {
- this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
- //Should I store this?
- configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
- }
- else
- {
- this.MasterAvatarSandboxPassword = attri;
- }
- }
- configData.Commit();
- }
- catch (Exception e)
- {
- MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
- MainLog.Instance.Warn(e.ToString());
- }
- MainLog.Instance.Verbose("Sim settings loaded:");
- MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated());
- MainLog.Instance.Verbose("Name: " + this.RegionName);
- MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
- MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString());
- MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() );
- MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString());
- }
- private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4)
- {
- throw new Exception("The method or operation is not implemented.");
- }
- private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
- {
- string s = configData.GetAttribute(attrName);
- if (String.IsNullOrEmpty( s ))
- {
- s = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
- configData.SetAttribute(attrName, s );
- }
- return s;
- }
- private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
- {
- string addressStr = configData.GetAttribute(attrName);
- IPAddress address;
- if (!IPAddress.TryParse(addressStr, out address))
- {
- address = MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue);
- configData.SetAttribute(attrName, address.ToString());
- }
- return address;
- }
-
- private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
- {
- string portStr = configData.GetAttribute(attrName);
- int port;
- if (!int.TryParse(portStr, out port))
- {
- port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue);
- configData.SetAttribute(attrName, port.ToString());
- }
-
- return port;
- }
- }
- }
|