From 843f547684ef8a084e336361a440b72090370dd1 Mon Sep 17 00:00:00 2001 From: gareth Date: Mon, 2 Apr 2007 02:11:51 +0000 Subject: [PATCH] Moved grid configuration to Db4o database --- .../GridConfigDb4o/DbGridConfig.cs | 148 +++++------------- .../OpenGrid.Config.GridConfigDb4o.csproj | 111 +++++++++++++ .../OpenGrid.Config.GridConfigDb4o.dll.build | 46 ++++++ OpenGridServices.GridServer/Main.cs | 50 ++++-- .../OpenGridServices.GridServer.csproj | 4 + .../OpenGridServices.GridServer.exe.build | 1 + OpenSim.Framework/OpenSim.Framework.csproj | 3 + OpenSim.Framework/OpenSim.Framework.dll.build | 1 + OpenSim.build | 3 + OpenSim.sln | 10 +- prebuild.xml | 27 ++++ 11 files changed, 282 insertions(+), 122 deletions(-) create mode 100644 OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.csproj create mode 100644 OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build diff --git a/OpenGrid.Config/GridConfigDb4o/DbGridConfig.cs b/OpenGrid.Config/GridConfigDb4o/DbGridConfig.cs index 250f3fd044..f3ad2cb3e1 100644 --- a/OpenGrid.Config/GridConfigDb4o/DbGridConfig.cs +++ b/OpenGrid.Config/GridConfigDb4o/DbGridConfig.cs @@ -26,70 +26,58 @@ */ using System; using System.Collections.Generic; -using OpenSim; -using OpenSim.Framework.Utilities; +using OpenSim.Framework.Console; using OpenSim.Framework.Interfaces; -using OpenSim.Framework.Terrain; -//using OpenSim.world; using Db4objects.Db4o; -namespace OpenSim.Config.SimConfigDb4o +namespace OpenGrid.Config.GridConfigDb4o { - public class Db40ConfigPlugin: ISimConfig + public class Db40ConfigPlugin: IGridConfig { - public SimConfig GetConfigObject() + public GridConfig GetConfigObject() { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Loading Db40Config dll"); - return ( new DbSimConfig()); + return ( new DbGridConfig()); } } - public class DbSimConfig : SimConfig + public class DbGridConfig : GridConfig { - 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)); + this.GridOwner = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Grid owner [OGS development team]: ", "OGS development team"); + + this.DefaultAssetServer = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Default asset server [no default]: "); + this.AssetSendKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to send to asset server: "); + this.AssetRecvKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to expect from asset server: "); + + this.DefaultUserServer = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Default user server [no default]: "); + 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.SimSendKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to send to sims: "); + this.SimRecvKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to expect from sims: "); } - public override void InitConfig(bool sandboxMode) { - this.isSandbox = sandboxMode; + public override void InitConfig() { try { - db = Db4oFactory.OpenFile("opensim.yap"); - IObjectSet result = db.Get(typeof(DbSimConfig)); + db = Db4oFactory.OpenFile("opengrid.yap"); + IObjectSet result = db.Get(typeof(DbGridConfig)); 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; + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading"); + foreach (DbGridConfig cfg in result) { + this.GridOwner=cfg.GridOwner; + this.DefaultAssetServer=cfg.DefaultAssetServer; + this.AssetSendKey=cfg.AssetSendKey; + this.AssetRecvKey=cfg.AssetRecvKey; + this.DefaultUserServer=cfg.DefaultUserServer; + this.UserSendKey=cfg.UserSendKey; + this.UserRecvKey=cfg.UserRecvKey; + this.SimSendKey=cfg.SimSendKey; + this.SimRecvKey=cfg.SimRecvKey; } } else { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults"); @@ -103,70 +91,18 @@ namespace OpenSim.Config.SimConfigDb4o 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); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Grid settings loaded:"); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Grid owner: " + this.GridOwner); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Default asset server: " + this.DefaultAssetServer); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to send to asset server: " + this.AssetSendKey); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to expect from asset server: " + this.AssetRecvKey); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Default user server: " + this.DefaultUserServer); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to send to user server: " + this.UserSendKey); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to expect from user server: " + this.UserRecvKey); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to send to sims: " + this.SimSendKey); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Key to expect from sims: " + this.SimRecvKey); } - public override float[] LoadWorld() - { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - Loading world...."); - //World blank = new World(); - float[] heightmap = null; - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - Looking for a heightmap in local DB"); - IObjectSet world_result = db.Get(typeof(MapStorage)); - if(world_result.Count>0) { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - Found a heightmap in local database, loading"); - MapStorage map=(MapStorage)world_result.Next(); - //blank.LandMap = map.Map; - heightmap = map.Map; - } else { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - No heightmap found, generating new one"); - HeightmapGenHills hills = new HeightmapGenHills(); - // blank.LandMap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false); - heightmap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - Saving heightmap to local database"); - MapStorage map= new MapStorage(); - map.Map = heightmap; //blank.LandMap; - db.Set(map); - db.Commit(); - } - return heightmap; - } - - public override void SaveMap(float[] heightmap) - { - IObjectSet world_result = db.Get(typeof(MapStorage)); - if(world_result.Count>0) { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadWorld() - updating saved copy of heightmap in local database"); - MapStorage map=(MapStorage)world_result.Next(); - db.Delete(map); - } - MapStorage map1= new MapStorage(); - map1.Map = heightmap; //OpenSim_Main.local_world.LandMap; - db.Set(map1); - db.Commit(); - } - - 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(); diff --git a/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.csproj b/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.csproj new file mode 100644 index 0000000000..ecad2a22af --- /dev/null +++ b/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.csproj @@ -0,0 +1,111 @@ + + + Local + 8.0.50727 + 2.0 + {0E19DF8F-0000-0000-0000-000000000000} + Debug + AnyCPU + + + + OpenGrid.Config.GridConfigDb4o + JScript + Grid + IE50 + false + Library + + OpenGrid.Config.GridConfigDb4o + + + + + + False + 285212672 + False + + + TRACE + + False + 4096 + True + ../../bin/ + False + False + False + 4 + + + + False + 285212672 + False + + + TRACE;DEBUG + + True + 4096 + False + ../../bin/ + False + False + False + 4 + + + + + System.dll + False + + + ..\..\bin\System.Data.dll + False + + + System.Xml.dll + False + + + ..\..\bin\libsecondlife.dll + False + + + ..\..\bin\Db4objects.Db4o.dll + False + + + + + OpenSim.Framework + {7404933D-0000-0000-0000-000000000000} + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + False + + + OpenSim.Framework.Console + {16759386-0000-0000-0000-000000000000} + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + False + + + + + Code + + + Code + + + + + + + + + + diff --git a/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build b/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build new file mode 100644 index 0000000000..73e09cee24 --- /dev/null +++ b/OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.dll.build @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OpenGridServices.GridServer/Main.cs b/OpenGridServices.GridServer/Main.cs index ce24d72027..5b7f921791 100644 --- a/OpenGridServices.GridServer/Main.cs +++ b/OpenGridServices.GridServer/Main.cs @@ -32,10 +32,12 @@ using System.IO; using System.Text; using System.Timers; using System.Net; +using System.Reflection; using libsecondlife; using OpenSim.Framework; using OpenSim.Framework.Sims; using OpenSim.Framework.Console; +using OpenSim.Framework.Interfaces; namespace OpenGridServices.GridServer { @@ -43,6 +45,8 @@ namespace OpenGridServices.GridServer /// public class OpenGrid_Main : conscmd_callback { + private string ConfigDll = "OpenGrid.Config.GridConfigDb4o.dll"; + private GridConfig Cfg; public static OpenGrid_Main thegrid; public string GridOwner; public string DefaultStartupMsg; @@ -91,22 +95,10 @@ namespace OpenGridServices.GridServer public void Startup() { - m_console.WriteLine("Main.cs:Startup() - Please press enter to retain default settings"); + m_console.WriteLine("Main.cs:Startup() - Loading configuration"); + Cfg = this.LoadConfigDll(this.ConfigDll); + Cfg.InitConfig(); - this.GridOwner = m_console.CmdPrompt("Grid owner [OGS development team]: ", "OGS development team"); - this.DefaultStartupMsg = m_console.CmdPrompt("Default startup message for clients [Welcome to OGS!]: ", "Welcome to OGS!"); - - this.DefaultAssetServer = m_console.CmdPrompt("Default asset server [no default]: "); - this.AssetSendKey = m_console.CmdPrompt("Key to send to asset server: "); - this.AssetRecvKey = m_console.CmdPrompt("Key to expect from asset server: "); - - this.DefaultUserServer = m_console.CmdPrompt("Default user server [no default]: "); - this.UserSendKey = m_console.CmdPrompt("Key to send to user server: "); - this.UserRecvKey = m_console.CmdPrompt("Key to expect from user server: "); - - this.SimSendKey = m_console.CmdPrompt("Key to send to sims: "); - this.SimRecvKey = m_console.CmdPrompt("Key to expect from sims: "); - m_console.WriteLine("Main.cs:Startup() - Loading sim profiles from database"); this._regionmanager = new SimProfileManager(); _regionmanager.LoadProfiles(); @@ -121,6 +113,34 @@ namespace OpenGridServices.GridServer SimCheckTimer.Enabled=true; } + private GridConfig LoadConfigDll(string dllName) + { + Assembly pluginAssembly = Assembly.LoadFrom(dllName); + GridConfig config = null; + + foreach (Type pluginType in pluginAssembly.GetTypes()) + { + if (pluginType.IsPublic) + { + if (!pluginType.IsAbstract) + { + Type typeInterface = pluginType.GetInterface("IGridConfig", true); + + if (typeInterface != null) + { + IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); + config = plug.GetConfigObject(); + break; + } + + typeInterface = null; + } + } + } + pluginAssembly = null; + return config; + } + public void CheckSims(object sender, ElapsedEventArgs e) { foreach(SimProfileBase sim in _regionmanager.SimProfiles.Values) { string SimResponse=""; diff --git a/OpenGridServices.GridServer/OpenGridServices.GridServer.csproj b/OpenGridServices.GridServer/OpenGridServices.GridServer.csproj index 12b4933b5e..6d1614b235 100644 --- a/OpenGridServices.GridServer/OpenGridServices.GridServer.csproj +++ b/OpenGridServices.GridServer/OpenGridServices.GridServer.csproj @@ -70,6 +70,10 @@ System.Xml.dll False + + OpenSim.Framework.Interfaces.dll + False + ..\bin\libsecondlife.dll False diff --git a/OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build b/OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build index 111e2f7213..814ceeaad5 100644 --- a/OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build +++ b/OpenGridServices.GridServer/OpenGridServices.GridServer.exe.build @@ -25,6 +25,7 @@ + diff --git a/OpenSim.Framework/OpenSim.Framework.csproj b/OpenSim.Framework/OpenSim.Framework.csproj index 2e2d16cb0d..55974fa01d 100644 --- a/OpenSim.Framework/OpenSim.Framework.csproj +++ b/OpenSim.Framework/OpenSim.Framework.csproj @@ -95,6 +95,9 @@ Code + + Code + Code diff --git a/OpenSim.Framework/OpenSim.Framework.dll.build b/OpenSim.Framework/OpenSim.Framework.dll.build index a5ec58cb37..8647ef9948 100644 --- a/OpenSim.Framework/OpenSim.Framework.dll.build +++ b/OpenSim.Framework/OpenSim.Framework.dll.build @@ -18,6 +18,7 @@ + diff --git a/OpenSim.build b/OpenSim.build index 6195d2d3b1..f87556939b 100644 --- a/OpenSim.build +++ b/OpenSim.build @@ -58,6 +58,7 @@ + @@ -72,6 +73,7 @@ + @@ -102,6 +104,7 @@ + diff --git a/OpenSim.sln b/OpenSim.sln index 184ca2e62d..8e11d6d5a4 100644 --- a/OpenSim.sln +++ b/OpenSim.sln @@ -24,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.GridInterfaces.Loca EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.PhysXPlugin", "OpenSim.Physics/PhysXPlugin/OpenSim.Physics.PhysXPlugin.csproj", "{B771F391-0000-0000-0000-000000000000}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGrid.Config.GridConfigDb4o", "OpenGrid.Config/GridConfigDb4o/OpenGrid.Config.GridConfigDb4o.csproj", "{0E19DF8F-0000-0000-0000-000000000000}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim", "OpenSim/OpenSim.csproj", "{17ED9A0D-0000-0000-0000-000000000000}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageDb4o", "OpenSim.Storage/LocalStorageDb4o/OpenSim.Storage.LocalStorageDb4o.csproj", "{4D4E187D-0000-0000-0000-000000000000}" @@ -51,10 +53,12 @@ Global ({890187AE-0000-0000-0000-000000000000}).3 = ({7404933D-0000-0000-0000-000000000000}) ({890187AE-0000-0000-0000-000000000000}).4 = ({16759386-0000-0000-0000-000000000000}) ({53A65EE9-0000-0000-0000-000000000000}).3 = ({7404933D-0000-0000-0000-000000000000}) - ({53A65EE9-0000-0000-0000-000000000000}).4 = ({16759386-0000-0000-0000-000000000000}) + ({53A65EE9-0000-0000-0000-000000000000}).5 = ({16759386-0000-0000-0000-000000000000}) ({A86B5F7E-0000-0000-0000-000000000000}).4 = ({7404933D-0000-0000-0000-000000000000}) ({A86B5F7E-0000-0000-0000-000000000000}).5 = ({16759386-0000-0000-0000-000000000000}) ({B771F391-0000-0000-0000-000000000000}).3 = ({DA1FDCE5-0000-0000-0000-000000000000}) + ({0E19DF8F-0000-0000-0000-000000000000}).5 = ({7404933D-0000-0000-0000-000000000000}) + ({0E19DF8F-0000-0000-0000-000000000000}).6 = ({16759386-0000-0000-0000-000000000000}) ({17ED9A0D-0000-0000-0000-000000000000}).5 = ({7404933D-0000-0000-0000-000000000000}) ({17ED9A0D-0000-0000-0000-000000000000}).6 = ({16759386-0000-0000-0000-000000000000}) ({17ED9A0D-0000-0000-0000-000000000000}).7 = ({DA1FDCE5-0000-0000-0000-000000000000}) @@ -114,6 +118,10 @@ Global {B771F391-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {B771F391-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B771F391-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E19DF8F-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E19DF8F-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU + {0E19DF8F-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E19DF8F-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {17ED9A0D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU {17ED9A0D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {17ED9A0D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU diff --git a/prebuild.xml b/prebuild.xml index 455715984e..d1ae31eef0 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -138,6 +138,7 @@ + @@ -222,6 +223,32 @@ + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + +