Reintroduces the discovery mechanism to use llRequestSimulatorData("", 128)

Causes the dataserver event to return "OpenSim" when running on OpenSim.
Requires ThreatLevel to be "High" or above to function.
0.6.0-stable
Melanie Thielker 2008-10-03 06:15:23 +00:00
parent 1cf0798863
commit cffd73c59f
7 changed files with 45 additions and 15 deletions

View File

@ -372,5 +372,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
controllingClient.SendScriptRunningReply(objectID, itemID,
id.Running);
}
public IScriptApi GetApi(UUID itemID, string name)
{
return m_ScriptManager.GetApi(itemID, name);
}
}
}

View File

@ -619,7 +619,24 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
InstanceData id = GetScript(localID, itemID);
if (id == null)
return 0;
return id.StartParam;
}
public IScriptApi GetApi(UUID itemID, string name)
{
uint localID = GetLocalID(itemID);
InstanceData id = GetScript(localID, itemID);
if (id == null)
return null;
if (id.Apis.ContainsKey(name))
return id.Apis[name];
return null;
}
}
}

View File

@ -66,5 +66,6 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
IConfig Config { get; }
string ScriptEngineName { get; }
ILog Log { get; }
IScriptApi GetApi(UUID itemID, string name);
}
}

View File

@ -46,7 +46,5 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
/// Queue an event for execution
/// </summary>
IScriptWorkItem QueueEventHandler(object parms);
IScriptApi GetApi(UUID itemID, string name);
}
}

View File

@ -7182,6 +7182,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public LSL_String llRequestSimulatorData(string simulator, int data)
{
IOSSL_Api ossl = (IOSSL_Api)m_ScriptEngine.GetApi(m_itemID, "OSSL");
try
{
m_host.AddScriptLPS(1);
@ -7223,6 +7225,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else
reply = "UNKNOWN";
break;
case 128:
if (ossl != null)
ossl.CheckThreatLevel(ThreatLevel.High, "llRequestSimulatorData");
reply = "OpenSim";
break;
default:
// ScriptSleep(1000);
return UUID.Zero.ToString(); // Raise no event

View File

@ -87,18 +87,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// modification of user data, or allows the compromise of
// sensitive data by design.
public enum ThreatLevel
{
None = 0,
Nuisance = 1,
VeryLow = 2,
Low = 3,
Moderate = 4,
High = 5,
VeryHigh = 6,
Severe = 7
};
[Serializable]
public class OSSL_Api : MarshalByRefObject, IOSSL_Api, IScriptApi
{
@ -180,7 +168,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
throw new Exception("OSSL Runtime Error: " + msg);
}
protected void CheckThreatLevel(ThreatLevel level, string function)
public void CheckThreatLevel(ThreatLevel level, string function)
{
if (!m_OSFunctionsEnabled)
OSSLError(function+": permission denied"); // throws

View File

@ -28,8 +28,22 @@ using System.Collections;
using OpenSim.Region.ScriptEngine.Interfaces;
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
{
public enum ThreatLevel
{
None = 0,
Nuisance = 1,
VeryLow = 2,
Low = 3,
Moderate = 4,
High = 5,
VeryHigh = 6,
Severe = 7
};
public interface IOSSL_Api
{
void CheckThreatLevel(ThreatLevel level, string function);
//OpenSim functions
string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer);
string osSetDynamicTextureURLBlend(string dynamicID, string contentType, string url, string extraParams,