diff options
author | Justin Clarke Casey | 2008-11-11 17:02:46 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-11-11 17:02:46 +0000 |
commit | 97816f8c901bf56e3b29bdbd5f8e320de352f45f (patch) | |
tree | 30fdd6962a11fda115da1b2cb8340a4d64b763b1 | |
parent | Mantis#2604. Thank you kindly, Diva for a patch that: (diff) | |
download | opensim-SC-97816f8c901bf56e3b29bdbd5f8e320de352f45f.zip opensim-SC-97816f8c901bf56e3b29bdbd5f8e320de352f45f.tar.gz opensim-SC-97816f8c901bf56e3b29bdbd5f8e320de352f45f.tar.bz2 opensim-SC-97816f8c901bf56e3b29bdbd5f8e320de352f45f.tar.xz |
* Implement basic region filtering as described in https://lists.berlios.de/pipermail/opensim-dev/2008-November/003468.html
* This is done by sending a 'major interface version' number on sim registration. Developers must increment this every time they make a change that would make the previous
OpenSim revision failure incompatible with the new one (non-fatal incompatibilities are fine).
* This number resides in OpenSim.Framework.Servers.VersionInfo.MajorInterfaceVersion
* This allows the grid service to stop older, incompatible regions from connecting
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Servers/BaseOpenSimServer.cs | 19 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/VersionInfo.cs | 22 | ||||
-rw-r--r-- | OpenSim/Framework/Util.cs | 27 | ||||
-rw-r--r-- | OpenSim/Grid/GridServer/GridManager.cs | 40 | ||||
-rw-r--r-- | OpenSim/Grid/GridServer/GridServerBase.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 1 |
7 files changed, 83 insertions, 29 deletions
diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index 36f8d2e..aa93f6e 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs | |||
@@ -428,25 +428,6 @@ namespace OpenSim.Framework.Servers | |||
428 | } | 428 | } |
429 | 429 | ||
430 | m_version += string.IsNullOrEmpty(buildVersion) ? " " : ("." + buildVersion + " ").Substring(0, 6); | 430 | m_version += string.IsNullOrEmpty(buildVersion) ? " " : ("." + buildVersion + " ").Substring(0, 6); |
431 | |||
432 | // Add operating system information if available | ||
433 | string OSString = ""; | ||
434 | |||
435 | if (System.Environment.OSVersion.Platform != PlatformID.Unix) | ||
436 | { | ||
437 | OSString = System.Environment.OSVersion.ToString(); | ||
438 | } | ||
439 | else | ||
440 | { | ||
441 | OSString = Util.ReadEtcIssue(); | ||
442 | } | ||
443 | |||
444 | if (OSString.Length > 45) | ||
445 | { | ||
446 | OSString = OSString.Substring(0, 45); | ||
447 | } | ||
448 | |||
449 | m_version += " (OS " + OSString + ")"; | ||
450 | } | 431 | } |
451 | } | 432 | } |
452 | } | 433 | } |
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index 8f84859..c6a43ec 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs | |||
@@ -27,11 +27,27 @@ | |||
27 | 27 | ||
28 | namespace OpenSim | 28 | namespace OpenSim |
29 | { | 29 | { |
30 | /// <summary> | ||
31 | /// This is the OpenSim version string. Change this if you are releasing a new OpenSim version. | ||
32 | /// </summary> | ||
33 | public class VersionInfo | 30 | public class VersionInfo |
34 | { | 31 | { |
32 | /// <value> | ||
33 | /// This is the OpenSim version string. Change this if you are releasing a new OpenSim version. | ||
34 | /// </value> | ||
35 | public readonly static string Version = "OpenSimulator Server 0.6.0"; // stay with 27 chars (used in regioninfo) | 35 | public readonly static string Version = "OpenSimulator Server 0.6.0"; // stay with 27 chars (used in regioninfo) |
36 | |||
37 | /// <value> | ||
38 | /// This is the external interface version. It is separate from the OpenSimulator project version. | ||
39 | /// | ||
40 | /// This version number should be | ||
41 | /// increased by 1 every time a code change makes the previous OpenSimulator revision incompatible | ||
42 | /// with the new revision. This will usually be due to interregion or grid facing interface changes. | ||
43 | /// | ||
44 | /// Changes which are compatible with an older revision (e.g. older revisions experience degraded functionality | ||
45 | /// but not outright failure) do not need a version number increment. | ||
46 | /// | ||
47 | /// Having this version number allows the grid service to reject connections from regions running a version | ||
48 | /// of the code that is too old. | ||
49 | /// | ||
50 | /// </value> | ||
51 | public readonly static int MajorInterfaceVersion = 0; | ||
36 | } | 52 | } |
37 | } | 53 | } |
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 7caa414..f72797f 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -799,6 +799,33 @@ namespace OpenSim.Framework | |||
799 | x += rx; | 799 | x += rx; |
800 | y += ry; | 800 | y += ry; |
801 | } | 801 | } |
802 | |||
803 | /// <summary> | ||
804 | /// Get operating system information if available. Returns only the first 45 characters of information | ||
805 | /// </summary> | ||
806 | /// <returns> | ||
807 | /// Operating system information. Returns an empty string if none was available. | ||
808 | /// </returns> | ||
809 | public static string GetOperatingSystemInformation() | ||
810 | { | ||
811 | string os = String.Empty; | ||
812 | |||
813 | if (System.Environment.OSVersion.Platform != PlatformID.Unix) | ||
814 | { | ||
815 | os = System.Environment.OSVersion.ToString(); | ||
816 | } | ||
817 | else | ||
818 | { | ||
819 | os = ReadEtcIssue(); | ||
820 | } | ||
821 | |||
822 | if (os.Length > 45) | ||
823 | { | ||
824 | os = os.Substring(0, 45); | ||
825 | } | ||
826 | |||
827 | return os; | ||
828 | } | ||
802 | 829 | ||
803 | /// <summary> | 830 | /// <summary> |
804 | /// Is the given string a UUID? | 831 | /// Is the given string a UUID? |
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index 0fc2147..32b7554 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs | |||
@@ -53,6 +53,22 @@ namespace OpenSim.Grid.GridServer | |||
53 | private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>(); | 53 | private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>(); |
54 | 54 | ||
55 | public GridConfig Config; | 55 | public GridConfig Config; |
56 | |||
57 | /// <value> | ||
58 | /// Used to notify old regions as to which OpenSim version to upgrade to | ||
59 | /// </value> | ||
60 | private string m_opensimVersion; | ||
61 | |||
62 | /// <summary> | ||
63 | /// Constructor | ||
64 | /// </summary> | ||
65 | /// <param name="opensimVersion"> | ||
66 | /// Used to notify old regions as to which OpenSim version to upgrade to | ||
67 | /// </param> | ||
68 | public GridManager(string opensimVersion) | ||
69 | { | ||
70 | m_opensimVersion = opensimVersion; | ||
71 | } | ||
56 | 72 | ||
57 | /// <summary> | 73 | /// <summary> |
58 | /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded. | 74 | /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded. |
@@ -360,7 +376,7 @@ namespace OpenSim.Grid.GridServer | |||
360 | 376 | ||
361 | if (!requestData.ContainsKey("UUID") || !UUID.TryParse((string)requestData["UUID"], out uuid)) | 377 | if (!requestData.ContainsKey("UUID") || !UUID.TryParse((string)requestData["UUID"], out uuid)) |
362 | { | 378 | { |
363 | m_log.Warn("[LOGIN PRELUDE]: Region connected without a UUID, sending back error response."); | 379 | m_log.Debug("[LOGIN PRELUDE]: Region connected without a UUID, sending back error response."); |
364 | return ErrorResponse("No UUID passed to grid server - unable to connect you"); | 380 | return ErrorResponse("No UUID passed to grid server - unable to connect you"); |
365 | } | 381 | } |
366 | 382 | ||
@@ -370,21 +386,33 @@ namespace OpenSim.Grid.GridServer | |||
370 | } | 386 | } |
371 | catch (FormatException e) | 387 | catch (FormatException e) |
372 | { | 388 | { |
373 | m_log.Warn("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); | 389 | m_log.Debug("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); |
374 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); | 390 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); |
375 | } | 391 | } |
392 | |||
393 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); | ||
376 | 394 | ||
377 | if (!Config.AllowRegionRegistration) | 395 | if (!Config.AllowRegionRegistration) |
378 | { | 396 | { |
379 | m_log.InfoFormat( | 397 | m_log.DebugFormat( |
380 | "[LOGIN END]: Disabled region registration blocked login request from simulator: {0}", | 398 | "[LOGIN END]: Disabled region registration blocked login request from simulator: {0}", |
381 | sim.regionName); | 399 | sim.regionName); |
382 | 400 | ||
383 | return ErrorResponse("The grid is currently not accepting region registrations."); | 401 | return ErrorResponse("This grid is currently not accepting region registrations."); |
402 | } | ||
403 | |||
404 | int majorInterfaceVersion = 0; | ||
405 | if (requestData.ContainsKey("major_interface_version")) | ||
406 | int.TryParse((string)requestData["major_interface_version"], out majorInterfaceVersion); | ||
407 | |||
408 | if (majorInterfaceVersion != VersionInfo.MajorInterfaceVersion) | ||
409 | { | ||
410 | return ErrorResponse( | ||
411 | String.Format( | ||
412 | "Your region is the wrong version to connect to this grid. Try changing to version {0} (interface version {1})", | ||
413 | m_opensimVersion, VersionInfo.MajorInterfaceVersion)); | ||
384 | } | 414 | } |
385 | 415 | ||
386 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); | ||
387 | |||
388 | existingSim = GetRegion(sim.regionHandle); | 416 | existingSim = GetRegion(sim.regionHandle); |
389 | 417 | ||
390 | if (existingSim == null || existingSim.UUID == sim.UUID || sim.UUID != sim.originUUID) | 418 | if (existingSim == null || existingSim.UUID == sim.UUID || sim.UUID != sim.originUUID) |
diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index 36ea238..9652765 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs | |||
@@ -153,7 +153,7 @@ namespace OpenSim.Grid.GridServer | |||
153 | protected virtual void SetupGridManager() | 153 | protected virtual void SetupGridManager() |
154 | { | 154 | { |
155 | m_log.Info("[DATA]: Connecting to Storage Server"); | 155 | m_log.Info("[DATA]: Connecting to Storage Server"); |
156 | m_gridManager = new GridManager(); | 156 | m_gridManager = new GridManager(m_version); |
157 | m_gridManager.AddPlugin(m_config.DatabaseProvider, m_config.DatabaseConnect); | 157 | m_gridManager.AddPlugin(m_config.DatabaseProvider, m_config.DatabaseConnect); |
158 | m_gridManager.Config = m_config; | 158 | m_gridManager.Config = m_config; |
159 | } | 159 | } |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index a4fa3bb..0c13120 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -130,6 +130,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
130 | GridParams["originUUID"] = regionInfo.originRegionID.ToString(); | 130 | GridParams["originUUID"] = regionInfo.originRegionID.ToString(); |
131 | GridParams["server_uri"] = regionInfo.ServerURI; | 131 | GridParams["server_uri"] = regionInfo.ServerURI; |
132 | GridParams["region_secret"] = regionInfo.regionSecret; | 132 | GridParams["region_secret"] = regionInfo.regionSecret; |
133 | GridParams["major_interface_version"] = VersionInfo.MajorInterfaceVersion.ToString(); | ||
133 | 134 | ||
134 | if (regionInfo.MasterAvatarAssignedUUID != UUID.Zero) | 135 | if (regionInfo.MasterAvatarAssignedUUID != UUID.Zero) |
135 | GridParams["master_avatar_uuid"] = regionInfo.MasterAvatarAssignedUUID.ToString(); | 136 | GridParams["master_avatar_uuid"] = regionInfo.MasterAvatarAssignedUUID.ToString(); |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 68fac59..fd4eb58 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -319,6 +319,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
319 | m_statsReporter.SetObjectCapacity(objectCapacity); | 319 | m_statsReporter.SetObjectCapacity(objectCapacity); |
320 | 320 | ||
321 | m_simulatorVersion = simulatorVersion | 321 | m_simulatorVersion = simulatorVersion |
322 | + " (OS " + Util.GetOperatingSystemInformation() + ")" | ||
322 | + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString() | 323 | + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString() |
323 | + " PhysPrim:" + m_physicalPrim.ToString(); | 324 | + " PhysPrim:" + m_physicalPrim.ToString(); |
324 | 325 | ||