Merge branch 'master' of ssh://MyConnection/var/git/opensim
commit
54e05a083d
|
@ -39,10 +39,6 @@ namespace OpenSim.ConsoleClient
|
||||||
{
|
{
|
||||||
public class OpenSimConsoleClient
|
public class OpenSimConsoleClient
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
|
||||||
LogManager.GetLogger(
|
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
protected static ServicesServerBase m_Server = null;
|
protected static ServicesServerBase m_Server = null;
|
||||||
private static string m_Host;
|
private static string m_Host;
|
||||||
private static int m_Port;
|
private static int m_Port;
|
||||||
|
|
|
@ -40,8 +40,6 @@ namespace OpenSim.ConsoleClient
|
||||||
|
|
||||||
public class Requester
|
public class Requester
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
public static void MakeRequest(string requestUrl, string data,
|
public static void MakeRequest(string requestUrl, string data,
|
||||||
ReplyDelegate action)
|
ReplyDelegate action)
|
||||||
{
|
{
|
||||||
|
|
|
@ -168,7 +168,7 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
asset.Name = (string) dbReader["name"];
|
asset.Name = (string) dbReader["name"];
|
||||||
asset.Type = (sbyte) dbReader["assetType"];
|
asset.Type = (sbyte) dbReader["assetType"];
|
||||||
asset.Temporary = (bool)dbReader["temporary"];
|
asset.Temporary = Convert.ToBoolean(dbReader["temporary"]);
|
||||||
}
|
}
|
||||||
dbReader.Close();
|
dbReader.Close();
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
|
@ -359,7 +359,7 @@ namespace OpenSim.Data.MySQL
|
||||||
metadata.Name = (string) dbReader["name"];
|
metadata.Name = (string) dbReader["name"];
|
||||||
metadata.Description = (string) dbReader["description"];
|
metadata.Description = (string) dbReader["description"];
|
||||||
metadata.Type = (sbyte) dbReader["assetType"];
|
metadata.Type = (sbyte) dbReader["assetType"];
|
||||||
metadata.Temporary = (bool) dbReader["temporary"]; // Not sure if this is correct.
|
metadata.Temporary = Convert.ToBoolean(dbReader["temporary"]); // Not sure if this is correct.
|
||||||
metadata.FullID = new UUID((string) dbReader["id"]);
|
metadata.FullID = new UUID((string) dbReader["id"]);
|
||||||
|
|
||||||
// Current SHA1s are not stored/computed.
|
// Current SHA1s are not stored/computed.
|
||||||
|
|
|
@ -510,6 +510,13 @@ namespace OpenSim.Framework
|
||||||
if (te != null && te.Length > 0)
|
if (te != null && te.Length > 0)
|
||||||
Texture = new Primitive.TextureEntry(te, 0, te.Length);
|
Texture = new Primitive.TextureEntry(te, 0, te.Length);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// We shouldn't be receiving appearance hashtables without a TextureEntry,
|
||||||
|
// but in case we do this will prevent a failure when saving to the database
|
||||||
|
Texture = GetDefaultTexture();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]);
|
AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]);
|
||||||
|
|
||||||
|
|
|
@ -532,6 +532,11 @@ namespace OpenSim.Framework.Communications.Tests
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(UUID ownerID, List<UUID> ids)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -576,7 +576,7 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
public void Prompt()
|
public void Prompt()
|
||||||
{
|
{
|
||||||
string line = ReadLine(m_defaultPrompt, true, true);
|
string line = ReadLine(m_defaultPrompt + "# ", true, true);
|
||||||
|
|
||||||
if (line != String.Empty)
|
if (line != String.Empty)
|
||||||
{
|
{
|
||||||
|
@ -592,7 +592,7 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
public override string ReadLine(string p, bool isCommand, bool e)
|
public override string ReadLine(string p, bool isCommand, bool e)
|
||||||
{
|
{
|
||||||
System.Console.Write("{0}", prompt);
|
System.Console.Write("{0}", p);
|
||||||
string cmdinput = System.Console.ReadLine();
|
string cmdinput = System.Console.ReadLine();
|
||||||
|
|
||||||
if (isCommand)
|
if (isCommand)
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace OpenSim.Framework.Console
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string DefaultPrompt
|
public string DefaultPrompt
|
||||||
{
|
{
|
||||||
set { m_defaultPrompt = value + "# "; }
|
set { m_defaultPrompt = value; }
|
||||||
get { return m_defaultPrompt; }
|
get { return m_defaultPrompt; }
|
||||||
}
|
}
|
||||||
protected string m_defaultPrompt;
|
protected string m_defaultPrompt;
|
||||||
|
@ -123,7 +123,7 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
public virtual string ReadLine(string p, bool isCommand, bool e)
|
public virtual string ReadLine(string p, bool isCommand, bool e)
|
||||||
{
|
{
|
||||||
System.Console.Write("{0}", prompt);
|
System.Console.Write("{0}", p);
|
||||||
string cmdinput = System.Console.ReadLine();
|
string cmdinput = System.Console.ReadLine();
|
||||||
|
|
||||||
return cmdinput;
|
return cmdinput;
|
||||||
|
|
|
@ -50,8 +50,6 @@ namespace OpenSim.Framework.Console
|
||||||
//
|
//
|
||||||
public class RemoteConsole : CommandConsole
|
public class RemoteConsole : CommandConsole
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
private IHttpServer m_Server = null;
|
private IHttpServer m_Server = null;
|
||||||
private IConfigSource m_Config = null;
|
private IConfigSource m_Config = null;
|
||||||
|
|
||||||
|
@ -217,6 +215,12 @@ namespace OpenSim.Framework.Console
|
||||||
id.AppendChild(xmldoc.CreateTextNode(sessionID.ToString()));
|
id.AppendChild(xmldoc.CreateTextNode(sessionID.ToString()));
|
||||||
|
|
||||||
rootElement.AppendChild(id);
|
rootElement.AppendChild(id);
|
||||||
|
|
||||||
|
XmlElement prompt = xmldoc.CreateElement("", "Prompt", "");
|
||||||
|
prompt.AppendChild(xmldoc.CreateTextNode(DefaultPrompt));
|
||||||
|
|
||||||
|
rootElement.AppendChild(prompt);
|
||||||
|
|
||||||
rootElement.AppendChild(MainConsole.Instance.Commands.GetXml(xmldoc));
|
rootElement.AppendChild(MainConsole.Instance.Commands.GetXml(xmldoc));
|
||||||
|
|
||||||
reply["str_response_string"] = xmldoc.InnerXml;
|
reply["str_response_string"] = xmldoc.InnerXml;
|
||||||
|
|
|
@ -98,10 +98,10 @@ namespace OpenSim.Framework
|
||||||
"True",
|
"True",
|
||||||
false);
|
false);
|
||||||
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access user name [Default: disabled]", "0", false);
|
"Remote console access user name [Default: disabled]", "", false);
|
||||||
|
|
||||||
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access password [Default: disabled]", "0", false);
|
"Remote console access password [Default: disabled]", "", false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -260,7 +260,7 @@ namespace OpenSim.Framework
|
||||||
IClientAPI remoteClient, List<UUID> itemIDs);
|
IClientAPI remoteClient, List<UUID> itemIDs);
|
||||||
|
|
||||||
public delegate void RemoveInventoryFolder(
|
public delegate void RemoveInventoryFolder(
|
||||||
IClientAPI remoteClient, UUID folderID);
|
IClientAPI remoteClient, List<UUID> folderIDs);
|
||||||
|
|
||||||
public delegate void RequestAsset(IClientAPI remoteClient, RequestAssetArgs transferRequest);
|
public delegate void RequestAsset(IClientAPI remoteClient, RequestAssetArgs transferRequest);
|
||||||
|
|
||||||
|
|
|
@ -91,10 +91,10 @@ namespace OpenSim.Framework
|
||||||
m_configMember.addConfigurationOption("published_ip", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("published_ip", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"My Published IP Address", "127.0.0.1", false);
|
"My Published IP Address", "127.0.0.1", false);
|
||||||
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access user name [Default: disabled]", "0", false);
|
"Remote console access user name [Default: disabled]", "", false);
|
||||||
|
|
||||||
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access password [Default: disabled]", "0", false);
|
"Remote console access password [Default: disabled]", "", false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,8 @@ using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using HttpServer;
|
using HttpServer;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers.HttpServer
|
namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
|
@ -66,6 +68,10 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
|
|
||||||
public class PollServiceWorkerThread
|
public class PollServiceWorkerThread
|
||||||
{
|
{
|
||||||
|
private static readonly ILog m_log =
|
||||||
|
LogManager.GetLogger(
|
||||||
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
public event ReQueuePollServiceItem ReQueue;
|
public event ReQueuePollServiceItem ReQueue;
|
||||||
|
|
||||||
private readonly BaseHttpServer m_server;
|
private readonly BaseHttpServer m_server;
|
||||||
|
@ -92,6 +98,8 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
while (m_running)
|
while (m_running)
|
||||||
{
|
{
|
||||||
PollServiceHttpRequest req = m_request.Dequeue();
|
PollServiceHttpRequest req = m_request.Dequeue();
|
||||||
|
try
|
||||||
|
{
|
||||||
if (req.PollServiceArgs.HasEvents(req.PollServiceArgs.Id))
|
if (req.PollServiceArgs.HasEvents(req.PollServiceArgs.Id))
|
||||||
{
|
{
|
||||||
StreamReader str = new StreamReader(req.Request.Body);
|
StreamReader str = new StreamReader(req.Request.Body);
|
||||||
|
@ -115,8 +123,11 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("Exception in poll service thread: " + e.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Enqueue(PollServiceHttpRequest pPollServiceHttpRequest)
|
internal void Enqueue(PollServiceHttpRequest pPollServiceHttpRequest)
|
||||||
|
|
|
@ -75,6 +75,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
WebRequest request = WebRequest.Create(requestUrl);
|
WebRequest request = WebRequest.Create(requestUrl);
|
||||||
request.Method = verb;
|
request.Method = verb;
|
||||||
request.ContentType = "text/xml";
|
request.ContentType = "text/xml";
|
||||||
|
request.Timeout = 20000;
|
||||||
|
|
||||||
MemoryStream buffer = new MemoryStream();
|
MemoryStream buffer = new MemoryStream();
|
||||||
|
|
||||||
|
@ -98,7 +99,9 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
XmlSerializer deserializer = new XmlSerializer(typeof(TResponse));
|
XmlSerializer deserializer = new XmlSerializer(typeof(TResponse));
|
||||||
deserial = (TResponse)deserializer.Deserialize(resp.GetResponseStream());
|
deserial = (TResponse)deserializer.Deserialize(resp.GetResponseStream());
|
||||||
|
resp.Close();
|
||||||
}
|
}
|
||||||
|
requestStream.Close();
|
||||||
return deserial;
|
return deserial;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
WebRequest request = WebRequest.Create(requestUrl);
|
WebRequest request = WebRequest.Create(requestUrl);
|
||||||
request.Method = verb;
|
request.Method = verb;
|
||||||
|
|
||||||
if (verb == "POST")
|
if ((verb == "POST") || (verb == "PUT"))
|
||||||
{
|
{
|
||||||
request.ContentType = "text/xml";
|
request.ContentType = "text/xml";
|
||||||
|
|
||||||
|
|
|
@ -158,10 +158,10 @@ namespace OpenSim.Framework
|
||||||
"Minimum Level a user should have to login [0 default]", "0", false);
|
"Minimum Level a user should have to login [0 default]", "0", false);
|
||||||
|
|
||||||
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access user name [Default: disabled]", "0", false);
|
"Remote console access user name [Default: disabled]", "", false);
|
||||||
|
|
||||||
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||||
"Remote console access password [Default: disabled]", "0", false);
|
"Remote console access password [Default: disabled]", "", false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ namespace OpenSim.Grid.GridServer
|
||||||
protected GridConfig m_config;
|
protected GridConfig m_config;
|
||||||
public string m_consoleType = "local";
|
public string m_consoleType = "local";
|
||||||
public IConfigSource m_configSource = null;
|
public IConfigSource m_configSource = null;
|
||||||
|
public string m_configFile = "GridServer_Config.xml";
|
||||||
|
|
||||||
public GridConfig Config
|
public GridConfig Config
|
||||||
{
|
{
|
||||||
|
@ -91,7 +92,7 @@ namespace OpenSim.Grid.GridServer
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
MainConsole.Instance = m_console;
|
MainConsole.Instance = m_console;
|
||||||
m_config = new GridConfig("GRID SERVER", (Path.Combine(Util.configDir(), "GridServer_Config.xml")));
|
m_config = new GridConfig("GRID SERVER", (Path.Combine(Util.configDir(), m_configFile)));
|
||||||
|
|
||||||
m_log.Info("[GRID]: Starting HTTP process");
|
m_log.Info("[GRID]: Starting HTTP process");
|
||||||
m_httpServer = new BaseHttpServer(m_config.HttpPort);
|
m_httpServer = new BaseHttpServer(m_config.HttpPort);
|
||||||
|
|
|
@ -36,6 +36,7 @@ namespace OpenSim.Grid.GridServer
|
||||||
{
|
{
|
||||||
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
||||||
argvSource.AddSwitch("Startup", "console", "c");
|
argvSource.AddSwitch("Startup", "console", "c");
|
||||||
|
argvSource.AddSwitch("Startup", "xmlfile", "x");
|
||||||
|
|
||||||
XmlConfigurator.Configure();
|
XmlConfigurator.Configure();
|
||||||
|
|
||||||
|
@ -45,6 +46,7 @@ namespace OpenSim.Grid.GridServer
|
||||||
if (startupConfig != null)
|
if (startupConfig != null)
|
||||||
{
|
{
|
||||||
app.m_consoleType = startupConfig.GetString("console", "local");
|
app.m_consoleType = startupConfig.GetString("console", "local");
|
||||||
|
app.m_configFile = startupConfig.GetString("xmlfile", "GridServer_Config.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
app.m_configSource = argvSource;
|
app.m_configSource = argvSource;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Cache
|
namespace OpenSim.Grid.InventoryServer
|
||||||
{
|
{
|
||||||
public class AuthedSessionCache
|
public class AuthedSessionCache
|
||||||
{
|
{
|
|
@ -30,8 +30,10 @@ using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Data;
|
using OpenSim.Data;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Communications;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Grid.InventoryServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Abstract base class used by local and grid implementations of an inventory service.
|
/// Abstract base class used by local and grid implementations of an inventory service.
|
|
@ -59,16 +59,19 @@ namespace OpenSim.Grid.MessagingServer
|
||||||
|
|
||||||
protected static string m_consoleType = "local";
|
protected static string m_consoleType = "local";
|
||||||
protected static IConfigSource m_config = null;
|
protected static IConfigSource m_config = null;
|
||||||
|
protected static string m_configFile = "MessagingServer_Config.xml";
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
||||||
argvSource.AddSwitch("Startup", "console", "c");
|
argvSource.AddSwitch("Startup", "console", "c");
|
||||||
|
argvSource.AddSwitch("Startup", "xmlfile", "x");
|
||||||
|
|
||||||
IConfig startupConfig = argvSource.Configs["Startup"];
|
IConfig startupConfig = argvSource.Configs["Startup"];
|
||||||
if (startupConfig != null)
|
if (startupConfig != null)
|
||||||
{
|
{
|
||||||
m_consoleType = startupConfig.GetString("console", "local");
|
m_consoleType = startupConfig.GetString("console", "local");
|
||||||
|
m_configFile = startupConfig.GetString("xmlfile", "MessagingServer_Config.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_config = argvSource;
|
m_config = argvSource;
|
||||||
|
@ -164,7 +167,7 @@ namespace OpenSim.Grid.MessagingServer
|
||||||
|
|
||||||
protected override void StartupSpecific()
|
protected override void StartupSpecific()
|
||||||
{
|
{
|
||||||
Cfg = new MessageServerConfig("MESSAGING SERVER", (Path.Combine(Util.configDir(), "MessagingServer_Config.xml")));
|
Cfg = new MessageServerConfig("MESSAGING SERVER", (Path.Combine(Util.configDir(), m_configFile)));
|
||||||
|
|
||||||
m_userDataBaseService = new UserDataBaseService();
|
m_userDataBaseService = new UserDataBaseService();
|
||||||
m_userDataBaseService.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect);
|
m_userDataBaseService.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect);
|
||||||
|
|
|
@ -110,7 +110,12 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
if (requestData.Contains("owner"))
|
if (requestData.Contains("owner"))
|
||||||
{
|
{
|
||||||
AvatarAppearance appearance = new AvatarAppearance(requestData);
|
AvatarAppearance appearance = new AvatarAppearance(requestData);
|
||||||
|
|
||||||
|
// TODO: Sometime in the future we may have a database layer that is capable of updating appearance when
|
||||||
|
// the TextureEntry is null. When that happens, this check can be removed
|
||||||
|
if (appearance.Texture != null)
|
||||||
m_userDataBaseService.UpdateUserAppearance(new UUID((string)requestData["owner"]), appearance);
|
m_userDataBaseService.UpdateUserAppearance(new UUID((string)requestData["owner"]), appearance);
|
||||||
|
|
||||||
responseData = new Hashtable();
|
responseData = new Hashtable();
|
||||||
responseData["returnString"] = "TRUE";
|
responseData["returnString"] = "TRUE";
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,16 +76,19 @@ namespace OpenSim.Grid.UserServer
|
||||||
|
|
||||||
protected static string m_consoleType = "local";
|
protected static string m_consoleType = "local";
|
||||||
protected static IConfigSource m_config = null;
|
protected static IConfigSource m_config = null;
|
||||||
|
protected static string m_configFile = "UserServer_Config.xml";
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
ArgvConfigSource argvSource = new ArgvConfigSource(args);
|
||||||
argvSource.AddSwitch("Startup", "console", "c");
|
argvSource.AddSwitch("Startup", "console", "c");
|
||||||
|
argvSource.AddSwitch("Startup", "xmlfile", "x");
|
||||||
|
|
||||||
IConfig startupConfig = argvSource.Configs["Startup"];
|
IConfig startupConfig = argvSource.Configs["Startup"];
|
||||||
if (startupConfig != null)
|
if (startupConfig != null)
|
||||||
{
|
{
|
||||||
m_consoleType = startupConfig.GetString("console", "local");
|
m_consoleType = startupConfig.GetString("console", "local");
|
||||||
|
m_configFile = startupConfig.GetString("xmlfile", "UserServer_Config.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_config = argvSource;
|
m_config = argvSource;
|
||||||
|
@ -151,7 +154,7 @@ namespace OpenSim.Grid.UserServer
|
||||||
|
|
||||||
protected virtual IInterServiceInventoryServices StartupCoreComponents()
|
protected virtual IInterServiceInventoryServices StartupCoreComponents()
|
||||||
{
|
{
|
||||||
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
|
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), m_configFile)));
|
||||||
|
|
||||||
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
|
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
|
||||||
|
|
||||||
|
|
|
@ -7090,14 +7090,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (OnRemoveInventoryFolder != null)
|
if (OnRemoveInventoryFolder != null)
|
||||||
{
|
{
|
||||||
handlerRemoveInventoryFolder = null;
|
handlerRemoveInventoryFolder = null;
|
||||||
|
List<UUID> uuids = new List<UUID>();
|
||||||
foreach (RemoveInventoryFolderPacket.FolderDataBlock datablock in removeFolder.FolderData)
|
foreach (RemoveInventoryFolderPacket.FolderDataBlock datablock in removeFolder.FolderData)
|
||||||
{
|
{
|
||||||
|
uuids.Add(datablock.FolderID);
|
||||||
|
}
|
||||||
handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
|
handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
|
||||||
|
|
||||||
if (handlerRemoveInventoryFolder != null)
|
if (handlerRemoveInventoryFolder != null)
|
||||||
{
|
{
|
||||||
handlerRemoveInventoryFolder(this, datablock.FolderID);
|
handlerRemoveInventoryFolder(this, uuids);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -7114,14 +7115,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (OnRemoveInventoryFolder != null)
|
if (OnRemoveInventoryFolder != null)
|
||||||
{
|
{
|
||||||
handlerRemoveInventoryFolder = null;
|
handlerRemoveInventoryFolder = null;
|
||||||
|
List<UUID> uuids = new List<UUID>();
|
||||||
foreach (RemoveInventoryObjectsPacket.FolderDataBlock datablock in removeObject.FolderData)
|
foreach (RemoveInventoryObjectsPacket.FolderDataBlock datablock in removeObject.FolderData)
|
||||||
{
|
{
|
||||||
|
uuids.Add(datablock.FolderID);
|
||||||
|
}
|
||||||
handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
|
handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
|
||||||
|
|
||||||
if (handlerRemoveInventoryFolder != null)
|
if (handlerRemoveInventoryFolder != null)
|
||||||
{
|
{
|
||||||
handlerRemoveInventoryFolder(this, datablock.FolderID);
|
handlerRemoveInventoryFolder(this, uuids);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSimulator Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.Avatar.NPC
|
||||||
|
{
|
||||||
|
public interface INPCModule
|
||||||
|
{
|
||||||
|
UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom);
|
||||||
|
void Autopilot(UUID agentID, Scene scene, Vector3 pos);
|
||||||
|
void Say(UUID agentID, Scene scene, string text);
|
||||||
|
void DeleteNPC(UUID agentID, Scene scene);
|
||||||
|
}
|
||||||
|
}
|
|
@ -443,7 +443,16 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
|
||||||
endPoint.X = (int) x;
|
endPoint.X = (int) x;
|
||||||
endPoint.Y = (int) y;
|
endPoint.Y = (int) y;
|
||||||
Image image = ImageHttpRequest(nextLine);
|
Image image = ImageHttpRequest(nextLine);
|
||||||
graph.DrawImage(image, (float) startPoint.X, (float) startPoint.Y, x, y);
|
if (image != null)
|
||||||
|
{
|
||||||
|
graph.DrawImage(image, (float)startPoint.X, (float)startPoint.Y, x, y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
graph.DrawString("URL couldn't be resolved or is", new Font("Arial",6), myBrush, startPoint);
|
||||||
|
graph.DrawString("not an image. Please check URL.", new Font("Arial", 6), myBrush, new Point(startPoint.X, 12 + startPoint.Y));
|
||||||
|
graph.DrawRectangle(drawPen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);
|
||||||
|
}
|
||||||
startPoint.X += endPoint.X;
|
startPoint.X += endPoint.X;
|
||||||
startPoint.Y += endPoint.Y;
|
startPoint.Y += endPoint.Y;
|
||||||
}
|
}
|
||||||
|
@ -469,13 +478,19 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
|
||||||
startPoint.X += endPoint.X;
|
startPoint.X += endPoint.X;
|
||||||
startPoint.Y += endPoint.Y;
|
startPoint.Y += endPoint.Y;
|
||||||
}
|
}
|
||||||
|
else if (nextLine.StartsWith("FillPolygon"))
|
||||||
|
{
|
||||||
|
PointF[] points = null;
|
||||||
|
GetParams(partsDelimiter, ref nextLine, 11, ref points);
|
||||||
|
graph.FillPolygon(myBrush, points);
|
||||||
|
}
|
||||||
else if (nextLine.StartsWith("Ellipse"))
|
else if (nextLine.StartsWith("Ellipse"))
|
||||||
{
|
{
|
||||||
float x = 0;
|
float x = 0;
|
||||||
float y = 0;
|
float y = 0;
|
||||||
GetParams(partsDelimiter, ref nextLine, 7, ref x, ref y);
|
GetParams(partsDelimiter, ref nextLine, 7, ref x, ref y);
|
||||||
endPoint.X = (int) x;
|
endPoint.X = (int)x;
|
||||||
endPoint.Y = (int) y;
|
endPoint.Y = (int)y;
|
||||||
graph.DrawEllipse(drawPen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);
|
graph.DrawEllipse(drawPen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);
|
||||||
startPoint.X += endPoint.X;
|
startPoint.X += endPoint.X;
|
||||||
startPoint.Y += endPoint.Y;
|
startPoint.Y += endPoint.Y;
|
||||||
|
@ -492,8 +507,9 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
|
||||||
nextLine = nextLine.Remove(0, 8);
|
nextLine = nextLine.Remove(0, 8);
|
||||||
nextLine = nextLine.Trim();
|
nextLine = nextLine.Trim();
|
||||||
|
|
||||||
string [] fprops = nextLine.Split(partsDelimiter);
|
string[] fprops = nextLine.Split(partsDelimiter);
|
||||||
foreach (string prop in fprops) {
|
foreach (string prop in fprops)
|
||||||
|
{
|
||||||
|
|
||||||
switch (prop)
|
switch (prop)
|
||||||
{
|
{
|
||||||
|
@ -532,6 +548,57 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
|
||||||
float size = Convert.ToSingle(nextLine, CultureInfo.InvariantCulture);
|
float size = Convert.ToSingle(nextLine, CultureInfo.InvariantCulture);
|
||||||
drawPen.Width = size;
|
drawPen.Width = size;
|
||||||
}
|
}
|
||||||
|
else if (nextLine.StartsWith("PenCap"))
|
||||||
|
{
|
||||||
|
bool start = true, end = true;
|
||||||
|
nextLine = nextLine.Remove(0, 6);
|
||||||
|
nextLine = nextLine.Trim();
|
||||||
|
string[] cap = nextLine.Split(partsDelimiter);
|
||||||
|
if (cap[0].ToLower() == "start")
|
||||||
|
end = false;
|
||||||
|
else if (cap[0].ToLower() == "end")
|
||||||
|
start = false;
|
||||||
|
else if (cap[0].ToLower() != "both")
|
||||||
|
return;
|
||||||
|
string type = cap[1].ToLower();
|
||||||
|
|
||||||
|
if (end)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "arrow":
|
||||||
|
drawPen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
|
||||||
|
break;
|
||||||
|
case "round":
|
||||||
|
drawPen.EndCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
|
||||||
|
break;
|
||||||
|
case "diamond":
|
||||||
|
drawPen.EndCap = System.Drawing.Drawing2D.LineCap.DiamondAnchor;
|
||||||
|
break;
|
||||||
|
case "flat":
|
||||||
|
drawPen.EndCap = System.Drawing.Drawing2D.LineCap.Flat;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (start)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "arrow":
|
||||||
|
drawPen.StartCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
|
||||||
|
break;
|
||||||
|
case "round":
|
||||||
|
drawPen.StartCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
|
||||||
|
break;
|
||||||
|
case "diamond":
|
||||||
|
drawPen.StartCap = System.Drawing.Drawing2D.LineCap.DiamondAnchor;
|
||||||
|
break;
|
||||||
|
case "flat":
|
||||||
|
drawPen.StartCap = System.Drawing.Drawing2D.LineCap.Flat;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (nextLine.StartsWith("PenColour"))
|
else if (nextLine.StartsWith("PenColour"))
|
||||||
{
|
{
|
||||||
nextLine = nextLine.Remove(0, 9);
|
nextLine = nextLine.Remove(0, 9);
|
||||||
|
@ -582,18 +649,40 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void GetParams(char[] partsDelimiter, ref string line, int startLength, ref PointF[] points)
|
||||||
|
{
|
||||||
|
line = line.Remove(0, startLength);
|
||||||
|
string[] parts = line.Split(partsDelimiter);
|
||||||
|
if (parts.Length > 1 && parts.Length % 2 == 0)
|
||||||
|
{
|
||||||
|
points = new PointF[parts.Length / 2];
|
||||||
|
for (int i = 0; i < parts.Length; i = i + 2)
|
||||||
|
{
|
||||||
|
string xVal = parts[i].Trim();
|
||||||
|
string yVal = parts[i+1].Trim();
|
||||||
|
float x = Convert.ToSingle(xVal, CultureInfo.InvariantCulture);
|
||||||
|
float y = Convert.ToSingle(yVal, CultureInfo.InvariantCulture);
|
||||||
|
PointF point = new PointF(x, y);
|
||||||
|
points[i / 2] = point;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Bitmap ImageHttpRequest(string url)
|
private Bitmap ImageHttpRequest(string url)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
WebRequest request = HttpWebRequest.Create(url);
|
WebRequest request = HttpWebRequest.Create(url);
|
||||||
//Ckrinke: Comment out for now as 'str' is unused. Bring it back into play later when it is used.
|
//Ckrinke: Comment out for now as 'str' is unused. Bring it back into play later when it is used.
|
||||||
//Ckrinke Stream str = null;
|
//Ckrinke Stream str = null;
|
||||||
HttpWebResponse response = (HttpWebResponse) (request).GetResponse();
|
HttpWebResponse response = (HttpWebResponse)(request).GetResponse();
|
||||||
if (response.StatusCode == HttpStatusCode.OK)
|
if (response.StatusCode == HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
Bitmap image = new Bitmap(response.GetResponseStream());
|
Bitmap image = new Bitmap(response.GetResponseStream());
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// <returns>true if the folder was successfully moved</returns>
|
/// <returns>true if the folder was successfully moved</returns>
|
||||||
public abstract bool MoveFolder(InventoryFolderBase folder);
|
public abstract bool MoveFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete a list of inventory folders (from trash)
|
||||||
|
/// </summary>
|
||||||
|
public abstract bool DeleteFolders(UUID ownerID, List<UUID> folderIDs);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Purge an inventory folder of all its items and subfolders.
|
/// Purge an inventory folder of all its items and subfolders.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -330,6 +330,23 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
|
||||||
|
{
|
||||||
|
if (folderIDs == null)
|
||||||
|
return false;
|
||||||
|
if (folderIDs.Count == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (IsLocalGridUser(ownerID))
|
||||||
|
return m_GridService.DeleteFolders(ownerID, folderIDs);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UUID sessionID = GetSessionID(ownerID);
|
||||||
|
string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString();
|
||||||
|
return m_HGService.DeleteFolders(uri, folderIDs, sessionID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override bool MoveFolder(InventoryFolderBase folder)
|
public override bool MoveFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
|
|
|
@ -258,6 +258,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_InventoryService.MoveFolder(folder);
|
return m_InventoryService.MoveFolder(folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
|
||||||
|
{
|
||||||
|
return m_InventoryService.DeleteFolders(ownerID, folderIDs);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Purge an inventory folder of all its items and subfolders.
|
/// Purge an inventory folder of all its items and subfolders.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -243,6 +243,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
|
||||||
|
{
|
||||||
|
if (folderIDs == null)
|
||||||
|
return false;
|
||||||
|
if (folderIDs.Count == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
UUID sessionID = GetSessionID(ownerID);
|
||||||
|
return m_RemoteConnector.DeleteFolders(ownerID.ToString(), folderIDs, sessionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool PurgeFolder(InventoryFolderBase folder)
|
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
|
|
|
@ -789,23 +789,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Removes an inventory folder. Although there is a packet in the Linden protocol for this, it may be
|
/// Removes an inventory folder. This packet is sent when the user
|
||||||
/// legacy and not currently used (purge folder is used to remove folders from trash instead).
|
/// right-clicks a folder that's already in trash and chooses "purge"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="remoteClient"></param>
|
/// <param name="remoteClient"></param>
|
||||||
/// <param name="folderID"></param>
|
/// <param name="folderID"></param>
|
||||||
private void RemoveInventoryFolder(IClientAPI remoteClient, UUID folderID)
|
private void RemoveInventoryFolder(IClientAPI remoteClient, List<UUID> folderIDs)
|
||||||
{
|
{
|
||||||
// Unclear is this handler is ever called by the Linden client, but it might
|
m_log.DebugFormat("[SCENE INVENTORY]: RemoveInventoryFolders count {0}", folderIDs.Count);
|
||||||
|
InventoryService.DeleteFolders(remoteClient.AgentId, folderIDs);
|
||||||
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
|
||||||
folder.Owner = remoteClient.AgentId;
|
|
||||||
InventoryFolderBase trash = InventoryService.GetFolderForType(remoteClient.AgentId, AssetType.TrashFolder);
|
|
||||||
if (trash != null)
|
|
||||||
{
|
|
||||||
folder.ParentID = trash.ID;
|
|
||||||
InventoryService.MoveFolder(folder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SceneObjectGroup GetGroupByPrim(uint localID)
|
private SceneObjectGroup GetGroupByPrim(uint localID)
|
||||||
|
|
|
@ -441,9 +441,24 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We're going to send the reply async, because there may be
|
||||||
|
// an enormous quantity of packets -- basically the entire inventory!
|
||||||
|
// We don't want to block the client thread while all that is happening.
|
||||||
|
SendInventoryDelegate d = SendInventoryAsync;
|
||||||
|
d.BeginInvoke(remoteClient, folderID, ownerID, fetchFolders, fetchItems, sortOrder, SendInventoryComplete, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate void SendInventoryDelegate(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
|
||||||
|
|
||||||
|
void SendInventoryAsync(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder)
|
||||||
|
{
|
||||||
SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems);
|
SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SendInventoryComplete(IAsyncResult iar)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handle the caps inventory descendents fetch.
|
/// Handle the caps inventory descendents fetch.
|
||||||
///
|
///
|
||||||
|
@ -537,7 +552,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public void HandleMoveInventoryFolder(IClientAPI remoteClient, UUID folderID, UUID parentID)
|
public void HandleMoveInventoryFolder(IClientAPI remoteClient, UUID folderID, UUID parentID)
|
||||||
{
|
{
|
||||||
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId);
|
||||||
folder = InventoryService.GetFolder(folder);
|
folder = InventoryService.GetFolder(folder);
|
||||||
if (folder != null)
|
if (folder != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2143,9 +2143,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode);
|
AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode);
|
||||||
|
|
||||||
m_log.DebugFormat(
|
m_log.Debug("[Scene] Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName);
|
||||||
"[SCENE]: Adding new {0} agent for {1} in {2}",
|
/*
|
||||||
((aCircuit.child == true) ? "child" : "root"), client.Name, RegionInfo.RegionName);
|
string logMsg = string.Format("[SCENE]: Adding new {0} agent for {1} in {2}",
|
||||||
|
((aCircuit.child == true) ? "child" : "root"), client.Name,
|
||||||
|
RegionInfo.RegionName);
|
||||||
|
|
||||||
|
m_log.Debug(logMsg);
|
||||||
|
*/
|
||||||
|
|
||||||
CommsManager.UserProfileCacheService.AddNewUser(client.AgentId);
|
CommsManager.UserProfileCacheService.AddNewUser(client.AgentId);
|
||||||
|
|
||||||
|
@ -2154,7 +2159,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// HERE!!! Do the initial attachments right here
|
// HERE!!! Do the initial attachments right here
|
||||||
// first agent upon login is a root agent by design.
|
// first agent upon login is a root agent by design.
|
||||||
// All other AddNewClient calls find aCircuit.child to be true
|
// All other AddNewClient calls find aCircuit.child to be true
|
||||||
if (aCircuit.child == false)
|
if (aCircuit == null || aCircuit.child == false)
|
||||||
{
|
{
|
||||||
sp.IsChildAgent = false;
|
sp.IsChildAgent = false;
|
||||||
sp.RezAttachments();
|
sp.RezAttachments();
|
||||||
|
|
|
@ -213,7 +213,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
|
||||||
m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword);
|
m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword);
|
||||||
string[] excludes = config.GetString("exclude_list", "").Trim().Split(new Char[] { ',' });
|
string[] excludes = config.GetString("exclude_list", "").Trim().Split(new Char[] { ',' });
|
||||||
cs.ExcludeList = new List<string>(excludes.Length);
|
cs.ExcludeList = new List<string>(excludes.Length);
|
||||||
foreach(string name in excludes)
|
foreach (string name in excludes)
|
||||||
{
|
{
|
||||||
cs.ExcludeList.Add(name.Trim().ToLower());
|
cs.ExcludeList.Add(name.Trim().ToLower());
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,37 +26,142 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
using OpenSim.Region.CoreModules.Avatar.NPC;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
using Timer=System.Timers.Timer;
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.World.NPC
|
namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
{
|
{
|
||||||
public interface INPCModule
|
|
||||||
{
|
|
||||||
UUID CreateNPC(string firstname, string lastname,Vector3 position, Scene scene, UUID cloneAppearanceFrom);
|
|
||||||
void Autopilot(UUID agentID, Scene scene, Vector3 pos);
|
|
||||||
void Say(UUID agentID, Scene scene, string text);
|
|
||||||
void DeleteNPC(UUID agentID, Scene scene);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class NPCModule : IRegionModule, INPCModule
|
public class NPCModule : IRegionModule, INPCModule
|
||||||
{
|
{
|
||||||
// private const bool m_enabled = false;
|
// private const bool m_enabled = false;
|
||||||
|
|
||||||
|
private Mutex m_createMutex = new Mutex(false);
|
||||||
|
|
||||||
|
private Timer m_timer = new Timer(500);
|
||||||
|
|
||||||
private Dictionary<UUID,NPCAvatar> m_avatars = new Dictionary<UUID, NPCAvatar>();
|
private Dictionary<UUID,NPCAvatar> m_avatars = new Dictionary<UUID, NPCAvatar>();
|
||||||
|
|
||||||
|
private Dictionary<UUID,AvatarAppearance> m_appearanceCache = new Dictionary<UUID, AvatarAppearance>();
|
||||||
|
|
||||||
|
// Timer vars.
|
||||||
|
private bool p_inUse = false;
|
||||||
|
private readonly object p_lock = new object();
|
||||||
|
// Private Temporary Variables.
|
||||||
|
private string p_firstname;
|
||||||
|
private string p_lastname;
|
||||||
|
private Vector3 p_position;
|
||||||
|
private Scene p_scene;
|
||||||
|
private UUID p_cloneAppearanceFrom;
|
||||||
|
private UUID p_returnUuid;
|
||||||
|
|
||||||
|
private AvatarAppearance GetAppearance(UUID target, Scene scene)
|
||||||
|
{
|
||||||
|
if (m_appearanceCache.ContainsKey(target))
|
||||||
|
return m_appearanceCache[target];
|
||||||
|
|
||||||
|
AvatarAppearance x = scene.CommsManager.AvatarService.GetUserAppearance(target);
|
||||||
|
|
||||||
|
m_appearanceCache.Add(target, x);
|
||||||
|
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
public UUID CreateNPC(string firstname, string lastname,Vector3 position, Scene scene, UUID cloneAppearanceFrom)
|
public UUID CreateNPC(string firstname, string lastname,Vector3 position, Scene scene, UUID cloneAppearanceFrom)
|
||||||
{
|
{
|
||||||
NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, scene);
|
// Block.
|
||||||
scene.AddNewClient(npcAvatar);
|
m_createMutex.WaitOne();
|
||||||
|
|
||||||
|
// Copy Temp Variables for Timer to pick up.
|
||||||
|
lock (p_lock)
|
||||||
|
{
|
||||||
|
p_firstname = firstname;
|
||||||
|
p_lastname = lastname;
|
||||||
|
p_position = position;
|
||||||
|
p_scene = scene;
|
||||||
|
p_cloneAppearanceFrom = cloneAppearanceFrom;
|
||||||
|
p_inUse = true;
|
||||||
|
p_returnUuid = UUID.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (p_returnUuid == UUID.Zero)
|
||||||
|
{
|
||||||
|
Thread.Sleep(250);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_createMutex.ReleaseMutex();
|
||||||
|
|
||||||
|
return p_returnUuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Autopilot(UUID agentID, Scene scene, Vector3 pos)
|
||||||
|
{
|
||||||
|
lock (m_avatars)
|
||||||
|
{
|
||||||
|
if (m_avatars.ContainsKey(agentID))
|
||||||
|
{
|
||||||
|
ScenePresence sp;
|
||||||
|
scene.TryGetAvatar(agentID, out sp);
|
||||||
|
sp.DoAutoPilot(0, pos, m_avatars[agentID]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Say(UUID agentID, Scene scene, string text)
|
||||||
|
{
|
||||||
|
lock (m_avatars)
|
||||||
|
{
|
||||||
|
if (m_avatars.ContainsKey(agentID))
|
||||||
|
{
|
||||||
|
m_avatars[agentID].Say(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteNPC(UUID agentID, Scene scene)
|
||||||
|
{
|
||||||
|
lock (m_avatars)
|
||||||
|
{
|
||||||
|
if (m_avatars.ContainsKey(agentID))
|
||||||
|
{
|
||||||
|
scene.RemoveClient(agentID);
|
||||||
|
m_avatars.Remove(agentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Initialise(Scene scene, IConfigSource source)
|
||||||
|
{
|
||||||
|
scene.RegisterModuleInterface<INPCModule>(this);
|
||||||
|
|
||||||
|
m_timer.Elapsed += m_timer_Elapsed;
|
||||||
|
m_timer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
lock (p_lock)
|
||||||
|
{
|
||||||
|
if (p_inUse)
|
||||||
|
{
|
||||||
|
p_inUse = false;
|
||||||
|
|
||||||
|
NPCAvatar npcAvatar = new NPCAvatar(p_firstname, p_lastname, p_position, p_scene);
|
||||||
|
npcAvatar.CircuitCode = (uint) Util.RandomClass.Next(0, int.MaxValue);
|
||||||
|
|
||||||
|
p_scene.ClientManager.Add(npcAvatar.CircuitCode, npcAvatar);
|
||||||
|
p_scene.AddNewClient(npcAvatar);
|
||||||
|
|
||||||
ScenePresence sp;
|
ScenePresence sp;
|
||||||
if(scene.TryGetAvatar(npcAvatar.AgentId, out sp))
|
if (p_scene.TryGetAvatar(npcAvatar.AgentId, out sp))
|
||||||
{
|
{
|
||||||
AvatarAppearance x = scene.CommsManager.AvatarService.GetUserAppearance(cloneAppearanceFrom);
|
AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene);
|
||||||
|
|
||||||
List<byte> wearbyte = new List<byte>();
|
List<byte> wearbyte = new List<byte>();
|
||||||
for (int i = 0; i < x.VisualParams.Length; i++)
|
for (int i = 0; i < x.VisualParams.Length; i++)
|
||||||
|
@ -69,30 +174,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
|
|
||||||
m_avatars.Add(npcAvatar.AgentId, npcAvatar);
|
m_avatars.Add(npcAvatar.AgentId, npcAvatar);
|
||||||
|
|
||||||
return npcAvatar.AgentId;
|
p_returnUuid = npcAvatar.AgentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Autopilot(UUID agentID, Scene scene, Vector3 pos)
|
|
||||||
{
|
|
||||||
ScenePresence sp;
|
|
||||||
scene.TryGetAvatar(agentID, out sp);
|
|
||||||
sp.DoAutoPilot(0,pos,m_avatars[agentID]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Say(UUID agentID, Scene scene, string text)
|
|
||||||
{
|
|
||||||
m_avatars[agentID].Say(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteNPC(UUID agentID, Scene scene)
|
|
||||||
{
|
|
||||||
scene.RemoveClient(agentID);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource source)
|
|
||||||
{
|
|
||||||
scene.RegisterModuleInterface<INPCModule>(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
|
|
|
@ -43,6 +43,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
||||||
private PhysicsVector m_rotationalVelocity = PhysicsVector.Zero;
|
private PhysicsVector m_rotationalVelocity = PhysicsVector.Zero;
|
||||||
private bool flying;
|
private bool flying;
|
||||||
private bool iscolliding;
|
private bool iscolliding;
|
||||||
|
|
||||||
public BasicActor()
|
public BasicActor()
|
||||||
{
|
{
|
||||||
_velocity = new PhysicsVector();
|
_velocity = new PhysicsVector();
|
||||||
|
|
|
@ -46,12 +46,17 @@ namespace OpenSim.Region.Physics.Manager
|
||||||
Z = z;
|
Z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PhysicsVector(PhysicsVector pv) : this(pv.X, pv.Y, pv.Z)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void setValues(float x, float y, float z)
|
public void setValues(float x, float y, float z)
|
||||||
{
|
{
|
||||||
X = x;
|
X = x;
|
||||||
Y = y;
|
Y = y;
|
||||||
Z = z;
|
Z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly PhysicsVector Zero = new PhysicsVector(0f, 0f, 0f);
|
public static readonly PhysicsVector Zero = new PhysicsVector(0f, 0f, 0f);
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
|
|
@ -1025,7 +1025,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (flying)
|
if (flying)
|
||||||
{
|
{
|
||||||
vec.Z = (_target_velocity.Z - vel.Z) * (PID_D);
|
vec.Z = (_target_velocity.Z - vel.Z) * (PID_D);
|
||||||
|
@ -1044,7 +1043,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
vec.Z += (target_altitude - _position.Z) * PID_P * 5.0f;
|
vec.Z += (target_altitude - _position.Z) * PID_P * 5.0f;
|
||||||
}
|
}
|
||||||
// end add Kitto Flora
|
// end add Kitto Flora
|
||||||
|
|
||||||
}
|
}
|
||||||
if (PhysicsVector.isFinite(vec))
|
if (PhysicsVector.isFinite(vec))
|
||||||
{
|
{
|
||||||
|
@ -1080,8 +1078,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
_parent_scene.geom_name_map.Remove(Shell);
|
_parent_scene.geom_name_map.Remove(Shell);
|
||||||
Shell = IntPtr.Zero;
|
Shell = IntPtr.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace OpenSim.Region.Physics.POSPlugin
|
||||||
private PhysicsVector _acceleration;
|
private PhysicsVector _acceleration;
|
||||||
private PhysicsVector m_rotationalVelocity = PhysicsVector.Zero;
|
private PhysicsVector m_rotationalVelocity = PhysicsVector.Zero;
|
||||||
private bool flying;
|
private bool flying;
|
||||||
private bool iscolliding;
|
private bool isColliding;
|
||||||
|
|
||||||
public POSCharacter()
|
public POSCharacter()
|
||||||
{
|
{
|
||||||
|
@ -116,8 +116,8 @@ namespace OpenSim.Region.Physics.POSPlugin
|
||||||
|
|
||||||
public override bool IsColliding
|
public override bool IsColliding
|
||||||
{
|
{
|
||||||
get { return iscolliding; }
|
get { return isColliding; }
|
||||||
set { iscolliding = value; }
|
set { isColliding = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CollidingGround
|
public override bool CollidingGround
|
||||||
|
|
|
@ -113,20 +113,16 @@ namespace OpenSim.Region.Physics.POSPlugin
|
||||||
c.Position.Z - p.Position.Z) * Quaternion.Inverse(p.Orientation);
|
c.Position.Z - p.Position.Z) * Quaternion.Inverse(p.Orientation);
|
||||||
Vector3 avatarSize = new Vector3(c.Size.X, c.Size.Y, c.Size.Z) * Quaternion.Inverse(p.Orientation);
|
Vector3 avatarSize = new Vector3(c.Size.X, c.Size.Y, c.Size.Z) * Quaternion.Inverse(p.Orientation);
|
||||||
|
|
||||||
if (Math.Abs(rotatedPos.X) >= (p.Size.X*0.5 + Math.Abs(avatarSize.X)) ||
|
return (Math.Abs(rotatedPos.X) < (p.Size.X*0.5 + Math.Abs(avatarSize.X)) &&
|
||||||
Math.Abs(rotatedPos.Y) >= (p.Size.Y*0.5 + Math.Abs(avatarSize.Y)) ||
|
Math.Abs(rotatedPos.Y) < (p.Size.Y*0.5 + Math.Abs(avatarSize.Y)) &&
|
||||||
Math.Abs(rotatedPos.Z) >= (p.Size.Z*0.5 + Math.Abs(avatarSize.Z)))
|
Math.Abs(rotatedPos.Z) < (p.Size.Z*0.5 + Math.Abs(avatarSize.Z)));
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool isCollidingWithPrim(POSCharacter c)
|
private bool isCollidingWithPrim(POSCharacter c)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _prims.Count; ++i)
|
foreach (POSPrim p in _prims)
|
||||||
{
|
{
|
||||||
if (isColliding(c, _prims[i]))
|
if (isColliding(c, p))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1978,7 +1978,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
|
return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LSL_Rotation GetPartRot( SceneObjectPart part )
|
private LSL_Rotation GetPartRot(SceneObjectPart part)
|
||||||
{
|
{
|
||||||
Quaternion q;
|
Quaternion q;
|
||||||
if (part.LinkNum == 0 || part.LinkNum == 1) // unlinked or root prim
|
if (part.LinkNum == 0 || part.LinkNum == 1) // unlinked or root prim
|
||||||
|
@ -1987,10 +1987,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
ScenePresence avatar = World.GetScenePresence(part.AttachedAvatar);
|
ScenePresence avatar = World.GetScenePresence(part.AttachedAvatar);
|
||||||
if (avatar != null)
|
if (avatar != null)
|
||||||
|
{
|
||||||
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
||||||
q = avatar.CameraRotation; // Mouselook
|
q = avatar.CameraRotation; // Mouselook
|
||||||
else
|
else
|
||||||
q = avatar.Rotation; // Currently infrequently updated so may be inaccurate
|
q = avatar.Rotation; // Currently infrequently updated so may be inaccurate
|
||||||
|
}
|
||||||
else
|
else
|
||||||
q = part.ParentGroup.GroupRotation; // Likely never get here but just in case
|
q = part.ParentGroup.GroupRotation; // Likely never get here but just in case
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,12 +31,14 @@ using System.Collections.Generic;
|
||||||
using System.Runtime.Remoting.Lifetime;
|
using System.Runtime.Remoting.Lifetime;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Threading;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenSim;
|
using OpenSim;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
|
using OpenSim.Region.CoreModules.Avatar.NPC;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.Framework.Scenes.Hypergrid;
|
using OpenSim.Region.Framework.Scenes.Hypergrid;
|
||||||
|
@ -831,6 +833,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return drawList;
|
return drawList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string osDrawFilledPolygon(string drawList, LSL_List x, LSL_List y)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.None, "osDrawFilledPolygon");
|
||||||
|
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
if (x.Length != y.Length || x.Length < 3)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
drawList += "FillPolygon " + x.GetLSLStringItem(0) + "," + y.GetLSLStringItem(0);
|
||||||
|
for (int i = 1; i < x.Length; i++)
|
||||||
|
{
|
||||||
|
drawList += "," + x.GetLSLStringItem(i) + "," + y.GetLSLStringItem(i);
|
||||||
|
}
|
||||||
|
drawList += "; ";
|
||||||
|
return drawList;
|
||||||
|
}
|
||||||
|
|
||||||
public string osSetFontSize(string drawList, int fontSize)
|
public string osSetFontSize(string drawList, int fontSize)
|
||||||
{
|
{
|
||||||
CheckThreatLevel(ThreatLevel.None, "osSetFontSize");
|
CheckThreatLevel(ThreatLevel.None, "osSetFontSize");
|
||||||
|
@ -858,6 +879,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return drawList;
|
return drawList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string osSetPenCap(string drawList, string direction, string type)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.None, "osSetPenColour");
|
||||||
|
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
drawList += "PenCap " + direction + "," + type + "; ";
|
||||||
|
return drawList;
|
||||||
|
}
|
||||||
|
|
||||||
public string osDrawImage(string drawList, int width, int height, string imageUrl)
|
public string osDrawImage(string drawList, int width, int height, string imageUrl)
|
||||||
{
|
{
|
||||||
CheckThreatLevel(ThreatLevel.None, "osDrawImage");
|
CheckThreatLevel(ThreatLevel.None, "osDrawImage");
|
||||||
|
@ -1762,5 +1792,57 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, LSL_Key cloneFrom)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osNpcCreate");
|
||||||
|
//QueueUserWorkItem
|
||||||
|
|
||||||
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
|
if (module != null)
|
||||||
|
{
|
||||||
|
UUID x = module.CreateNPC(firstname,
|
||||||
|
lastname,
|
||||||
|
new Vector3((float) position.x, (float) position.y, (float) position.z),
|
||||||
|
World,
|
||||||
|
new UUID(cloneFrom));
|
||||||
|
|
||||||
|
return new LSL_Key(x.ToString());
|
||||||
|
}
|
||||||
|
return new LSL_Key(UUID.Zero.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcMoveTo(LSL_Key npc, LSL_Vector position)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osNpcMoveTo");
|
||||||
|
|
||||||
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
|
if (module != null)
|
||||||
|
{
|
||||||
|
Vector3 pos = new Vector3((float) position.x, (float) position.y, (float) position.z);
|
||||||
|
module.Autopilot(new UUID(npc.m_string), World, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcSay(LSL_Key npc, string message)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osNpcSay");
|
||||||
|
|
||||||
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
|
if (module != null)
|
||||||
|
{
|
||||||
|
module.Say(new UUID(npc.m_string), World, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcRemove(LSL_Key npc)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osNpcRemove");
|
||||||
|
|
||||||
|
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||||
|
if (module != null)
|
||||||
|
{
|
||||||
|
module.DeleteNPC(new UUID(npc.m_string), World);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,9 +97,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
string osDrawEllipse(string drawList, int width, int height);
|
string osDrawEllipse(string drawList, int width, int height);
|
||||||
string osDrawRectangle(string drawList, int width, int height);
|
string osDrawRectangle(string drawList, int width, int height);
|
||||||
string osDrawFilledRectangle(string drawList, int width, int height);
|
string osDrawFilledRectangle(string drawList, int width, int height);
|
||||||
|
string osDrawFilledPolygon(string drawList, LSL_List x, LSL_List y);
|
||||||
string osSetFontSize(string drawList, int fontSize);
|
string osSetFontSize(string drawList, int fontSize);
|
||||||
string osSetPenSize(string drawList, int penSize);
|
string osSetPenSize(string drawList, int penSize);
|
||||||
string osSetPenColour(string drawList, string colour);
|
string osSetPenColour(string drawList, string colour);
|
||||||
|
string osSetPenCap(string drawList, string direction, string type);
|
||||||
string osDrawImage(string drawList, int width, int height, string imageUrl);
|
string osDrawImage(string drawList, int width, int height, string imageUrl);
|
||||||
vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize);
|
vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize);
|
||||||
void osSetStateEvents(int events);
|
void osSetStateEvents(int events);
|
||||||
|
@ -149,5 +151,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
|
|
||||||
LSL_List osGetLinkPrimitiveParams(int linknumber, LSL_List rules);
|
LSL_List osGetLinkPrimitiveParams(int linknumber, LSL_List rules);
|
||||||
|
|
||||||
|
|
||||||
|
key osNpcCreate(string user, string name, vector position, key cloneFrom);
|
||||||
|
void osNpcMoveTo(key npc, vector position);
|
||||||
|
void osNpcSay(key npc, string message);
|
||||||
|
void osNpcRemove(key npc);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,6 +267,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
return m_OSSL_Functions.osDrawFilledRectangle(drawList, width, height);
|
return m_OSSL_Functions.osDrawFilledRectangle(drawList, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string osDrawFilledPolygon(string drawList, LSL_List x, LSL_List y)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osDrawFilledPolygon(drawList, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
public string osSetFontSize(string drawList, int fontSize)
|
public string osSetFontSize(string drawList, int fontSize)
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osSetFontSize(drawList, fontSize);
|
return m_OSSL_Functions.osSetFontSize(drawList, fontSize);
|
||||||
|
@ -277,6 +282,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
return m_OSSL_Functions.osSetPenSize(drawList, penSize);
|
return m_OSSL_Functions.osSetPenSize(drawList, penSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string osSetPenCap(string drawList, string direction, string type)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osSetPenCap(drawList, direction, type);
|
||||||
|
}
|
||||||
|
|
||||||
public string osSetPenColour(string drawList, string colour)
|
public string osSetPenColour(string drawList, string colour)
|
||||||
{
|
{
|
||||||
return m_OSSL_Functions.osSetPenColour(drawList, colour);
|
return m_OSSL_Functions.osSetPenColour(drawList, colour);
|
||||||
|
@ -393,6 +403,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
return m_OSSL_Functions.osGetLinkPrimitiveParams(linknumber, rules);
|
return m_OSSL_Functions.osGetLinkPrimitiveParams(linknumber, rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public key osNpcCreate(string user, string name, vector position, key cloneFrom)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osNpcCreate(user, name, position, cloneFrom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcMoveTo(key npc, vector position)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osNpcMoveTo(npc, position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcSay(key npc, string message)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osNpcSay(npc, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osNpcRemove(key npc)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osNpcRemove(npc);
|
||||||
|
}
|
||||||
|
|
||||||
public OSSLPrim Prim;
|
public OSSLPrim Prim;
|
||||||
|
|
||||||
|
|
|
@ -439,6 +439,13 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
|
|
||||||
set {m_data = value; }
|
set {m_data = value; }
|
||||||
}
|
}
|
||||||
|
// Function to obtain LSL type from an index. This is needed
|
||||||
|
// because LSL lists allow for multiple types, and safely
|
||||||
|
// iterating in them requires a type check.
|
||||||
|
public Type GetLSLListItemType(int itemIndex)
|
||||||
|
{
|
||||||
|
return m_data[itemIndex].GetType();
|
||||||
|
}
|
||||||
|
|
||||||
// Member functions to obtain item as specific types.
|
// Member functions to obtain item as specific types.
|
||||||
// For cases where implicit conversions would apply if items
|
// For cases where implicit conversions would apply if items
|
||||||
|
@ -465,6 +472,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
{
|
{
|
||||||
return new LSL_Types.LSLFloat((Double)m_data[itemIndex]);
|
return new LSL_Types.LSLFloat((Double)m_data[itemIndex]);
|
||||||
}
|
}
|
||||||
|
else if (m_data[itemIndex] is LSL_Types.LSLString)
|
||||||
|
{
|
||||||
|
return new LSL_Types.LSLFloat(m_data[itemIndex].ToString());
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (LSL_Types.LSLFloat)m_data[itemIndex];
|
return (LSL_Types.LSLFloat)m_data[itemIndex];
|
||||||
|
@ -481,6 +492,14 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
{
|
{
|
||||||
return new LSL_Types.LSLString((string)m_data[itemIndex]);
|
return new LSL_Types.LSLString((string)m_data[itemIndex]);
|
||||||
}
|
}
|
||||||
|
else if (m_data[itemIndex] is LSL_Types.LSLFloat)
|
||||||
|
{
|
||||||
|
return new LSL_Types.LSLString((LSLFloat)m_data[itemIndex]);
|
||||||
|
}
|
||||||
|
else if (m_data[itemIndex] is LSL_Types.LSLInteger)
|
||||||
|
{
|
||||||
|
return new LSL_Types.LSLString((LSLInteger)m_data[itemIndex]);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (LSL_Types.LSLString)m_data[itemIndex];
|
return (LSL_Types.LSLString)m_data[itemIndex];
|
||||||
|
@ -491,8 +510,12 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
{
|
{
|
||||||
if (m_data[itemIndex] is LSL_Types.LSLInteger)
|
if (m_data[itemIndex] is LSL_Types.LSLInteger)
|
||||||
return (LSL_Types.LSLInteger)m_data[itemIndex];
|
return (LSL_Types.LSLInteger)m_data[itemIndex];
|
||||||
|
if (m_data[itemIndex] is LSL_Types.LSLFloat)
|
||||||
|
return new LSLInteger((int)m_data[itemIndex]);
|
||||||
else if (m_data[itemIndex] is Int32)
|
else if (m_data[itemIndex] is Int32)
|
||||||
return new LSLInteger((int)m_data[itemIndex]);
|
return new LSLInteger((int)m_data[itemIndex]);
|
||||||
|
else if (m_data[itemIndex] is LSL_Types.LSLString)
|
||||||
|
return new LSLInteger((string)m_data[itemIndex]);
|
||||||
else
|
else
|
||||||
throw new InvalidCastException();
|
throw new InvalidCastException();
|
||||||
}
|
}
|
||||||
|
@ -1331,6 +1354,12 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
m_string=s;
|
m_string=s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSLString(LSLInteger i)
|
||||||
|
{
|
||||||
|
string s = String.Format("{0}", i);
|
||||||
|
m_string = s;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Operators
|
#region Operators
|
||||||
|
|
|
@ -104,6 +104,10 @@ namespace OpenSim.Server.Handlers.Inventory
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
||||||
"POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession));
|
"POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession));
|
||||||
|
|
||||||
|
m_httpServer.AddStreamHandler(
|
||||||
|
new RestDeserialiseSecureHandler<List<Guid>, bool>(
|
||||||
|
"POST", "/DeleteFolders/", DeleteFolders, CheckAuthSession));
|
||||||
|
|
||||||
m_httpServer.AddStreamHandler(
|
m_httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<List<Guid>, bool>(
|
new RestDeserialiseSecureHandler<List<Guid>, bool>(
|
||||||
"POST", "/DeleteItem/", DeleteItems, CheckAuthSession));
|
"POST", "/DeleteItem/", DeleteItems, CheckAuthSession));
|
||||||
|
@ -144,6 +148,9 @@ namespace OpenSim.Server.Handlers.Inventory
|
||||||
new RestDeserialiseSecureHandler<List<InventoryItemBase>, bool>(
|
new RestDeserialiseSecureHandler<List<InventoryItemBase>, bool>(
|
||||||
"POST", "/MoveItems/", MoveItems, CheckAuthSession));
|
"POST", "/MoveItems/", MoveItems, CheckAuthSession));
|
||||||
|
|
||||||
|
m_httpServer.AddStreamHandler(new InventoryServerMoveItemsHandler(m_InventoryService));
|
||||||
|
|
||||||
|
|
||||||
// for persistent active gestures
|
// for persistent active gestures
|
||||||
m_httpServer.AddStreamHandler(
|
m_httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseTrustedHandler<Guid, List<InventoryItemBase>>
|
new RestDeserialiseTrustedHandler<Guid, List<InventoryItemBase>>
|
||||||
|
@ -251,6 +258,15 @@ namespace OpenSim.Server.Handlers.Inventory
|
||||||
return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID);
|
return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(List<Guid> items)
|
||||||
|
{
|
||||||
|
List<UUID> uuids = new List<UUID>();
|
||||||
|
foreach (Guid g in items)
|
||||||
|
uuids.Add(new UUID(g));
|
||||||
|
// oops we lost the user info here. Bad bad handlers
|
||||||
|
return m_InventoryService.DeleteFolders(UUID.Zero, uuids);
|
||||||
|
}
|
||||||
|
|
||||||
public bool DeleteItems(List<Guid> items)
|
public bool DeleteItems(List<Guid> items)
|
||||||
{
|
{
|
||||||
List<UUID> uuids = new List<UUID>();
|
List<UUID> uuids = new List<UUID>();
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSimulator Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using Nini.Config;
|
||||||
|
using log4net;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
using OpenSim.Server.Base;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Server.Handlers.Inventory
|
||||||
|
{
|
||||||
|
public class InventoryServerMoveItemsHandler : BaseStreamHandler
|
||||||
|
{
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private IInventoryService m_InventoryService;
|
||||||
|
|
||||||
|
public InventoryServerMoveItemsHandler(IInventoryService service) :
|
||||||
|
base("PUT", "/inventory")
|
||||||
|
{
|
||||||
|
m_InventoryService = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override byte[] Handle(string path, Stream request,
|
||||||
|
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||||
|
{
|
||||||
|
XmlSerializer xs = new XmlSerializer(typeof (List<InventoryItemBase>));
|
||||||
|
List<InventoryItemBase> items = (List<InventoryItemBase>)xs.Deserialize(request);
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
string[] p = SplitParams(path);
|
||||||
|
|
||||||
|
if (p.Length > 0)
|
||||||
|
{
|
||||||
|
UUID ownerID = UUID.Zero;
|
||||||
|
UUID.TryParse(p[0], out ownerID);
|
||||||
|
result = m_InventoryService.MoveItems(ownerID, items);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_log.WarnFormat("[MOVEITEMS HANDLER]: ownerID not provided in request. Unable to serve.");
|
||||||
|
|
||||||
|
xs = new XmlSerializer(typeof(bool));
|
||||||
|
return ServerUtils.SerializeResult(xs, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -201,6 +201,19 @@ namespace OpenSim.Services.Connectors.Inventory
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(string id, List<UUID> folders, UUID sessionID)
|
||||||
|
{
|
||||||
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.DeleteFolders(userID, folders, sessionID);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
|
|
|
@ -88,6 +88,11 @@ namespace OpenSim.Services.Connectors
|
||||||
/// <returns>true if the folder was successfully moved</returns>
|
/// <returns>true if the folder was successfully moved</returns>
|
||||||
bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id);
|
bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete a list of inventory folders (from trash)
|
||||||
|
/// </summary>
|
||||||
|
bool DeleteFolders(string userID, List<UUID> folders, UUID session_id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Purge an inventory folder of all its items and subfolders.
|
/// Purge an inventory folder of all its items and subfolders.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -229,6 +229,11 @@ namespace OpenSim.Services.Connectors
|
||||||
return SynchronousRestSessionObjectPoster<Guid, InventoryCollection>.BeginPostObject(
|
return SynchronousRestSessionObjectPoster<Guid, InventoryCollection>.BeginPostObject(
|
||||||
"POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString());
|
"POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString());
|
||||||
}
|
}
|
||||||
|
catch (TimeoutException e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation to {0} timed out {0} {1}.", m_ServerURI,
|
||||||
|
e.Source, e.Message);
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
// Maybe we're talking to an old inventory server. Try this other thing.
|
// Maybe we're talking to an old inventory server. Try this other thing.
|
||||||
|
@ -308,6 +313,25 @@ namespace OpenSim.Services.Connectors
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(string userID, List<UUID> folderIDs, UUID sessionID)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
List<Guid> guids = new List<Guid>();
|
||||||
|
foreach (UUID u in folderIDs)
|
||||||
|
guids.Add(u.Guid);
|
||||||
|
return SynchronousRestSessionObjectPoster<List<Guid>, bool>.BeginPostObject(
|
||||||
|
"POST", m_ServerURI + "/DeleteFolders/", guids, sessionID.ToString(), userID);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory folders operation failed, {0} {1}",
|
||||||
|
e.Source, e.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -397,13 +421,28 @@ namespace OpenSim.Services.Connectors
|
||||||
|
|
||||||
private void MoveItemsAsync(string userID, List<InventoryItemBase> items, UUID sessionID)
|
private void MoveItemsAsync(string userID, List<InventoryItemBase> items, UUID sessionID)
|
||||||
{
|
{
|
||||||
|
if (items == null)
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[INVENTORY CONNECTOR]: request to move items got a null list.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SynchronousRestSessionObjectPoster<List<InventoryItemBase>, bool>.BeginPostObject(
|
//SynchronousRestSessionObjectPoster<List<InventoryItemBase>, bool>.BeginPostObject(
|
||||||
"POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString());
|
// "POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString());
|
||||||
|
|
||||||
|
//// Success
|
||||||
|
//return;
|
||||||
|
string uri = m_ServerURI + "/inventory/" + userID;
|
||||||
|
if (SynchronousRestObjectRequester.
|
||||||
|
MakeRequest<List<InventoryItemBase>, bool>("PUT", uri, items))
|
||||||
|
m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster succeeded {1}", items.Count, uri);
|
||||||
|
else
|
||||||
|
m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster failed {1}", items.Count, uri); ;
|
||||||
|
|
||||||
// Success
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -466,12 +505,12 @@ namespace OpenSim.Services.Connectors
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase item, UUID sessionID)
|
public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return SynchronousRestSessionObjectPoster<InventoryFolderBase, InventoryFolderBase>.BeginPostObject(
|
return SynchronousRestSessionObjectPoster<InventoryFolderBase, InventoryFolderBase>.BeginPostObject(
|
||||||
"POST", m_ServerURI + "/QueryFolder/", item, sessionID.ToString(), item.Owner.ToString());
|
"POST", m_ServerURI + "/QueryFolder/", folder, sessionID.ToString(), userID);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -136,6 +136,12 @@ namespace OpenSim.Services.Connectors
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -121,6 +121,14 @@ namespace OpenSim.Services.Interfaces
|
||||||
/// <returns>true if the folder was successfully moved</returns>
|
/// <returns>true if the folder was successfully moved</returns>
|
||||||
bool MoveFolder(InventoryFolderBase folder);
|
bool MoveFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete an item from the user's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
/// <returns>true if the item was successfully deleted</returns>
|
||||||
|
//bool DeleteItem(InventoryItemBase item);
|
||||||
|
bool DeleteFolders(UUID userID, List<UUID> folderIDs);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Purge an inventory folder of all its items and subfolders.
|
/// Purge an inventory folder of all its items and subfolders.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -235,8 +235,6 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
m_log.Info("[INVENTORY SERVICE]: Processing request for folder " + folderID);
|
|
||||||
|
|
||||||
// Uncomment me to simulate a slow responding inventory server
|
// Uncomment me to simulate a slow responding inventory server
|
||||||
//Thread.Sleep(16000);
|
//Thread.Sleep(16000);
|
||||||
|
|
||||||
|
@ -249,7 +247,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
invCollection.Folders = folders;
|
invCollection.Folders = folders;
|
||||||
invCollection.Items = items;
|
invCollection.Items = items;
|
||||||
|
|
||||||
m_log.DebugFormat("[INVENTORY SERVICE]: Found {0} items and {1} folders", items.Count, folders.Count);
|
m_log.DebugFormat("[INVENTORY SERVICE]: Found {0} items and {1} folders in folder {2}", items.Count, folders.Count, folderID);
|
||||||
|
|
||||||
return invCollection;
|
return invCollection;
|
||||||
}
|
}
|
||||||
|
@ -427,15 +425,27 @@ namespace OpenSim.Services.InventoryService
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual InventoryFolderBase GetFolder(InventoryFolderBase item)
|
public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
InventoryFolderBase result = m_Database.getInventoryFolder(item.ID);
|
InventoryFolderBase result = m_Database.getInventoryFolder(folder.ID);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
m_log.DebugFormat("[INVENTORY SERVICE]: GetFolder failed to find folder {0}", folder.ID);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
|
||||||
|
{
|
||||||
|
foreach (UUID id in folderIDs)
|
||||||
|
{
|
||||||
|
InventoryFolderBase folder = new InventoryFolderBase(id, ownerID);
|
||||||
|
PurgeFolder(folder);
|
||||||
|
m_Database.deleteInventoryFolder(id);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Purge a folder of all items items and subfolders.
|
/// Purge a folder of all items items and subfolders.
|
||||||
///
|
///
|
||||||
|
|
|
@ -128,6 +128,11 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFolders(UUID ownerID, List<UUID> ids)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
||||||
<Addin id="OpenSim.Grid.AssetInventoryServer" isroot="true" version="0.1">
|
|
||||||
<Runtime>
|
|
||||||
<Import assembly="OpenSim.Grid.AssetInventoryServer.exe" />
|
|
||||||
<Import assembly="OpenSim.Framework.dll" />
|
|
||||||
</Runtime>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/Frontend">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAssetInventoryServerPlugin" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/AssetStorageProvider">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/InventoryStorageProvider">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IInventoryStorageProvider" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/AuthenticationProvider">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAuthenticationProvider" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/AuthorizationProvider">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAuthorizationProvider" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/MetricsProvider">
|
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IMetricsProvider" />
|
|
||||||
</ExtensionPoint>
|
|
||||||
</Addin>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<configuration>
|
|
||||||
<configSections>
|
|
||||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
|
||||||
</configSections>
|
|
||||||
<appSettings>
|
|
||||||
</appSettings>
|
|
||||||
<log4net>
|
|
||||||
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
|
||||||
<layout type="log4net.Layout.PatternLayout">
|
|
||||||
<conversionPattern value="%date{HH:mm:ss} - %message%newline" />
|
|
||||||
</layout>
|
|
||||||
</appender>
|
|
||||||
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
|
||||||
<file value="OpenSim.Grid.AssetInventoryServer.log" />
|
|
||||||
<appendToFile value="true" />
|
|
||||||
<layout type="log4net.Layout.PatternLayout">
|
|
||||||
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
|
||||||
</layout>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<!-- if you'd like to know what NHibernate is doing more set value="DEBUG" -->
|
|
||||||
<logger name="NHibernate" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="NHibernateFileLog"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<root>
|
|
||||||
<level value="DEBUG" />
|
|
||||||
<appender-ref ref="Console" />
|
|
||||||
<appender-ref ref="LogFileAppender" />
|
|
||||||
</root>
|
|
||||||
</log4net>
|
|
||||||
</configuration>
|
|
|
@ -1014,6 +1014,7 @@
|
||||||
<Reference name="OpenSim.Framework.Statistics"/>
|
<Reference name="OpenSim.Framework.Statistics"/>
|
||||||
<Reference name="OpenSim.Grid.Framework"/>
|
<Reference name="OpenSim.Grid.Framework"/>
|
||||||
<Reference name="OpenSim.Grid.Communications.OGS1"/>
|
<Reference name="OpenSim.Grid.Communications.OGS1"/>
|
||||||
|
<Reference name="OpenMetaverse.dll"/>
|
||||||
<Reference name="OpenMetaverseTypes.dll"/>
|
<Reference name="OpenMetaverseTypes.dll"/>
|
||||||
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
||||||
<Reference name="XMLRPC.dll"/>
|
<Reference name="XMLRPC.dll"/>
|
||||||
|
@ -1055,6 +1056,7 @@
|
||||||
<Reference name="OpenSim.Grid.UserServer.Modules"/>
|
<Reference name="OpenSim.Grid.UserServer.Modules"/>
|
||||||
<Reference name="OpenMetaverseTypes.dll"/>
|
<Reference name="OpenMetaverseTypes.dll"/>
|
||||||
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
||||||
|
<Reference name="OpenMetaverse.dll"/>
|
||||||
<Reference name="XMLRPC.dll"/>
|
<Reference name="XMLRPC.dll"/>
|
||||||
<Reference name="log4net.dll"/>
|
<Reference name="log4net.dll"/>
|
||||||
<Reference name="Nini.dll"/>
|
<Reference name="Nini.dll"/>
|
||||||
|
|
Loading…
Reference in New Issue