„Patch/0001-Add-os-commands-similar-to-experience-data-storage.patch“ löschen
parent
fe904589c8
commit
844267f07f
|
@ -1,273 +0,0 @@
|
|||
From 37f47683b3416d05c04d68e9898c19a95f3d4e8f Mon Sep 17 00:00:00 2001
|
||||
From: Christopher <git@clatza.dev>
|
||||
Date: Wed, 27 May 2020 15:28:23 +0200
|
||||
Subject: [PATCH] Add os commands similar to experience data storage Add
|
||||
similar os commands to llReadKeyValue llCreateKeyValue llDeleteKeyValue ==
|
||||
osGetDataValue osSetDataValue osDeleteDataValue and osCheckDataValue
|
||||
|
||||
---
|
||||
.../Shared/Api/Implementation/OSSL_Api.cs | 149 ++++++++++++++++++
|
||||
.../Shared/Api/Interface/IOSSL_Api.cs | 10 ++
|
||||
.../Shared/Api/Runtime/OSSL_Stub.cs | 40 +++++
|
||||
bin/config-include/osslDefaultEnable.ini | 4 +
|
||||
4 files changed, 203 insertions(+)
|
||||
|
||||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
|
||||
index 8289dec2e7..197fde3a01 100644
|
||||
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
|
||||
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
|
||||
@@ -42,8 +42,10 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
+using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Remoting.Lifetime;
|
||||
+using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
@@ -948,6 +950,153 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
return false;
|
||||
}
|
||||
|
||||
+ public string osGetDataValue(string key)
|
||||
+ {
|
||||
+ return osGetDataValue(key, false);
|
||||
+ }
|
||||
+
|
||||
+ public string osGetDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ CheckThreatLevel(ThreatLevel.Moderate, "osGetDataValue");
|
||||
+
|
||||
+ string dataValueDirectory = m_ScriptEngine.ConfigSource.Configs["XEngine"].GetString("DataValueStorageDirectory", "./ScriptDataValue");
|
||||
+
|
||||
+ String groupFolderName = m_host.GroupID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if(personal)
|
||||
+ groupFolderName = m_host.OwnerID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory))
|
||||
+ Directory.CreateDirectory(dataValueDirectory);
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory + "/" + groupFolderName))
|
||||
+ Directory.CreateDirectory(dataValueDirectory + "/" + groupFolderName);
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ string keyMD = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(ASCIIEncoding.ASCII.GetBytes(key.Trim().ToUpper()))).Replace("-", "");
|
||||
+ FileInfo file = new FileInfo(dataValueDirectory + "/" + groupFolderName + "/" + keyMD + ".txt");
|
||||
+
|
||||
+ if (file.Exists)
|
||||
+ return File.ReadAllText(file.FullName);
|
||||
+ }
|
||||
+ catch (Exception _error)
|
||||
+ {
|
||||
+ Console.WriteLine(_error.Message);
|
||||
+ }
|
||||
+
|
||||
+ return "";
|
||||
+ }
|
||||
+
|
||||
+ public void osSetDataValue(string key, string value)
|
||||
+ {
|
||||
+ osSetDataValue(key, value, false);
|
||||
+ }
|
||||
+
|
||||
+ public void osSetDataValue(string key, string value, bool personal)
|
||||
+ {
|
||||
+ CheckThreatLevel(ThreatLevel.Moderate, "osSetDataValue");
|
||||
+
|
||||
+ string dataValueDirectory = m_ScriptEngine.ConfigSource.Configs["XEngine"].GetString("DataValueStorageDirectory", "./ScriptDataValue");
|
||||
+
|
||||
+ String groupFolderName = m_host.GroupID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (personal)
|
||||
+ groupFolderName = m_host.OwnerID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory))
|
||||
+ Directory.CreateDirectory(dataValueDirectory);
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory + "/" + groupFolderName))
|
||||
+ Directory.CreateDirectory(dataValueDirectory + "/" + groupFolderName);
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ string keyMD = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(ASCIIEncoding.ASCII.GetBytes(key.Trim().ToUpper()))).Replace("-", "");
|
||||
+ FileInfo file = new FileInfo(dataValueDirectory + "/" + groupFolderName + "/" + keyMD + ".txt");
|
||||
+
|
||||
+ File.WriteAllText(file.FullName, value);
|
||||
+ }
|
||||
+ catch (Exception _error)
|
||||
+ {
|
||||
+ Console.WriteLine(_error.Message);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public void osDeleteDataValue(string key)
|
||||
+ {
|
||||
+ osDeleteDataValue(key, false);
|
||||
+ }
|
||||
+
|
||||
+ public void osDeleteDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ CheckThreatLevel(ThreatLevel.Moderate, "osDeleteDataValue");
|
||||
+
|
||||
+ string dataValueDirectory = m_ScriptEngine.ConfigSource.Configs["XEngine"].GetString("DataValueStorageDirectory", "./ScriptDataValue");
|
||||
+
|
||||
+ String groupFolderName = m_host.GroupID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (personal)
|
||||
+ groupFolderName = m_host.OwnerID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory))
|
||||
+ Directory.CreateDirectory(dataValueDirectory);
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory + "/" + groupFolderName))
|
||||
+ Directory.CreateDirectory(dataValueDirectory + "/" + groupFolderName);
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ string keyMD = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(ASCIIEncoding.ASCII.GetBytes(key.Trim().ToUpper()))).Replace("-", "");
|
||||
+ FileInfo file = new FileInfo(dataValueDirectory + "/" + groupFolderName + "/" + keyMD + ".txt");
|
||||
+
|
||||
+ if (file.Exists)
|
||||
+ file.Delete();
|
||||
+ }
|
||||
+ catch (Exception _error)
|
||||
+ {
|
||||
+ Console.WriteLine(_error.Message);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public bool osCheckDataValue(string key)
|
||||
+ {
|
||||
+ return osCheckDataValue(key, false);
|
||||
+ }
|
||||
+
|
||||
+ public bool osCheckDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ CheckThreatLevel(ThreatLevel.Moderate, "osCheckDataValue");
|
||||
+
|
||||
+ string dataValueDirectory = m_ScriptEngine.ConfigSource.Configs["XEngine"].GetString("DataValueStorageDirectory", "./ScriptDataValue");
|
||||
+
|
||||
+ String groupFolderName = m_host.GroupID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (personal)
|
||||
+ groupFolderName = m_host.OwnerID.ToString().Trim().ToUpper().Replace("-", "");
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory))
|
||||
+ Directory.CreateDirectory(dataValueDirectory);
|
||||
+
|
||||
+ if (!Directory.Exists(dataValueDirectory + "/" + groupFolderName))
|
||||
+ Directory.CreateDirectory(dataValueDirectory + "/" + groupFolderName);
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ string keyMD = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(ASCIIEncoding.ASCII.GetBytes(key.Trim().ToUpper()))).Replace("-", "");
|
||||
+ FileInfo file = new FileInfo(dataValueDirectory + "/" + groupFolderName + "/" + keyMD + ".txt");
|
||||
+
|
||||
+ if (file.Exists)
|
||||
+ return true;
|
||||
+ }
|
||||
+ catch (Exception _error)
|
||||
+ {
|
||||
+ Console.WriteLine(_error.Message);
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
public void osSetPrimFloatOnWater(int floatYN)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.VeryLow, "osSetPrimFloatOnWater");
|
||||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
|
||||
index e9aeda5f28..93dbc64366 100644
|
||||
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
|
||||
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
|
||||
@@ -142,6 +142,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
void osRegionNotice(string msg);
|
||||
void osRegionNotice(LSL_Key agentID, string msg);
|
||||
bool osConsoleCommand(string Command);
|
||||
+
|
||||
+ string osGetDataValue(string key);
|
||||
+ string osGetDataValue(string key, bool persoanl);
|
||||
+ void osSetDataValue(string key, string value);
|
||||
+ void osSetDataValue(string key, string value, bool personal);
|
||||
+ void osDeleteDataValue(string key);
|
||||
+ void osDeleteDataValue(string key, bool personal);
|
||||
+ bool osCheckDataValue(string key);
|
||||
+ bool osCheckDataValue(string key, bool personal);
|
||||
+
|
||||
void osSetParcelMediaURL(string url);
|
||||
void osSetPrimFloatOnWater(int floatYN);
|
||||
void osSetParcelSIPAddress(string SIPAddress);
|
||||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
|
||||
index 4bae45e392..55e911c6ae 100644
|
||||
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
|
||||
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
|
||||
@@ -235,6 +235,46 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
return m_OSSL_Functions.osConsoleCommand(Command);
|
||||
}
|
||||
|
||||
+ public string osGetDataValue(string key)
|
||||
+ {
|
||||
+ return m_OSSL_Functions.osGetDataValue(key);
|
||||
+ }
|
||||
+
|
||||
+ public string osGetDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ return m_OSSL_Functions.osGetDataValue(key, personal);
|
||||
+ }
|
||||
+
|
||||
+ public void osSetDataValue(string key, string value)
|
||||
+ {
|
||||
+ m_OSSL_Functions.osSetDataValue(key, value);
|
||||
+ }
|
||||
+
|
||||
+ public void osSetDataValue(string key, string value, bool personal)
|
||||
+ {
|
||||
+ m_OSSL_Functions.osSetDataValue(key, value, personal);
|
||||
+ }
|
||||
+
|
||||
+ public void osDeleteDataValue(string key)
|
||||
+ {
|
||||
+ m_OSSL_Functions.osDeleteDataValue(key);
|
||||
+ }
|
||||
+
|
||||
+ public void osDeleteDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ m_OSSL_Functions.osDeleteDataValue(key, personal);
|
||||
+ }
|
||||
+
|
||||
+ public bool osCheckDataValue(string key)
|
||||
+ {
|
||||
+ return m_OSSL_Functions.osCheckDataValue(key);
|
||||
+ }
|
||||
+
|
||||
+ public bool osCheckDataValue(string key, bool personal)
|
||||
+ {
|
||||
+ return m_OSSL_Functions.osCheckDataValue(key, personal);
|
||||
+ }
|
||||
+
|
||||
public void osSetParcelMediaURL(string url)
|
||||
{
|
||||
m_OSSL_Functions.osSetParcelMediaURL(url);
|
||||
diff --git a/bin/config-include/osslDefaultEnable.ini b/bin/config-include/osslDefaultEnable.ini
|
||||
index e66577dbcf..72885d9d30 100644
|
||||
--- a/bin/config-include/osslDefaultEnable.ini
|
||||
+++ b/bin/config-include/osslDefaultEnable.ini
|
||||
@@ -146,6 +146,10 @@
|
||||
Allow_osSetOwnerSpeed = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osRequestURL = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osRequestSecureURL = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
+ Allow_osGetDataValue = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
+ Allow_osSetDataValue = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
+ Allow_osDeleteDataValue = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
+ Allow_osCheckDataValue = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
|
||||
; ThreatLevel High
|
||||
Allow_osCauseDamage = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
--
|
||||
2.25.1.windows.1
|
||||
|
Loading…
Reference in New Issue