Add configurable path to script engine assemblies
Adding ability to place script engine assemblies outside the codebase directories. Uses new [XEngine] option: ScriptEnginesPath = "path_to_assemblies" Signed-off-by: Melanie <melanie@t-data.com>viewer-2-initial-appearance
parent
d8ae287ebf
commit
4f25b73b57
|
@ -82,6 +82,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||||
IConfig Config { get; }
|
IConfig Config { get; }
|
||||||
IConfigSource ConfigSource { get; }
|
IConfigSource ConfigSource { get; }
|
||||||
string ScriptEngineName { get; }
|
string ScriptEngineName { get; }
|
||||||
|
string ScriptEnginePath { get; }
|
||||||
IScriptApi GetApi(UUID itemID, string name);
|
IScriptApi GetApi(UUID itemID, string name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ using System.Reflection;
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared
|
namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class AssemblyResolver
|
public class AssemblyResolver : MarshalByRefObject
|
||||||
{
|
{
|
||||||
public static Assembly OnAssemblyResolve(object sender,
|
public static Assembly OnAssemblyResolve(object sender,
|
||||||
ResolveEventArgs args)
|
ResolveEventArgs args)
|
||||||
|
@ -42,9 +42,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
|
|
||||||
AppDomain myDomain = (AppDomain)sender;
|
AppDomain myDomain = (AppDomain)sender;
|
||||||
string dirName = myDomain.FriendlyName;
|
string dirName = myDomain.FriendlyName;
|
||||||
|
string ScriptEnginesPath = myDomain.SetupInformation.PrivateBinPath;
|
||||||
|
|
||||||
string[] pathList = new string[] {"bin", "ScriptEngines",
|
string[] pathList = new string[] {"bin", ScriptEnginesPath,
|
||||||
Path.Combine("ScriptEngines", dirName)};
|
Path.Combine(ScriptEnginesPath, dirName)};
|
||||||
|
|
||||||
string assemblyName = args.Name;
|
string assemblyName = args.Name;
|
||||||
if (assemblyName.IndexOf(",") != -1)
|
if (assemblyName.IndexOf(",") != -1)
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
||||||
private Dictionary<string, enumCompileType> LanguageMapping = new Dictionary<string, enumCompileType>(StringComparer.CurrentCultureIgnoreCase);
|
private Dictionary<string, enumCompileType> LanguageMapping = new Dictionary<string, enumCompileType>(StringComparer.CurrentCultureIgnoreCase);
|
||||||
|
|
||||||
private string FilePrefix;
|
private string FilePrefix;
|
||||||
private string ScriptEnginesPath = "ScriptEngines";
|
private string ScriptEnginesPath = null;
|
||||||
// mapping between LSL and C# line/column numbers
|
// mapping between LSL and C# line/column numbers
|
||||||
private ICodeConverter LSL_Converter;
|
private ICodeConverter LSL_Converter;
|
||||||
|
|
||||||
|
@ -95,7 +95,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
||||||
|
|
||||||
public Compiler(IScriptEngine scriptEngine)
|
public Compiler(IScriptEngine scriptEngine)
|
||||||
{
|
{
|
||||||
m_scriptEngine = scriptEngine;
|
m_scriptEngine = scriptEngine;;
|
||||||
|
ScriptEnginesPath = scriptEngine.ScriptEnginePath;
|
||||||
ReadConfig();
|
ReadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
private IXmlRpcRouter m_XmlRpcRouter;
|
private IXmlRpcRouter m_XmlRpcRouter;
|
||||||
private int m_EventLimit;
|
private int m_EventLimit;
|
||||||
private bool m_KillTimedOutScripts;
|
private bool m_KillTimedOutScripts;
|
||||||
|
private string m_ScriptEnginesPath = null;
|
||||||
|
|
||||||
private static List<XEngine> m_ScriptEngines =
|
private static List<XEngine> m_ScriptEngines =
|
||||||
new List<XEngine>();
|
new List<XEngine>();
|
||||||
|
@ -156,6 +157,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
get { return m_ScriptConfig; }
|
get { return m_ScriptConfig; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ScriptEnginePath
|
||||||
|
{
|
||||||
|
get { return m_ScriptEnginesPath; }
|
||||||
|
}
|
||||||
|
|
||||||
public IConfigSource ConfigSource
|
public IConfigSource ConfigSource
|
||||||
{
|
{
|
||||||
get { return m_ConfigSource; }
|
get { return m_ConfigSource; }
|
||||||
|
@ -213,6 +219,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30);
|
m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30);
|
||||||
m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false);
|
m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false);
|
||||||
m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000;
|
m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000;
|
||||||
|
m_ScriptEnginesPath = m_ScriptConfig.GetString("ScriptEnginesPath", "ScriptEngines");
|
||||||
|
|
||||||
m_Prio = ThreadPriority.BelowNormal;
|
m_Prio = ThreadPriority.BelowNormal;
|
||||||
switch (priority)
|
switch (priority)
|
||||||
|
@ -410,7 +417,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Type ReplaceableInterface
|
public Type ReplaceableInterface
|
||||||
{
|
{
|
||||||
get { return null; }
|
get { return null; }
|
||||||
}
|
}
|
||||||
|
@ -719,9 +726,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AppDomainSetup appSetup = new AppDomainSetup();
|
AppDomainSetup appSetup = new AppDomainSetup();
|
||||||
// appSetup.ApplicationBase = Path.Combine(
|
appSetup.PrivateBinPath = Path.Combine(
|
||||||
// "ScriptEngines",
|
m_ScriptEnginesPath,
|
||||||
// m_Scene.RegionInfo.RegionID.ToString());
|
m_Scene.RegionInfo.RegionID.ToString());
|
||||||
|
|
||||||
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
|
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
|
||||||
Evidence evidence = new Evidence(baseEvidence);
|
Evidence evidence = new Evidence(baseEvidence);
|
||||||
|
@ -965,7 +972,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
startInfo.IdleTimeout = idleTimeout*1000; // convert to seconds as stated in .ini
|
startInfo.IdleTimeout = idleTimeout*1000; // convert to seconds as stated in .ini
|
||||||
startInfo.MaxWorkerThreads = maxThreads;
|
startInfo.MaxWorkerThreads = maxThreads;
|
||||||
startInfo.MinWorkerThreads = minThreads;
|
startInfo.MinWorkerThreads = minThreads;
|
||||||
startInfo.ThreadPriority = threadPriority;
|
startInfo.ThreadPriority = threadPriority;;
|
||||||
startInfo.StackSize = stackSize;
|
startInfo.StackSize = stackSize;
|
||||||
startInfo.StartSuspended = true;
|
startInfo.StartSuspended = true;
|
||||||
|
|
||||||
|
@ -1110,8 +1117,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
if (!(sender is System.AppDomain))
|
if (!(sender is System.AppDomain))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
string[] pathList = new string[] {"bin", "ScriptEngines",
|
string[] pathList = new string[] {"bin", m_ScriptEnginesPath,
|
||||||
Path.Combine("ScriptEngines",
|
Path.Combine(m_ScriptEnginesPath,
|
||||||
m_Scene.RegionInfo.RegionID.ToString())};
|
m_Scene.RegionInfo.RegionID.ToString())};
|
||||||
|
|
||||||
string assemblyName = args.Name;
|
string assemblyName = args.Name;
|
||||||
|
@ -1485,7 +1492,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
string fn = assemE.GetAttribute("Filename");
|
string fn = assemE.GetAttribute("Filename");
|
||||||
string base64 = assemE.InnerText;
|
string base64 = assemE.InnerText;
|
||||||
|
|
||||||
string path = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString());
|
string path = Path.Combine(m_ScriptEnginesPath, World.RegionInfo.RegionID.ToString());
|
||||||
path = Path.Combine(path, fn);
|
path = Path.Combine(path, fn);
|
||||||
|
|
||||||
if (!File.Exists(path))
|
if (!File.Exists(path))
|
||||||
|
@ -1525,7 +1532,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string statepath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString());
|
string statepath = Path.Combine(m_ScriptEnginesPath, World.RegionInfo.RegionID.ToString());
|
||||||
statepath = Path.Combine(statepath, itemID.ToString() + ".state");
|
statepath = Path.Combine(statepath, itemID.ToString() + ".state");
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -1551,7 +1558,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
{
|
{
|
||||||
XmlElement mapE = (XmlElement)mapL[0];
|
XmlElement mapE = (XmlElement)mapL[0];
|
||||||
|
|
||||||
string mappath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString());
|
string mappath = Path.Combine(m_ScriptEnginesPath, World.RegionInfo.RegionID.ToString());
|
||||||
mappath = Path.Combine(mappath, mapE.GetAttribute("Filename"));
|
mappath = Path.Combine(mappath, mapE.GetAttribute("Filename"));
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
|
@ -545,6 +545,10 @@
|
||||||
;; false to allow script controlled underground positioning of
|
;; false to allow script controlled underground positioning of
|
||||||
;; prims
|
;; prims
|
||||||
; DisableUndergroundMovement = true
|
; DisableUndergroundMovement = true
|
||||||
|
;
|
||||||
|
; Path to script engine assemblies
|
||||||
|
; Default is ./bin/ScriptEngines
|
||||||
|
; ScriptEnginesPath = "ScriptEngines"
|
||||||
|
|
||||||
[MRM]
|
[MRM]
|
||||||
;; Enables the Mini Region Modules Script Engine.
|
;; Enables the Mini Region Modules Script Engine.
|
||||||
|
|
|
@ -999,7 +999,10 @@
|
||||||
; false to allow script controlled underground positioning of
|
; false to allow script controlled underground positioning of
|
||||||
; prims
|
; prims
|
||||||
; DisableUndergroundMovement = true
|
; DisableUndergroundMovement = true
|
||||||
|
;
|
||||||
|
; Path to script engine assemblies
|
||||||
|
; Default is ./bin/ScriptEngines
|
||||||
|
; ScriptEnginesPath = "ScriptEngines"
|
||||||
|
|
||||||
[OpenGridProtocol]
|
[OpenGridProtocol]
|
||||||
;These are the settings for the Open Grid Protocol.. the Agent Domain, Region Domain, you know..
|
;These are the settings for the Open Grid Protocol.. the Agent Domain, Region Domain, you know..
|
||||||
|
|
Loading…
Reference in New Issue