* Rex merges, Grid Server
							parent
							
								
									f55bba8019
								
							
						
					
					
						commit
						79cb89f406
					
				|  | @ -1,170 +1,172 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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 Db4objects.Db4o; | ||||
| using OpenSim.Framework.Configuration; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenGrid.Config.GridConfigDb4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A grid configuration interface for returning the DB4o Config Provider | ||||
|     /// </summary> | ||||
|     public class Db40ConfigPlugin: IGridConfig | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Loads and returns a configuration objeect | ||||
|         /// </summary> | ||||
|         /// <returns>A grid configuration object</returns> | ||||
|         public GridConfig GetConfigObject() | ||||
|         { | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Loading Db40Config dll"); | ||||
|             return new DbGridConfig(); | ||||
|         } | ||||
|     } | ||||
| 	 | ||||
|     /// <summary> | ||||
|     /// A DB4o based Gridserver configuration object | ||||
|     /// </summary> | ||||
|     public class DbGridConfig : GridConfig | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The DB4o Database | ||||
|         /// </summary> | ||||
|         private IObjectContainer db;	 | ||||
| 		 | ||||
|         /// <summary> | ||||
|         /// User configuration for the Grid Config interfaces | ||||
|         /// </summary> | ||||
|         public void LoadDefaults() | ||||
|         { | ||||
|             MainLog.Instance.Notice("DbGridConfig.cs:LoadDefaults() - Please press enter to retain default or enter new settings"); | ||||
| 			 | ||||
|             // About the grid options | ||||
|             this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team"); | ||||
| 
 | ||||
|             // Asset Options | ||||
|             this.DefaultAssetServer = MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/"); | ||||
|             this.AssetSendKey = MainLog.Instance.CmdPrompt("Key to send to asset server","null"); | ||||
|             this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null"); | ||||
| 
 | ||||
|             // User Server Options | ||||
|             this.DefaultUserServer = MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString() + "/"); | ||||
|             this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server","null"); | ||||
|             this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null"); | ||||
| 
 | ||||
|             // Region Server Options | ||||
|             this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null"); | ||||
|             this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new configuration object | ||||
|         /// </summary> | ||||
|         public override void InitConfig() | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 // Perform Db4o initialisation | ||||
|                 db = Db4oFactory.OpenFile("opengrid.yap"); | ||||
| 
 | ||||
|                 // Locate the grid configuration object | ||||
|                 IObjectSet result = db.Get(typeof(DbGridConfig)); | ||||
|                 // Found? | ||||
|                 if (result.Count==1) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose("DBGRIDCONFIG", "Found a GridConfig object in the local database, loading"); | ||||
|                     foreach (DbGridConfig cfg in result) | ||||
|                     { | ||||
|                         // Import each setting into this class | ||||
|                         // Grid Settings | ||||
|                         this.GridOwner=cfg.GridOwner; | ||||
|                         // Asset Settings | ||||
|                         this.DefaultAssetServer=cfg.DefaultAssetServer; | ||||
|                         this.AssetSendKey=cfg.AssetSendKey; | ||||
|                         this.AssetRecvKey=cfg.AssetRecvKey; | ||||
|                         // User Settings | ||||
|                         this.DefaultUserServer=cfg.DefaultUserServer; | ||||
|                         this.UserSendKey=cfg.UserSendKey; | ||||
|                         this.UserRecvKey=cfg.UserRecvKey; | ||||
|                         // Region Settings | ||||
|                         this.SimSendKey=cfg.SimSendKey; | ||||
|                         this.SimRecvKey=cfg.SimRecvKey; | ||||
|                     } | ||||
|                     // Create a new configuration object from this class | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose("DBGRIDCONFIG", "Could not find object in database, loading precompiled defaults"); | ||||
| 
 | ||||
|                     // Load default settings into this class | ||||
|                     LoadDefaults(); | ||||
| 
 | ||||
|                     // Saves to the database file... | ||||
|                     MainLog.Instance.Verbose("DBGRIDCONFIG",  "Writing out default settings to local database"); | ||||
|                     db.Set(this); | ||||
| 
 | ||||
|                     // Closes file locks | ||||
|                     db.Close(); | ||||
|                 } | ||||
|             } | ||||
|             catch(Exception e) | ||||
|             { | ||||
|                 MainLog.Instance.Warn("DbGridConfig.cs:InitConfig() - Exception occured"); | ||||
|                 MainLog.Instance.Warn(e.ToString()); | ||||
|             } | ||||
| 			 | ||||
|             // Grid Settings | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Grid settings loaded:"); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Grid owner: " + this.GridOwner); | ||||
| 
 | ||||
|             // Asset Settings | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Default asset server: " + this.DefaultAssetServer); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to send to asset server: " + this.AssetSendKey); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to expect from asset server: " + this.AssetRecvKey); | ||||
| 
 | ||||
|             // User Settings | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Default user server: " + this.DefaultUserServer); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to send to user server: " + this.UserSendKey); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to expect from user server: " + this.UserRecvKey); | ||||
| 
 | ||||
|             // Region Settings | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to send to sims: " + this.SimSendKey); | ||||
|             MainLog.Instance.Verbose("DBGRIDCONFIG", "Key to expect from sims: " + this.SimRecvKey); | ||||
|         } | ||||
| 	 | ||||
|         /// <summary> | ||||
|         /// Closes down the database and releases filesystem locks | ||||
|         /// </summary> | ||||
|         public void Shutdown() | ||||
|         { | ||||
|             db.Close(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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 Db4objects.Db4o; | ||||
| using OpenSim.Framework.Configuration; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenGrid.Config.GridConfigDb4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A grid configuration interface for returning the DB4o Config Provider | ||||
|     /// </summary> | ||||
|     public class Db40ConfigPlugin: IGridConfig | ||||
|     { | ||||
|         private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads and returns a configuration objeect | ||||
|         /// </summary> | ||||
|         /// <returns>A grid configuration object</returns> | ||||
|         public GridConfig GetConfigObject() | ||||
|         { | ||||
|             m_log.Info("[DBGRIDCONFIG]: Loading Db40Config dll"); | ||||
|             return new DbGridConfig(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A DB4o based Gridserver configuration object | ||||
|     /// </summary> | ||||
|     public class DbGridConfig : GridConfig | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The DB4o Database | ||||
|         /// </summary> | ||||
|         private IObjectContainer db; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// User configuration for the Grid Config interfaces | ||||
|         /// </summary> | ||||
|         public void LoadDefaults() | ||||
|         { | ||||
|             MainConsole.Instance.Info("DbGridConfig.cs:LoadDefaults() - Please press enter to retain default or enter new settings"); | ||||
| 
 | ||||
|             // About the grid options | ||||
|             this.GridOwner = MainConsole.Instance.CmdPrompt("Grid owner", "OGS development team"); | ||||
| 
 | ||||
|             // Asset Options | ||||
|             this.DefaultAssetServer = MainConsole.Instance.CmdPrompt("Default asset server","http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/"); | ||||
|             this.AssetSendKey = MainConsole.Instance.CmdPrompt("Key to send to asset server","null"); | ||||
|             this.AssetRecvKey = MainConsole.Instance.CmdPrompt("Key to expect from asset server","null"); | ||||
| 
 | ||||
|             // User Server Options | ||||
|             this.DefaultUserServer = MainConsole.Instance.CmdPrompt("Default user server","http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString() + "/"); | ||||
|             this.UserSendKey = MainConsole.Instance.CmdPrompt("Key to send to user server","null"); | ||||
|             this.UserRecvKey = MainConsole.Instance.CmdPrompt("Key to expect from user server","null"); | ||||
| 
 | ||||
|             // Region Server Options | ||||
|             this.SimSendKey = MainConsole.Instance.CmdPrompt("Key to send to sims","null"); | ||||
|             this.SimRecvKey = MainConsole.Instance.CmdPrompt("Key to expect from sims","null"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new configuration object | ||||
|         /// </summary> | ||||
|         public override void InitConfig() | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 // Perform Db4o initialisation | ||||
|                 db = Db4oFactory.OpenFile("opengrid.yap"); | ||||
| 
 | ||||
|                 // Locate the grid configuration object | ||||
|                 IObjectSet result = db.Get(typeof(DbGridConfig)); | ||||
|                 // Found? | ||||
|                 if (result.Count==1) | ||||
|                 { | ||||
|                     m_log.Info("[DBGRIDCONFIG]: Found a GridConfig object in the local database, loading"); | ||||
|                     foreach (DbGridConfig cfg in result) | ||||
|                     { | ||||
|                         // Import each setting into this class | ||||
|                         // Grid Settings | ||||
|                         this.GridOwner=cfg.GridOwner; | ||||
|                         // Asset Settings | ||||
|                         this.DefaultAssetServer=cfg.DefaultAssetServer; | ||||
|                         this.AssetSendKey=cfg.AssetSendKey; | ||||
|                         this.AssetRecvKey=cfg.AssetRecvKey; | ||||
|                         // User Settings | ||||
|                         this.DefaultUserServer=cfg.DefaultUserServer; | ||||
|                         this.UserSendKey=cfg.UserSendKey; | ||||
|                         this.UserRecvKey=cfg.UserRecvKey; | ||||
|                         // Region Settings | ||||
|                         this.SimSendKey=cfg.SimSendKey; | ||||
|                         this.SimRecvKey=cfg.SimRecvKey; | ||||
|                     } | ||||
|                     // Create a new configuration object from this class | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_log.Info("[DBGRIDCONFIG]: Could not find object in database, loading precompiled defaults"); | ||||
| 
 | ||||
|                     // Load default settings into this class | ||||
|                     LoadDefaults(); | ||||
| 
 | ||||
|                     // Saves to the database file... | ||||
|                     m_log.Info("[DBGRIDCONFIG]: Writing out default settings to local database"); | ||||
|                     db.Set(this); | ||||
| 
 | ||||
|                     // Closes file locks | ||||
|                     db.Close(); | ||||
|                 } | ||||
|             } | ||||
|             catch(Exception e) | ||||
|             { | ||||
|                 m_log.Warn("DbGridConfig.cs:InitConfig() - Exception occured"); | ||||
|                 m_log.Warn(e.ToString()); | ||||
|             } | ||||
| 
 | ||||
|             // Grid Settings | ||||
|             m_log.Info("[DBGRIDCONFIG]: Grid settings loaded:"); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Grid owner: " + this.GridOwner); | ||||
| 
 | ||||
|             // Asset Settings | ||||
|             m_log.Info("[DBGRIDCONFIG]: Default asset server: " + this.DefaultAssetServer); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to send to asset server: " + this.AssetSendKey); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to expect from asset server: " + this.AssetRecvKey); | ||||
| 
 | ||||
|             // User Settings | ||||
|             m_log.Info("[DBGRIDCONFIG]: Default user server: " + this.DefaultUserServer); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to send to user server: " + this.UserSendKey); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to expect from user server: " + this.UserRecvKey); | ||||
| 
 | ||||
|             // Region Settings | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to send to sims: " + this.SimSendKey); | ||||
|             m_log.Info("[DBGRIDCONFIG]: Key to expect from sims: " + this.SimRecvKey); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes down the database and releases filesystem locks | ||||
|         /// </summary> | ||||
|         public void Shutdown() | ||||
|         { | ||||
|             db.Close(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,226 +1,220 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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.IO; | ||||
| using System.Timers; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Servers; | ||||
| 
 | ||||
| namespace OpenSim.Grid.GridServer | ||||
| { | ||||
|     /// <summary> | ||||
|     /// </summary> | ||||
|     public class OpenGrid_Main : conscmd_callback | ||||
|     { | ||||
|         public GridConfig Cfg; | ||||
| 
 | ||||
|         public static OpenGrid_Main thegrid; | ||||
| 
 | ||||
|         public static bool setuponly; | ||||
| 
 | ||||
|         //public LLUUID highestUUID; | ||||
| 
 | ||||
|         //        private SimProfileManager m_simProfileManager; | ||||
| 
 | ||||
|         private GridManager m_gridManager; | ||||
| 
 | ||||
|         private LogBase m_console; | ||||
| 
 | ||||
|         [STAThread] | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|             if (args.Length > 0) | ||||
|             { | ||||
|                 if (args[0] == "-setuponly") setuponly = true; | ||||
|             } | ||||
|             Console.WriteLine("Starting...\n"); | ||||
| 
 | ||||
|             thegrid = new OpenGrid_Main(); | ||||
|             thegrid.Startup(); | ||||
| 
 | ||||
|             thegrid.Work(); | ||||
|         } | ||||
| 
 | ||||
|         private void Work() | ||||
|         { | ||||
|             m_console.Notice("Enter help for a list of commands\n"); | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 m_console.MainLogPrompt(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private OpenGrid_Main() | ||||
|         { | ||||
|             if (!Directory.Exists(Util.logDir())) | ||||
|             { | ||||
|                 Directory.CreateDirectory(Util.logDir()); | ||||
|             } | ||||
|             m_console = | ||||
|                 new LogBase((Path.Combine(Util.logDir(), "opengrid-gridserver-console.log")), "OpenGrid", this, true); | ||||
|             MainLog.Instance = m_console; | ||||
|         } | ||||
| 
 | ||||
|         public void managercallback(string cmd) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "shutdown": | ||||
|                     RunCmd("shutdown", new string[0]); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public void Startup() | ||||
|         { | ||||
|             Cfg = new GridConfig("GRID SERVER", (Path.Combine(Util.configDir(), "GridServer_Config.xml"))); | ||||
|             //Yeah srsly, that's it. | ||||
|             if (setuponly) Environment.Exit(0); | ||||
| 
 | ||||
|             m_console.Verbose("GRID", "Connecting to Storage Server"); | ||||
|             m_gridManager = new GridManager(); | ||||
|             m_gridManager.AddPlugin(Cfg.DatabaseProvider); // Made of win | ||||
|             m_gridManager.config = Cfg; | ||||
| 
 | ||||
|             m_console.Verbose("GRID", "Starting HTTP process"); | ||||
|             BaseHttpServer httpServer = new BaseHttpServer(Cfg.HttpPort); | ||||
|             //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback); | ||||
| 
 | ||||
|             httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod); | ||||
|             httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod); | ||||
|             httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod); | ||||
| 
 | ||||
|             // Message Server ---> Grid Server | ||||
|             httpServer.AddXmlRPCHandler("register_messageserver", m_gridManager.XmlRPCRegisterMessageServer); | ||||
|             httpServer.AddXmlRPCHandler("deregister_messageserver", m_gridManager.XmlRPCDeRegisterMessageServer); | ||||
| 
 | ||||
| 
 | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod)); | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod)); | ||||
| 
 | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod)); | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod)); | ||||
| 
 | ||||
|             //httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod); | ||||
|             //httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod); | ||||
| 
 | ||||
|             httpServer.Start(); | ||||
| 
 | ||||
|             m_console.Verbose("GRID", "Starting sim status checker"); | ||||
| 
 | ||||
|             Timer simCheckTimer = new Timer(3600000*3); // 3 Hours between updates. | ||||
|             simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims); | ||||
|             simCheckTimer.Enabled = true; | ||||
|         } | ||||
| 
 | ||||
|         public void CheckSims(object sender, ElapsedEventArgs e) | ||||
|         { | ||||
|             /* | ||||
|             foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values) | ||||
|             { | ||||
|                 string SimResponse = ""; | ||||
|                 try | ||||
|                 { | ||||
|                     WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/"); | ||||
|                     CheckSim.Method = "GET"; | ||||
|                     CheckSim.ContentType = "text/plaintext"; | ||||
|                     CheckSim.ContentLength = 0; | ||||
| 
 | ||||
|                     StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII); | ||||
|                     stOut.Write(""); | ||||
|                     stOut.Close(); | ||||
| 
 | ||||
|                     StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream()); | ||||
|                     SimResponse = stIn.ReadToEnd(); | ||||
|                     stIn.Close(); | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                 } | ||||
|                  | ||||
|                 if (SimResponse == "OK") | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = true; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = false; | ||||
|                 } | ||||
|             } | ||||
|             */ | ||||
|         } | ||||
| 
 | ||||
|         public void RunCmd(string cmd, string[] cmdparams) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "help": | ||||
|                     m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)"); | ||||
|                     break; | ||||
| 
 | ||||
|                 case "shutdown": | ||||
|                     m_console.Close(); | ||||
|                     Environment.Exit(0); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Show(string ShowWhat) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         /*private void ConfigDB(IGenericConfig configData) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string attri = ""; | ||||
|                 attri = configData.GetAttribute("DataBaseProvider"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     GridDll = "OpenSim.Framework.Data.DB4o.dll"; | ||||
|                     configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     GridDll = attri; | ||||
|                 } | ||||
|                 configData.Commit(); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|         }*/ | ||||
|     } | ||||
| } | ||||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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.IO; | ||||
| using System.Timers; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Servers; | ||||
| 
 | ||||
| namespace OpenSim.Grid.GridServer | ||||
| { | ||||
|     /// <summary> | ||||
|     /// </summary> | ||||
|     public class OpenGrid_Main : BaseOpenSimServer, conscmd_callback | ||||
|     { | ||||
|         private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|         public GridConfig Cfg; | ||||
| 
 | ||||
|         public static OpenGrid_Main thegrid; | ||||
| 
 | ||||
|         public static bool setuponly; | ||||
| 
 | ||||
|         //public LLUUID highestUUID; | ||||
| 
 | ||||
|         //        private SimProfileManager m_simProfileManager; | ||||
| 
 | ||||
|         private GridManager m_gridManager; | ||||
| 
 | ||||
|         [STAThread] | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|             log4net.Config.XmlConfigurator.Configure(); | ||||
| 
 | ||||
|             if (args.Length > 0) | ||||
|             { | ||||
|                 if (args[0] == "-setuponly") setuponly = true; | ||||
|             } | ||||
|             m_log.Info("Starting...\n"); | ||||
| 
 | ||||
|             thegrid = new OpenGrid_Main(); | ||||
|             thegrid.Startup(); | ||||
| 
 | ||||
|             thegrid.Work(); | ||||
|         } | ||||
| 
 | ||||
|         private void Work() | ||||
|         { | ||||
|             m_console.Notice("Enter help for a list of commands\n"); | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 m_console.Prompt(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private OpenGrid_Main() | ||||
|         { | ||||
|             m_console = new ConsoleBase("OpenGrid", this); | ||||
|             MainConsole.Instance = m_console; | ||||
|         } | ||||
| 
 | ||||
|         public void managercallback(string cmd) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "shutdown": | ||||
|                     RunCmd("shutdown", new string[0]); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Startup() | ||||
|         { | ||||
|             Cfg = new GridConfig("GRID SERVER", (Path.Combine(Util.configDir(), "GridServer_Config.xml"))); | ||||
|             //Yeah srsly, that's it. | ||||
|             if (setuponly) Environment.Exit(0); | ||||
| 
 | ||||
|             m_log.Info("[GRID]: Connecting to Storage Server"); | ||||
|             m_gridManager = new GridManager(); | ||||
|             m_gridManager.AddPlugin(Cfg.DatabaseProvider); // Made of win | ||||
|             m_gridManager.config = Cfg; | ||||
| 
 | ||||
|             m_log.Info("[GRID]: Starting HTTP process"); | ||||
|             BaseHttpServer httpServer = new BaseHttpServer(Cfg.HttpPort); | ||||
|             //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback); | ||||
| 
 | ||||
|             httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod); | ||||
|             httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod); | ||||
|             httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod); | ||||
| 
 | ||||
|             // Message Server ---> Grid Server | ||||
|             httpServer.AddXmlRPCHandler("register_messageserver", m_gridManager.XmlRPCRegisterMessageServer); | ||||
|             httpServer.AddXmlRPCHandler("deregister_messageserver", m_gridManager.XmlRPCDeRegisterMessageServer); | ||||
| 
 | ||||
| 
 | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod)); | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod)); | ||||
| 
 | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod)); | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod)); | ||||
| 
 | ||||
|             //httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod); | ||||
|             //httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod); | ||||
| 
 | ||||
|             httpServer.Start(); | ||||
| 
 | ||||
|             m_log.Info("[GRID]: Starting sim status checker"); | ||||
| 
 | ||||
|             Timer simCheckTimer = new Timer(3600000*3); // 3 Hours between updates. | ||||
|             simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims); | ||||
|             simCheckTimer.Enabled = true; | ||||
|         } | ||||
| 
 | ||||
|         public void CheckSims(object sender, ElapsedEventArgs e) | ||||
|         { | ||||
|             /* | ||||
|             foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values) | ||||
|             { | ||||
|                 string SimResponse = String.Empty; | ||||
|                 try | ||||
|                 { | ||||
|                     WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/"); | ||||
|                     CheckSim.Method = "GET"; | ||||
|                     CheckSim.ContentType = "text/plaintext"; | ||||
|                     CheckSim.ContentLength = 0; | ||||
| 
 | ||||
|                     StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII); | ||||
|                     stOut.Write(String.Empty); | ||||
|                     stOut.Close(); | ||||
| 
 | ||||
|                     StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream()); | ||||
|                     SimResponse = stIn.ReadToEnd(); | ||||
|                     stIn.Close(); | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                 } | ||||
|                  | ||||
|                 if (SimResponse == "OK") | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = true; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = false; | ||||
|                 } | ||||
|             } | ||||
|             */ | ||||
|         } | ||||
| 
 | ||||
|         public override void RunCmd(string cmd, string[] cmdparams) | ||||
|         { | ||||
|             base.RunCmd(cmd, cmdparams); | ||||
|              | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "help": | ||||
|                     m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)"); | ||||
|                     break;                                         | ||||
| 
 | ||||
|                 case "shutdown": | ||||
|                     m_console.Close(); | ||||
|                     Environment.Exit(0); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /*private void ConfigDB(IGenericConfig configData) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string attri = String.Empty; | ||||
|                 attri = configData.GetAttribute("DataBaseProvider"); | ||||
|                 if (attri == String.Empty) | ||||
|                 { | ||||
|                     GridDll = "OpenSim.Framework.Data.DB4o.dll"; | ||||
|                     configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     GridDll = attri; | ||||
|                 } | ||||
|                 configData.Commit(); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|         }*/ | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,63 +1,63 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| 
 | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| 
 | ||||
| [assembly : AssemblyTitle("OGS-GridServer")] | ||||
| [assembly : AssemblyDescription("")] | ||||
| [assembly : AssemblyConfiguration("")] | ||||
| [assembly : AssemblyCompany("")] | ||||
| [assembly : AssemblyProduct("OGS-GridServer")] | ||||
| [assembly : AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly : AssemblyTrademark("")] | ||||
| [assembly : AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| 
 | ||||
| [assembly : ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| 
 | ||||
| [assembly : Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| 
 | ||||
| [assembly : AssemblyVersion("1.0.0.0")] | ||||
| [assembly : AssemblyFileVersion("1.0.0.0")] | ||||
| /* | ||||
| * Copyright (c) Contributors, http://opensimulator.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| 
 | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| 
 | ||||
| [assembly : AssemblyTitle("OGS-GridServer")] | ||||
| [assembly : AssemblyDescription("")] | ||||
| [assembly : AssemblyConfiguration("")] | ||||
| [assembly : AssemblyCompany("")] | ||||
| [assembly : AssemblyProduct("OGS-GridServer")] | ||||
| [assembly : AssemblyCopyright("Copyright © OpenSimulator.org Developers 2007-2008")] | ||||
| [assembly : AssemblyTrademark("")] | ||||
| [assembly : AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| 
 | ||||
| [assembly : ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| 
 | ||||
| [assembly : Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| 
 | ||||
| [assembly : AssemblyVersion("1.0.0.0")] | ||||
| [assembly : AssemblyFileVersion("1.0.0.0")] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Adam Frisby
						Adam Frisby