diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | 58 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs | 8 |
2 files changed, 66 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 | ||