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; }
|
||||
IConfigSource ConfigSource { get; }
|
||||
string ScriptEngineName { get; }
|
||||
string ScriptEnginePath { get; }
|
||||
IScriptApi GetApi(UUID itemID, string name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ using System.Reflection;
|
|||
namespace OpenSim.Region.ScriptEngine.Shared
|
||||
{
|
||||
[Serializable]
|
||||
public class AssemblyResolver
|
||||
public class AssemblyResolver : MarshalByRefObject
|
||||
{
|
||||
public static Assembly OnAssemblyResolve(object sender,
|
||||
ResolveEventArgs args)
|
||||
|
@ -42,9 +42,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
|||
|
||||
AppDomain myDomain = (AppDomain)sender;
|
||||
string dirName = myDomain.FriendlyName;
|
||||
string ScriptEnginesPath = myDomain.SetupInformation.PrivateBinPath;
|
||||
|
||||
string[] pathList = new string[] {"bin", "ScriptEngines",
|
||||
Path.Combine("ScriptEngines", dirName)};
|
||||
string[] pathList = new string[] {"bin", ScriptEnginesPath,
|
||||
Path.Combine(ScriptEnginesPath, dirName)};
|
||||
|
||||
string assemblyName = args.Name;
|
||||
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 string FilePrefix;
|
||||
private string ScriptEnginesPath = "ScriptEngines";
|
||||
private string ScriptEnginesPath = null;
|
||||
// mapping between LSL and C# line/column numbers
|
||||
private ICodeConverter LSL_Converter;
|
||||
|
||||
|
@ -95,7 +95,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
|||
|
||||
public Compiler(IScriptEngine scriptEngine)
|
||||
{
|
||||
m_scriptEngine = scriptEngine;
|
||||
m_scriptEngine = scriptEngine;;
|
||||
ScriptEnginesPath = scriptEngine.ScriptEnginePath;
|
||||
ReadConfig();
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
private IXmlRpcRouter m_XmlRpcRouter;
|
||||
private int m_EventLimit;
|
||||
private bool m_KillTimedOutScripts;
|
||||
private string m_ScriptEnginesPath = null;
|
||||
|
||||
private static List<XEngine> m_ScriptEngines =
|
||||
new List<XEngine>();
|
||||
|
@ -156,6 +157,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
get { return m_ScriptConfig; }
|
||||
}
|
||||
|
||||
public string ScriptEnginePath
|
||||
{
|
||||
get { return m_ScriptEnginesPath; }
|
||||
}
|
||||
|
||||
public IConfigSource ConfigSource
|
||||
{
|
||||
get { return m_ConfigSource; }
|
||||
|
@ -213,6 +219,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30);
|
||||
m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false);
|
||||
m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000;
|
||||
m_ScriptEnginesPath = m_ScriptConfig.GetString("ScriptEnginesPath", "ScriptEngines");
|
||||
|
||||
m_Prio = ThreadPriority.BelowNormal;
|
||||
switch (priority)
|
||||
|
@ -719,9 +726,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
try
|
||||
{
|
||||
AppDomainSetup appSetup = new AppDomainSetup();
|
||||
// appSetup.ApplicationBase = Path.Combine(
|
||||
// "ScriptEngines",
|
||||
// m_Scene.RegionInfo.RegionID.ToString());
|
||||
appSetup.PrivateBinPath = Path.Combine(
|
||||
m_ScriptEnginesPath,
|
||||
m_Scene.RegionInfo.RegionID.ToString());
|
||||
|
||||
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
|
||||
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.MaxWorkerThreads = maxThreads;
|
||||
startInfo.MinWorkerThreads = minThreads;
|
||||
startInfo.ThreadPriority = threadPriority;
|
||||
startInfo.ThreadPriority = threadPriority;;
|
||||
startInfo.StackSize = stackSize;
|
||||
startInfo.StartSuspended = true;
|
||||
|
||||
|
@ -1110,8 +1117,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
if (!(sender is System.AppDomain))
|
||||
return null;
|
||||
|
||||
string[] pathList = new string[] {"bin", "ScriptEngines",
|
||||
Path.Combine("ScriptEngines",
|
||||
string[] pathList = new string[] {"bin", m_ScriptEnginesPath,
|
||||
Path.Combine(m_ScriptEnginesPath,
|
||||
m_Scene.RegionInfo.RegionID.ToString())};
|
||||
|
||||
string assemblyName = args.Name;
|
||||
|
@ -1485,7 +1492,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
string fn = assemE.GetAttribute("Filename");
|
||||
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);
|
||||
|
||||
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");
|
||||
|
||||
try
|
||||
|
@ -1551,7 +1558,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
{
|
||||
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"));
|
||||
|
||||
try
|
||||
|
|
|
@ -545,6 +545,10 @@
|
|||
;; false to allow script controlled underground positioning of
|
||||
;; prims
|
||||
; DisableUndergroundMovement = true
|
||||
;
|
||||
; Path to script engine assemblies
|
||||
; Default is ./bin/ScriptEngines
|
||||
; ScriptEnginesPath = "ScriptEngines"
|
||||
|
||||
[MRM]
|
||||
;; Enables the Mini Region Modules Script Engine.
|
||||
|
|
|
@ -999,7 +999,10 @@
|
|||
; false to allow script controlled underground positioning of
|
||||
; prims
|
||||
; DisableUndergroundMovement = true
|
||||
|
||||
;
|
||||
; Path to script engine assemblies
|
||||
; Default is ./bin/ScriptEngines
|
||||
; ScriptEnginesPath = "ScriptEngines"
|
||||
|
||||
[OpenGridProtocol]
|
||||
;These are the settings for the Open Grid Protocol.. the Agent Domain, Region Domain, you know..
|
||||
|
|
Loading…
Reference in New Issue