diff options
Diffstat (limited to 'OpenSim/Region')
5 files changed, 113 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 74904e2..e26c145 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | |||
@@ -32,6 +32,7 @@ using System.IO.Compression; | |||
32 | using System.Net; | 32 | using System.Net; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Text; | 34 | using System.Text; |
35 | using System.Xml; | ||
35 | using log4net; | 36 | using log4net; |
36 | using OpenMetaverse; | 37 | using OpenMetaverse; |
37 | using OpenSim.Framework; | 38 | using OpenSim.Framework; |
@@ -134,6 +135,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
134 | else if (!m_merge && filePath.StartsWith(ArchiveConstants.SETTINGS_PATH)) | 135 | else if (!m_merge && filePath.StartsWith(ArchiveConstants.SETTINGS_PATH)) |
135 | { | 136 | { |
136 | LoadRegionSettings(filePath, data); | 137 | LoadRegionSettings(filePath, data); |
138 | } else if (filePath == ArchiveConstants.CONTROL_FILE_PATH) { | ||
139 | LoadArchiveMetadata(filePath, data); | ||
137 | } | 140 | } |
138 | } | 141 | } |
139 | 142 | ||
@@ -478,5 +481,60 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
478 | // return new BufferedStream(file, (int) response.ContentLength); | 481 | // return new BufferedStream(file, (int) response.ContentLength); |
479 | return new BufferedStream(file, 1000000); | 482 | return new BufferedStream(file, 1000000); |
480 | } | 483 | } |
484 | |||
485 | /// <summary> | ||
486 | /// Load oar file metadata | ||
487 | /// </summary> | ||
488 | /// <param name="terrainPath"></param> | ||
489 | /// <param name="data"></param> | ||
490 | /// <returns> | ||
491 | /// true if terrain was resolved successfully, false otherwise. | ||
492 | /// </returns> | ||
493 | private bool LoadArchiveMetadata(string terrainPath, byte[] data) | ||
494 | { | ||
495 | //Create the XmlNamespaceManager. | ||
496 | NameTable nt = new NameTable(); | ||
497 | XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt); | ||
498 | |||
499 | // Create the XmlParserContext. | ||
500 | XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None); | ||
501 | |||
502 | XmlTextReader xtr = new XmlTextReader(m_asciiEncoding.GetString(data), | ||
503 | XmlNodeType.Document, context); | ||
504 | |||
505 | |||
506 | RegionSettings currentRegionSettings = m_scene.RegionInfo.RegionSettings; | ||
507 | |||
508 | // Loaded metadata will empty if no information exists in the archive | ||
509 | currentRegionSettings.LoadedCreationDate = ""; | ||
510 | currentRegionSettings.LoadedCreationTime = ""; | ||
511 | currentRegionSettings.LoadedCreationID = ""; | ||
512 | |||
513 | while (xtr.Read()) | ||
514 | { | ||
515 | if (xtr.NodeType == XmlNodeType.Element) | ||
516 | { | ||
517 | if (xtr.Name.ToString()=="date") | ||
518 | { | ||
519 | currentRegionSettings.LoadedCreationDate = xtr.ReadElementContentAsString(); | ||
520 | } | ||
521 | else if (xtr.Name.ToString()=="time") | ||
522 | { | ||
523 | currentRegionSettings.LoadedCreationTime = xtr.ReadElementContentAsString(); | ||
524 | } | ||
525 | else if (xtr.Name.ToString()=="id") | ||
526 | { | ||
527 | currentRegionSettings.LoadedCreationID = xtr.ReadElementContentAsString(); | ||
528 | } | ||
529 | } | ||
530 | |||
531 | } | ||
532 | currentRegionSettings.Save(); | ||
533 | |||
534 | return true; | ||
535 | } | ||
536 | |||
537 | |||
538 | |||
481 | } | 539 | } |
482 | } | 540 | } |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs index 05b51ed..e9b24f4 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs | |||
@@ -154,8 +154,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
154 | xtw.WriteStartElement("archive"); | 154 | xtw.WriteStartElement("archive"); |
155 | xtw.WriteAttributeString("major_version", "0"); | 155 | xtw.WriteAttributeString("major_version", "0"); |
156 | xtw.WriteAttributeString("minor_version", "2"); | 156 | xtw.WriteAttributeString("minor_version", "2"); |
157 | |||
158 | xtw.WriteStartElement("creation_info"); | ||
159 | DateTime now = DateTime.UtcNow; | ||
160 | xtw.WriteElementString("date", now.ToLongDateString()); | ||
161 | xtw.WriteElementString("time", now.ToLongTimeString()); | ||
162 | xtw.WriteElementString("id", UUID.Random().ToString()); | ||
163 | xtw.WriteEndElement(); | ||
157 | xtw.WriteEndElement(); | 164 | xtw.WriteEndElement(); |
158 | 165 | ||
166 | |||
159 | xtw.Flush(); | 167 | xtw.Flush(); |
160 | xtw.Close(); | 168 | xtw.Close(); |
161 | 169 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index d759b77..9b65d8d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -1709,5 +1709,30 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1709 | 1709 | ||
1710 | return result; | 1710 | return result; |
1711 | } | 1711 | } |
1712 | |||
1713 | public string osLoadedCreationDate() | ||
1714 | { | ||
1715 | CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate"); | ||
1716 | m_host.AddScriptLPS(1); | ||
1717 | |||
1718 | return World.RegionInfo.RegionSettings.LoadedCreationDate; | ||
1719 | } | ||
1720 | |||
1721 | public string osLoadedCreationTime() | ||
1722 | { | ||
1723 | CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationTime"); | ||
1724 | m_host.AddScriptLPS(1); | ||
1725 | |||
1726 | return World.RegionInfo.RegionSettings.LoadedCreationTime; | ||
1727 | } | ||
1728 | |||
1729 | public string osLoadedCreationID() | ||
1730 | { | ||
1731 | CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationID"); | ||
1732 | m_host.AddScriptLPS(1); | ||
1733 | |||
1734 | return World.RegionInfo.RegionSettings.LoadedCreationID; | ||
1735 | } | ||
1736 | |||
1712 | } | 1737 | } |
1713 | } | 1738 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 548e11f..e337c6b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -142,5 +142,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
142 | LSL_String osFormatString(string str, LSL_List strings); | 142 | LSL_String osFormatString(string str, LSL_List strings); |
143 | LSL_List osMatchString(string src, string pattern, int start); | 143 | LSL_List osMatchString(string src, string pattern, int start); |
144 | 144 | ||
145 | // Information about data loaded into the region | ||
146 | string osLoadedCreationDate(); | ||
147 | string osLoadedCreationTime(); | ||
148 | string osLoadedCreationID(); | ||
149 | |||
145 | } | 150 | } |
146 | } | 151 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index a0d924d..5df2d6e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -371,6 +371,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
371 | return m_OSSL_Functions.osMatchString(src, pattern, start); | 371 | return m_OSSL_Functions.osMatchString(src, pattern, start); |
372 | } | 372 | } |
373 | 373 | ||
374 | // Information about data loaded into the region | ||
375 | public string osLoadedCreationDate() | ||
376 | { | ||
377 | return m_OSSL_Functions.osLoadedCreationDate(); | ||
378 | } | ||
379 | |||
380 | public string osLoadedCreationTime() | ||
381 | { | ||
382 | return m_OSSL_Functions.osLoadedCreationTime(); | ||
383 | } | ||
384 | |||
385 | public string osLoadedCreationID() | ||
386 | { | ||
387 | return m_OSSL_Functions.osLoadedCreationID(); | ||
388 | } | ||
389 | |||
390 | |||
374 | public OSSLPrim Prim; | 391 | public OSSLPrim Prim; |
375 | 392 | ||
376 | [Serializable] | 393 | [Serializable] |