aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs58
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs25
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs17
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;
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
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]