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