From 8cb5ec5fdd21ac3ace385d67145dad8d462ebcb6 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sat, 31 May 2008 20:35:12 +0000 Subject: * Make version information common to all servers * Now all servers respond to the "show version" command on the console --- OpenSim/Framework/Servers/BaseOpenSimServer.cs | 82 ++++++++++++++++++++++++++ OpenSim/Framework/Servers/VersionInfo.cs | 37 ++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 OpenSim/Framework/Servers/VersionInfo.cs (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index 60c6883..0205e38 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs @@ -26,6 +26,7 @@ */ using System; +using System.IO; using OpenSim.Framework.Console; using OpenSim.Framework.Statistics; @@ -37,7 +38,16 @@ namespace OpenSim.Framework.Servers public abstract class BaseOpenSimServer { protected ConsoleBase m_console; + + /// + /// Time at which this server was started + /// protected DateTime m_startuptime; + + /// + /// Server version information. Usually VersionInfo + information about svn revision, operating system, etc. + /// + protected string m_version; protected BaseHttpServer m_httpServer; public BaseHttpServer HttpServer @@ -53,6 +63,11 @@ namespace OpenSim.Framework.Servers public BaseOpenSimServer() { m_startuptime = DateTime.Now; + + m_version = VersionInfo.Version; + + // FIXME: This should probably occur in a startup method common for all the servers. + EnhanceVersionInformation(); } /// @@ -64,6 +79,7 @@ namespace OpenSim.Framework.Servers { m_console.Close(); } + Environment.Exit(0); } @@ -120,6 +136,10 @@ namespace OpenSim.Framework.Servers Notice("Server has been running since " + m_startuptime.DayOfWeek + ", " + m_startuptime.ToString()); Notice("That is an elapsed time of " + (DateTime.Now - m_startuptime).ToString()); break; + + case "version": + m_console.Notice("This is " + m_version); + break; } } @@ -136,5 +156,67 @@ namespace OpenSim.Framework.Servers } } + /// + /// Enhance the version string with extra information if it's available. + /// + protected void EnhanceVersionInformation() + { + string buildVersion = string.Empty; + + // Add subversion revision information if available + // FIXME: Making an assumption about the directory we're currently in - we do this all over the place + // elsewhere as well + string svnFileName = "../.svn/entries"; + string inputLine; + int strcmp; + + if (File.Exists(svnFileName)) + { + StreamReader EntriesFile = File.OpenText(svnFileName); + inputLine = EntriesFile.ReadLine(); + while (inputLine != null) + { + // using the dir svn revision at the top of entries file + strcmp = String.Compare(inputLine, "dir"); + if (strcmp == 0) + { + buildVersion = EntriesFile.ReadLine(); + break; + } + else + { + inputLine = EntriesFile.ReadLine(); + } + } + EntriesFile.Close(); + } + + if (!string.IsNullOrEmpty(buildVersion)) + { + m_version += ", SVN build r" + buildVersion; + } + else + { + m_version += ", SVN build revision not available"; + } + + // Add operating system information if available + string OSString = ""; + + if (System.Environment.OSVersion.Platform != PlatformID.Unix) + { + OSString = System.Environment.OSVersion.ToString(); + } + else + { + OSString = Util.ReadEtcIssue(); + } + if (OSString.Length > 45) + { + OSString = OSString.Substring(0, 45); + } + + m_version += ", OS " + OSString; + } } } diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs new file mode 100644 index 0000000..5bd78e7 --- /dev/null +++ b/OpenSim/Framework/Servers/VersionInfo.cs @@ -0,0 +1,37 @@ +/* + * 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. + */ + +namespace OpenSim +{ + /// + /// This is the OpenSim version string. Change this if you are releasing a new OpenSim version. + /// + public class VersionInfo + { + public readonly static string Version = "OpenSimulator trunk (post 0.5.7)"; + } +} -- cgit v1.1