2007-05-27 18:52:42 +00:00
using System ;
using System.Collections.Generic ;
using System.Text ;
using OpenSim.Framework.Interfaces ;
using OpenSim.Framework.Utilities ;
using OpenSim.Framework.Console ;
using libsecondlife ;
namespace OpenSim.Framework.Types
{
public class RegionInfo
{
2007-06-08 19:10:55 +00:00
public LLUUID SimUUID = new LLUUID ( ) ;
public string RegionName = "" ;
public uint RegionLocX = 0 ;
public uint RegionLocY = 0 ;
public ulong RegionHandle = 0 ;
2007-05-27 18:52:42 +00:00
2007-06-08 19:10:55 +00:00
public string DataStore = "" ;
public bool isSandbox = false ;
2007-05-27 18:52:42 +00:00
2007-06-08 19:10:55 +00:00
public LLUUID MasterAvatarAssignedUUID = new LLUUID ( ) ;
public string MasterAvatarFirstName = "" ;
public string MasterAvatarLastName = "" ;
2007-05-27 18:52:42 +00:00
2007-06-08 19:10:55 +00:00
public int IPListenPort = 0 ;
public string IPListenAddr = "" ;
2007-05-27 18:52:42 +00:00
2007-06-08 19:10:55 +00:00
public EstateSettings estateSettings ;
2007-05-27 18:52:42 +00:00
public RegionInfo ( )
{
2007-06-08 19:30:27 +00:00
estateSettings = new EstateSettings ( ) ;
2007-05-27 18:52:42 +00:00
}
public void InitConfig ( bool sandboxMode , IGenericConfig configData )
{
this . isSandbox = sandboxMode ;
try
{
// Sim UUID
string attri = "" ;
attri = configData . GetAttribute ( "SimUUID" ) ;
if ( attri = = "" )
{
this . SimUUID = LLUUID . Random ( ) ;
configData . SetAttribute ( "SimUUID" , this . SimUUID . ToString ( ) ) ;
}
else
{
this . SimUUID = new LLUUID ( attri ) ;
}
// Sim name
attri = "" ;
attri = configData . GetAttribute ( "SimName" ) ;
if ( attri = = "" )
{
this . RegionName = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Name" , "OpenSim test" ) ;
configData . SetAttribute ( "SimName" , this . RegionName ) ;
}
else
{
this . RegionName = attri ;
}
// Sim/Grid location X
attri = "" ;
attri = configData . GetAttribute ( "SimLocationX" ) ;
if ( attri = = "" )
{
string location = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid Location X" , "997" ) ;
configData . SetAttribute ( "SimLocationX" , location ) ;
this . RegionLocX = ( uint ) Convert . ToUInt32 ( location ) ;
}
else
{
this . RegionLocX = ( uint ) Convert . ToUInt32 ( attri ) ;
}
// Sim/Grid location Y
attri = "" ;
attri = configData . GetAttribute ( "SimLocationY" ) ;
if ( attri = = "" )
{
string location = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid Location Y" , "996" ) ;
configData . SetAttribute ( "SimLocationY" , location ) ;
this . RegionLocY = ( uint ) Convert . ToUInt32 ( location ) ;
}
else
{
this . RegionLocY = ( uint ) Convert . ToUInt32 ( attri ) ;
}
// Local storage datastore
attri = "" ;
attri = configData . GetAttribute ( "Datastore" ) ;
if ( attri = = "" )
{
string datastore = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Filename for local storage" , "localworld.yap" ) ;
configData . SetAttribute ( "Datastore" , datastore ) ;
this . DataStore = datastore ;
}
else
{
this . DataStore = attri ;
}
//Sim Listen Port
attri = "" ;
attri = configData . GetAttribute ( "SimListenPort" ) ;
if ( attri = = "" )
{
string port = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "UDP port for client connections" , "9000" ) ;
configData . SetAttribute ( "SimListenPort" , port ) ;
this . IPListenPort = Convert . ToInt32 ( port ) ;
}
else
{
this . IPListenPort = Convert . ToInt32 ( attri ) ;
}
//Sim Listen Address
attri = "" ;
attri = configData . GetAttribute ( "SimListenAddress" ) ;
if ( attri = = "" )
{
this . IPListenAddr = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "IP Address to listen on for client connections" , "127.0.0.1" ) ;
configData . SetAttribute ( "SimListenAddress" , this . IPListenAddr ) ;
}
else
{
// Probably belongs elsewhere, but oh well.
if ( attri . Trim ( ) . StartsWith ( "SYSTEMIP" ) )
{
string localhostname = System . Net . Dns . GetHostName ( ) ;
System . Net . IPAddress [ ] ips = System . Net . Dns . GetHostAddresses ( localhostname ) ;
try
{
this . IPListenAddr = ips [ 0 ] . ToString ( ) ;
}
catch ( Exception e )
{
e . ToString ( ) ;
this . IPListenAddr = "127.0.0.1" ; // Use the default if we fail
}
}
else
{
this . IPListenAddr = attri ;
}
}
this . RegionHandle = Util . UIntsToLong ( ( RegionLocX * 256 ) , ( RegionLocY * 256 ) ) ;
configData . Commit ( ) ;
}
catch ( Exception e )
{
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , "Config.cs:InitConfig() - Exception occured" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , e . ToString ( ) ) ;
}
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Sim settings loaded:" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "UUID: " + this . SimUUID . ToStringHyphenated ( ) ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Name: " + this . RegionName ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Region Location: [" + this . RegionLocX . ToString ( ) + "," + this . RegionLocY + "]" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Region Handle: " + this . RegionHandle . ToString ( ) ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Listening on IP: " + this . IPListenAddr + ":" + this . IPListenPort ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Sandbox Mode? " + isSandbox . ToString ( ) ) ;
}
}
}