2007-03-22 10:11:15 +00:00
/ *
* Copyright ( c ) OpenSim project , http : //sim.opensecondlife.org/
*
* 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 < organization > 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 < copyright holder > ` ` 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 < copyright holder > 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.Collections.Generic ;
using OpenSim ;
using OpenSim.Framework.Utilities ;
using OpenSim.Framework.Interfaces ;
//using OpenSim.world;
using Db4objects.Db4o ;
namespace OpenSim.Config.SimConfigDb4o
{
public class Db40ConfigPlugin : ISimConfig
{
public SimConfig GetConfigObject ( )
{
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Loading Db40Config dll" ) ;
return ( new DbSimConfig ( ) ) ;
}
}
public class DbSimConfig : SimConfig
{
private bool isSandbox ;
private IObjectContainer db ;
public void LoadDefaults ( ) {
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings" ) ;
this . RegionName = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Name [OpenSim test]: " , "OpenSim test" ) ;
this . RegionLocX = ( uint ) Convert . ToInt32 ( OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid Location X [997]: " , "997" ) ) ;
this . RegionLocY = ( uint ) Convert . ToInt32 ( OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid Location Y [996]: " , "996" ) ) ;
this . IPListenPort = Convert . ToInt32 ( OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "UDP port for client connections [9000]: " , "9000" ) ) ;
this . IPListenAddr = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "IP Address to listen on for client connections [127.0.0.1]: " , "127.0.0.1" ) ;
if ( ! isSandbox )
{
this . AssetURL = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Asset server URL: " ) ;
this . AssetSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Asset server key: " ) ;
this . GridURL = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid server URL: " ) ;
this . GridSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to grid server: " ) ;
this . GridRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from grid server: " ) ;
this . UserURL = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "User server URL: " ) ;
this . UserSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to user server: " ) ;
this . UserRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from user server: " ) ;
}
this . RegionHandle = Util . UIntsToLong ( ( RegionLocX * 256 ) , ( RegionLocY * 256 ) ) ;
}
public override void InitConfig ( bool sandboxMode ) {
this . isSandbox = sandboxMode ;
try {
db = Db4oFactory . OpenFile ( "opensim.yap" ) ;
IObjectSet result = db . Get ( typeof ( DbSimConfig ) ) ;
if ( result . Count = = 1 ) {
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Config.cs:InitConfig() - Found a SimConfig object in the local database, loading" ) ;
foreach ( DbSimConfig cfg in result ) {
this . RegionName = cfg . RegionName ;
this . RegionLocX = cfg . RegionLocX ;
this . RegionLocY = cfg . RegionLocY ;
this . RegionHandle = Util . UIntsToLong ( ( RegionLocX * 256 ) , ( RegionLocY * 256 ) ) ;
this . IPListenPort = cfg . IPListenPort ;
this . IPListenAddr = cfg . IPListenAddr ;
this . AssetURL = cfg . AssetURL ;
this . AssetSendKey = cfg . AssetSendKey ;
this . GridURL = cfg . GridURL ;
this . GridSendKey = cfg . GridSendKey ;
}
} else {
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults" ) ;
LoadDefaults ( ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Writing out default settings to local database" ) ;
db . Set ( this ) ;
2007-04-02 10:46:59 +00:00
db . Commit ( ) ;
2007-03-22 10:11:15 +00:00
}
} catch ( Exception e ) {
db . Close ( ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Config.cs:InitConfig() - Exception occured" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( e . ToString ( ) ) ;
}
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Sim settings loaded:" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Name: " + this . RegionName ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Region Location: [" + this . RegionLocX . ToString ( ) + "," + this . RegionLocY + "]" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Region Handle: " + this . RegionHandle . ToString ( ) ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Listening on IP: " + this . IPListenAddr + ":" + this . IPListenPort ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Sandbox Mode? " + isSandbox . ToString ( ) ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Asset URL: " + this . AssetURL ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Asset key: " + this . AssetSendKey ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Grid URL: " + this . GridURL ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Grid key: " + this . GridSendKey ) ;
}
public override void LoadFromGrid ( ) {
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( "Config.cs:LoadFromGrid() - dummy function, DOING ABSOLUTELY NOTHING AT ALL!!!" ) ;
// TODO: Make this crap work
/ * WebRequest GridLogin = WebRequest . Create ( this . GridURL + "regions/" + this . RegionHandle . ToString ( ) + "/login" ) ;
WebResponse GridResponse = GridLogin . GetResponse ( ) ;
byte [ ] idata = new byte [ ( int ) GridResponse . ContentLength ] ;
BinaryReader br = new BinaryReader ( GridResponse . GetResponseStream ( ) ) ;
br . Close ( ) ;
GridResponse . Close ( ) ;
* /
}
public void Shutdown ( ) {
db . Close ( ) ;
}
}
}