aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs58
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs8
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;
32using System.Net; 32using System.Net;
33using System.Reflection; 33using System.Reflection;
34using System.Text; 34using System.Text;
35using System.Xml;
35using log4net; 36using log4net;
36using OpenMetaverse; 37using OpenMetaverse;
37using OpenSim.Framework; 38using 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