mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
* Make version information common to all servers
* Now all servers respond to the "show version" command on the console
This commit is contained in:
@@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Time at which this server was started
|
||||
/// </summary>
|
||||
protected DateTime m_startuptime;
|
||||
|
||||
/// <summary>
|
||||
/// Server version information. Usually VersionInfo + information about svn revision, operating system, etc.
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enhance the version string with extra information if it's available.
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
OpenSim/Framework/Servers/VersionInfo.cs
Normal file
37
OpenSim/Framework/Servers/VersionInfo.cs
Normal file
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// This is the OpenSim version string. Change this if you are releasing a new OpenSim version.
|
||||
/// </summary>
|
||||
public class VersionInfo
|
||||
{
|
||||
public readonly static string Version = "OpenSimulator trunk (post 0.5.7)";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user