aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/GridServer.Config/DbGridConfig.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/GridServer.Config/DbGridConfig.cs')
-rw-r--r--OpenSim/Grid/GridServer.Config/DbGridConfig.cs161
1 files changed, 161 insertions, 0 deletions
diff --git a/OpenSim/Grid/GridServer.Config/DbGridConfig.cs b/OpenSim/Grid/GridServer.Config/DbGridConfig.cs
new file mode 100644
index 0000000..2218004
--- /dev/null
+++ b/OpenSim/Grid/GridServer.Config/DbGridConfig.cs
@@ -0,0 +1,161 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Framework.Console;
31using OpenSim.Framework.Interfaces;
32using Db4objects.Db4o;
33
34namespace OpenGrid.Config.GridConfigDb4o
35{
36 /// <summary>
37 /// A grid configuration interface for returning the DB4o Config Provider
38 /// </summary>
39 public class Db40ConfigPlugin: IGridConfig
40 {
41 /// <summary>
42 /// Loads and returns a configuration objeect
43 /// </summary>
44 /// <returns>A grid configuration object</returns>
45 public GridConfig GetConfigObject()
46 {
47 OpenSim.Framework.Console.MainLog.Instance.Verbose("Loading Db40Config dll");
48 return ( new DbGridConfig());
49 }
50 }
51
52 /// <summary>
53 /// A DB4o based Gridserver configuration object
54 /// </summary>
55 public class DbGridConfig : GridConfig
56 {
57 /// <summary>
58 /// The DB4o Database
59 /// </summary>
60 private IObjectContainer db;
61
62 /// <summary>
63 /// User configuration for the Grid Config interfaces
64 /// </summary>
65 public void LoadDefaults() {
66 OpenSim.Framework.Console.MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
67
68 // About the grid options
69 this.GridOwner = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
70
71 // Asset Options
72 this.DefaultAssetServer = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/");
73 this.AssetSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to asset server","null");
74 this.AssetRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
75
76 // User Server Options
77 this.DefaultUserServer = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/");
78 this.UserSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to user server","null");
79 this.UserRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from user server","null");
80
81 // Region Server Options
82 this.SimSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to sims","null");
83 this.SimRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from sims","null");
84 }
85
86 /// <summary>
87 /// Initialises a new configuration object
88 /// </summary>
89 public override void InitConfig() {
90 try {
91 // Perform Db4o initialisation
92 db = Db4oFactory.OpenFile("opengrid.yap");
93
94 // Locate the grid configuration object
95 IObjectSet result = db.Get(typeof(DbGridConfig));
96 // Found?
97 if(result.Count==1) {
98 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
99 foreach (DbGridConfig cfg in result) {
100 // Import each setting into this class
101 // Grid Settings
102 this.GridOwner=cfg.GridOwner;
103 // Asset Settings
104 this.DefaultAssetServer=cfg.DefaultAssetServer;
105 this.AssetSendKey=cfg.AssetSendKey;
106 this.AssetRecvKey=cfg.AssetRecvKey;
107 // User Settings
108 this.DefaultUserServer=cfg.DefaultUserServer;
109 this.UserSendKey=cfg.UserSendKey;
110 this.UserRecvKey=cfg.UserRecvKey;
111 // Region Settings
112 this.SimSendKey=cfg.SimSendKey;
113 this.SimRecvKey=cfg.SimRecvKey;
114 }
115 // Create a new configuration object from this class
116 } else {
117 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
118
119 // Load default settings into this class
120 LoadDefaults();
121
122 // Saves to the database file...
123 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Writing out default settings to local database");
124 db.Set(this);
125
126 // Closes file locks
127 db.Close();
128 }
129 } catch(Exception e) {
130 OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
131 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
132 }
133
134 // Grid Settings
135 OpenSim.Framework.Console.MainLog.Instance.Verbose("Grid settings loaded:");
136 OpenSim.Framework.Console.MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
137
138 // Asset Settings
139 OpenSim.Framework.Console.MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
140 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
141 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
142
143 // User Settings
144 OpenSim.Framework.Console.MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
145 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
146 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
147
148 // Region Settings
149 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
150 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
151 }
152
153 /// <summary>
154 /// Closes down the database and releases filesystem locks
155 /// </summary>
156 public void Shutdown() {
157 db.Close();
158 }
159 }
160
161}