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 ++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'OpenSim/Framework/Servers/BaseOpenSimServer.cs') 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; + } } } -- cgit v1.1