Update svn properties, add copyright header, formatting cleanup.
parent
c266df0dfe
commit
54ccca1e2c
|
@ -227,7 +227,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
// them easy to reach from anywhere in the assembly.
|
// them easy to reach from anywhere in the assembly.
|
||||||
|
|
||||||
Rest.main = openSim;
|
Rest.main = openSim;
|
||||||
if(Rest.main == null)
|
if (Rest.main == null)
|
||||||
throw new Exception("OpenSim base pointer is null");
|
throw new Exception("OpenSim base pointer is null");
|
||||||
|
|
||||||
Rest.Plugin = this;
|
Rest.Plugin = this;
|
||||||
|
|
|
@ -503,7 +503,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
req.Params = transferRequest.TransferInfo.Params;
|
req.Params = transferRequest.TransferInfo.Params;
|
||||||
req.AssetInf = new AssetInfo(asset);
|
req.AssetInf = new AssetInfo(asset);
|
||||||
req.NumPackets = CalculateNumPackets(asset.Data);
|
req.NumPackets = CalculateNumPackets(asset.Data);
|
||||||
lock(AssetRequests) AssetRequests.Add(req);
|
lock (AssetRequests) AssetRequests.Add(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -526,7 +526,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
for (int i = 0; i < num; i++)
|
for (int i = 0; i < num; i++)
|
||||||
{
|
{
|
||||||
lock(AssetRequests)
|
lock (AssetRequests)
|
||||||
{
|
{
|
||||||
req = AssetRequests[0];
|
req = AssetRequests[0];
|
||||||
AssetRequests.RemoveAt(0);
|
AssetRequests.RemoveAt(0);
|
||||||
|
|
|
@ -1,13 +1,38 @@
|
||||||
using System;
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
using OpenMetaverse;
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
namespace OpenSim.Framework.Communications
|
* modification, are permitted provided that the following conditions are met:
|
||||||
{
|
* * Redistributions of source code must retain the above copyright
|
||||||
public interface IAuthentication
|
* notice, this list of conditions and the following disclaimer.
|
||||||
{
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
string GetNewKey(string url, UUID userID, UUID authToken);
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
bool VerifyKey(UUID userID, string key);
|
* 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 System;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework.Communications
|
||||||
|
{
|
||||||
|
public interface IAuthentication
|
||||||
|
{
|
||||||
|
string GetNewKey(string url, UUID userID, UUID authToken);
|
||||||
|
bool VerifyKey(UUID userID, string key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,172 +1,172 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Services
|
namespace OpenSim.Framework.Communications.Services
|
||||||
{
|
{
|
||||||
public class GridInfoService
|
public class GridInfoService
|
||||||
{
|
{
|
||||||
private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private Hashtable _info = new Hashtable();
|
private Hashtable _info = new Hashtable();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Instantiate a GridInfoService object.
|
/// Instantiate a GridInfoService object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="configPath">path to config path containing
|
/// <param name="configPath">path to config path containing
|
||||||
/// grid information</param>
|
/// grid information</param>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// GridInfoService uses the [GridInfo] section of the
|
/// GridInfoService uses the [GridInfo] section of the
|
||||||
/// standard OpenSim.ini file --- which is not optimal, but
|
/// standard OpenSim.ini file --- which is not optimal, but
|
||||||
/// anything else requires a general redesign of the config
|
/// anything else requires a general redesign of the config
|
||||||
/// system.
|
/// system.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public GridInfoService(IConfigSource configSource)
|
public GridInfoService(IConfigSource configSource)
|
||||||
{
|
{
|
||||||
loadGridInfo(configSource);
|
loadGridInfo(configSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Default constructor, uses OpenSim.ini.
|
/// Default constructor, uses OpenSim.ini.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GridInfoService()
|
public GridInfoService()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IConfigSource configSource = new IniConfigSource(Path.Combine(Util.configDir(), "OpenSim.ini"));
|
IConfigSource configSource = new IniConfigSource(Path.Combine(Util.configDir(), "OpenSim.ini"));
|
||||||
loadGridInfo(configSource);
|
loadGridInfo(configSource);
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException)
|
catch (FileNotFoundException)
|
||||||
{
|
{
|
||||||
_log.Warn("[GridInfoService] no OpenSim.ini file found --- GridInfoServices WILL NOT BE AVAILABLE to your users");
|
_log.Warn("[GridInfoService] no OpenSim.ini file found --- GridInfoServices WILL NOT BE AVAILABLE to your users");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadGridInfo(IConfigSource configSource)
|
private void loadGridInfo(IConfigSource configSource)
|
||||||
{
|
{
|
||||||
_info["platform"] = "OpenSim";
|
_info["platform"] = "OpenSim";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IConfig startupCfg = configSource.Configs["Startup"];
|
IConfig startupCfg = configSource.Configs["Startup"];
|
||||||
IConfig gridCfg = configSource.Configs["GridInfo"];
|
IConfig gridCfg = configSource.Configs["GridInfo"];
|
||||||
IConfig netCfg = configSource.Configs["Network"];
|
IConfig netCfg = configSource.Configs["Network"];
|
||||||
|
|
||||||
bool grid = startupCfg.GetBoolean("gridmode", false);
|
bool grid = startupCfg.GetBoolean("gridmode", false);
|
||||||
|
|
||||||
if (grid)
|
if (grid)
|
||||||
_info["mode"] = "grid";
|
_info["mode"] = "grid";
|
||||||
else
|
else
|
||||||
_info["mode"] = "standalone";
|
_info["mode"] = "standalone";
|
||||||
|
|
||||||
|
|
||||||
if (null != gridCfg)
|
if (null != gridCfg)
|
||||||
{
|
{
|
||||||
foreach (string k in gridCfg.GetKeys())
|
foreach (string k in gridCfg.GetKeys())
|
||||||
{
|
{
|
||||||
_info[k] = gridCfg.GetString(k);
|
_info[k] = gridCfg.GetString(k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (null != netCfg)
|
else if (null != netCfg)
|
||||||
{
|
{
|
||||||
if (grid)
|
if (grid)
|
||||||
_info["login"]
|
_info["login"]
|
||||||
= netCfg.GetString(
|
= netCfg.GetString(
|
||||||
"user_server_url", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString());
|
"user_server_url", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString());
|
||||||
else
|
else
|
||||||
_info["login"]
|
_info["login"]
|
||||||
= String.Format(
|
= String.Format(
|
||||||
"http://127.0.0.1:{0}/",
|
"http://127.0.0.1:{0}/",
|
||||||
netCfg.GetString(
|
netCfg.GetString(
|
||||||
"http_listener_port", NetworkServersInfo.DefaultHttpListenerPort.ToString()));
|
"http_listener_port", NetworkServersInfo.DefaultHttpListenerPort.ToString()));
|
||||||
|
|
||||||
IssueWarning();
|
IssueWarning();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_info["login"] = "http://127.0.0.1:9000/";
|
_info["login"] = "http://127.0.0.1:9000/";
|
||||||
IssueWarning();
|
IssueWarning();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
_log.Debug("[GridInfoService] cannot get grid info from config source, using minimal defaults");
|
_log.Debug("[GridInfoService] cannot get grid info from config source, using minimal defaults");
|
||||||
}
|
}
|
||||||
_log.InfoFormat("[GridInfoService] Grid info service initialized with {0} keys", _info.Count);
|
_log.InfoFormat("[GridInfoService] Grid info service initialized with {0} keys", _info.Count);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void IssueWarning()
|
private void IssueWarning()
|
||||||
{
|
{
|
||||||
_log.Warn("[GridInfoService] found no [GridInfo] section in your OpenSim.ini");
|
_log.Warn("[GridInfoService] found no [GridInfo] section in your OpenSim.ini");
|
||||||
_log.Warn("[GridInfoService] trying to guess sensible defaults, you might want to provide better ones:");
|
_log.Warn("[GridInfoService] trying to guess sensible defaults, you might want to provide better ones:");
|
||||||
foreach (string k in _info.Keys)
|
foreach (string k in _info.Keys)
|
||||||
{
|
{
|
||||||
_log.WarnFormat("[GridInfoService] {0}: {1}", k, _info[k]);
|
_log.WarnFormat("[GridInfoService] {0}: {1}", k, _info[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlRpcResponse XmlRpcGridInfoMethod(XmlRpcRequest request)
|
public XmlRpcResponse XmlRpcGridInfoMethod(XmlRpcRequest request)
|
||||||
{
|
{
|
||||||
XmlRpcResponse response = new XmlRpcResponse();
|
XmlRpcResponse response = new XmlRpcResponse();
|
||||||
Hashtable responseData = new Hashtable();
|
Hashtable responseData = new Hashtable();
|
||||||
|
|
||||||
_log.Info("[GridInfo]: Request for grid info");
|
_log.Info("[GridInfo]: Request for grid info");
|
||||||
|
|
||||||
foreach (string k in _info.Keys)
|
foreach (string k in _info.Keys)
|
||||||
{
|
{
|
||||||
responseData[k] = _info[k];
|
responseData[k] = _info[k];
|
||||||
}
|
}
|
||||||
response.Value = responseData;
|
response.Value = responseData;
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string RestGetGridInfoMethod(string request, string path, string param,
|
public string RestGetGridInfoMethod(string request, string path, string param,
|
||||||
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.Append("<gridinfo>\n");
|
sb.Append("<gridinfo>\n");
|
||||||
foreach (string k in _info.Keys)
|
foreach (string k in _info.Keys)
|
||||||
{
|
{
|
||||||
sb.AppendFormat("<{0}>{1}</{0}>\n", k, _info[k]);
|
sb.AppendFormat("<{0}>{1}</{0}>\n", k, _info[k]);
|
||||||
}
|
}
|
||||||
sb.Append("</gridinfo>\n");
|
sb.Append("</gridinfo>\n");
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,224 +1,224 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Data;
|
using OpenSim.Data;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Communications.Services;
|
using OpenSim.Framework.Communications.Services;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Communications.Capabilities;
|
using OpenSim.Framework.Communications.Capabilities;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
|
||||||
namespace OpenSim.Grid.UserServer.Modules
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Hypergrid login service used in grid mode.
|
/// Hypergrid login service used in grid mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserLoginAuthService : HGLoginAuthService
|
public class UserLoginAuthService : HGLoginAuthService
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
public UserConfig m_config;
|
public UserConfig m_config;
|
||||||
private readonly IRegionProfileRouter m_regionProfileService;
|
private readonly IRegionProfileRouter m_regionProfileService;
|
||||||
|
|
||||||
protected BaseHttpServer m_httpServer;
|
protected BaseHttpServer m_httpServer;
|
||||||
|
|
||||||
public UserLoginAuthService(
|
public UserLoginAuthService(
|
||||||
UserManagerBase userManager, IInterServiceInventoryServices inventoryService,
|
UserManagerBase userManager, IInterServiceInventoryServices inventoryService,
|
||||||
LibraryRootFolder libraryRootFolder,
|
LibraryRootFolder libraryRootFolder,
|
||||||
UserConfig config, string welcomeMess, IRegionProfileRouter regionProfileService)
|
UserConfig config, string welcomeMess, IRegionProfileRouter regionProfileService)
|
||||||
: base(userManager, welcomeMess, inventoryService, null, true, libraryRootFolder, null)
|
: base(userManager, welcomeMess, inventoryService, null, true, libraryRootFolder, null)
|
||||||
{
|
{
|
||||||
m_config = config;
|
m_config = config;
|
||||||
m_defaultHomeX = m_config.DefaultX;
|
m_defaultHomeX = m_config.DefaultX;
|
||||||
m_defaultHomeY = m_config.DefaultY;
|
m_defaultHomeY = m_config.DefaultY;
|
||||||
m_inventoryService = inventoryService;
|
m_inventoryService = inventoryService;
|
||||||
m_regionProfileService = regionProfileService;
|
m_regionProfileService = regionProfileService;
|
||||||
|
|
||||||
NetworkServersInfo serversinfo = new NetworkServersInfo(1000, 1000);
|
NetworkServersInfo serversinfo = new NetworkServersInfo(1000, 1000);
|
||||||
serversinfo.GridRecvKey = m_config.GridRecvKey;
|
serversinfo.GridRecvKey = m_config.GridRecvKey;
|
||||||
serversinfo.GridSendKey = m_config.GridSendKey;
|
serversinfo.GridSendKey = m_config.GridSendKey;
|
||||||
serversinfo.GridURL = m_config.GridServerURL.ToString();
|
serversinfo.GridURL = m_config.GridServerURL.ToString();
|
||||||
serversinfo.InventoryURL = m_config.InventoryUrl.ToString();
|
serversinfo.InventoryURL = m_config.InventoryUrl.ToString();
|
||||||
serversinfo.UserURL = m_config.AuthUrl.ToString();
|
serversinfo.UserURL = m_config.AuthUrl.ToString();
|
||||||
SetServersInfo(serversinfo);
|
SetServersInfo(serversinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterHandlers(BaseHttpServer httpServer)
|
public void RegisterHandlers(BaseHttpServer httpServer)
|
||||||
{
|
{
|
||||||
m_httpServer = httpServer;
|
m_httpServer = httpServer;
|
||||||
|
|
||||||
httpServer.AddXmlRPCHandler("hg_login", XmlRpcLoginMethod);
|
httpServer.AddXmlRPCHandler("hg_login", XmlRpcLoginMethod);
|
||||||
httpServer.AddXmlRPCHandler("hg_new_auth_key", XmlRpcGenerateKeyMethod);
|
httpServer.AddXmlRPCHandler("hg_new_auth_key", XmlRpcGenerateKeyMethod);
|
||||||
httpServer.AddXmlRPCHandler("hg_verify_auth_key", XmlRpcVerifyKeyMethod);
|
httpServer.AddXmlRPCHandler("hg_verify_auth_key", XmlRpcVerifyKeyMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void LogOffUser(UserProfileData theUser, string message)
|
public override void LogOffUser(UserProfileData theUser, string message)
|
||||||
{
|
{
|
||||||
RegionProfileData SimInfo;
|
RegionProfileData SimInfo;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SimInfo = m_regionProfileService.RequestSimProfileData(
|
SimInfo = m_regionProfileService.RequestSimProfileData(
|
||||||
theUser.CurrentAgent.Handle, m_config.GridServerURL,
|
theUser.CurrentAgent.Handle, m_config.GridServerURL,
|
||||||
m_config.GridSendKey, m_config.GridRecvKey);
|
m_config.GridSendKey, m_config.GridRecvKey);
|
||||||
|
|
||||||
if (SimInfo == null)
|
if (SimInfo == null)
|
||||||
{
|
{
|
||||||
m_log.Error("[GRID]: Region user was in isn't currently logged in");
|
m_log.Error("[GRID]: Region user was in isn't currently logged in");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
m_log.Error("[GRID]: Unable to look up region to log user off");
|
m_log.Error("[GRID]: Unable to look up region to log user off");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare notification
|
// Prepare notification
|
||||||
Hashtable SimParams = new Hashtable();
|
Hashtable SimParams = new Hashtable();
|
||||||
SimParams["agent_id"] = theUser.ID.ToString();
|
SimParams["agent_id"] = theUser.ID.ToString();
|
||||||
SimParams["region_secret"] = theUser.CurrentAgent.SecureSessionID.ToString();
|
SimParams["region_secret"] = theUser.CurrentAgent.SecureSessionID.ToString();
|
||||||
SimParams["region_secret2"] = SimInfo.regionSecret;
|
SimParams["region_secret2"] = SimInfo.regionSecret;
|
||||||
//m_log.Info(SimInfo.regionSecret);
|
//m_log.Info(SimInfo.regionSecret);
|
||||||
SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
|
SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
|
||||||
SimParams["message"] = message;
|
SimParams["message"] = message;
|
||||||
ArrayList SendParams = new ArrayList();
|
ArrayList SendParams = new ArrayList();
|
||||||
SendParams.Add(SimParams);
|
SendParams.Add(SimParams);
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
|
"[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
|
||||||
SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
|
SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
|
||||||
theUser.FirstName + " " + theUser.SurName);
|
theUser.FirstName + " " + theUser.SurName);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
|
XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
|
||||||
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
|
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
|
||||||
|
|
||||||
if (GridResp.IsFault)
|
if (GridResp.IsFault)
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
|
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
|
||||||
SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
|
SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
m_log.Error("[LOGIN]: Error telling region to logout user!");
|
m_log.Error("[LOGIN]: Error telling region to logout user!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare notification
|
// Prepare notification
|
||||||
SimParams = new Hashtable();
|
SimParams = new Hashtable();
|
||||||
SimParams["agent_id"] = theUser.ID.ToString();
|
SimParams["agent_id"] = theUser.ID.ToString();
|
||||||
SimParams["region_secret"] = SimInfo.regionSecret;
|
SimParams["region_secret"] = SimInfo.regionSecret;
|
||||||
//m_log.Info(SimInfo.regionSecret);
|
//m_log.Info(SimInfo.regionSecret);
|
||||||
SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
|
SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
|
||||||
SimParams["message"] = message;
|
SimParams["message"] = message;
|
||||||
SendParams = new ArrayList();
|
SendParams = new ArrayList();
|
||||||
SendParams.Add(SimParams);
|
SendParams.Add(SimParams);
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
|
"[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
|
||||||
SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
|
SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
|
||||||
theUser.FirstName + " " + theUser.SurName);
|
theUser.FirstName + " " + theUser.SurName);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
|
XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
|
||||||
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
|
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
|
||||||
|
|
||||||
if (GridResp.IsFault)
|
if (GridResp.IsFault)
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
|
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
|
||||||
SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
|
SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
m_log.Error("[LOGIN]: Error telling region to logout user!");
|
m_log.Error("[LOGIN]: Error telling region to logout user!");
|
||||||
}
|
}
|
||||||
//base.LogOffUser(theUser);
|
//base.LogOffUser(theUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override RegionInfo RequestClosestRegion(string region)
|
protected override RegionInfo RequestClosestRegion(string region)
|
||||||
{
|
{
|
||||||
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region,
|
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region,
|
||||||
m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey);
|
m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey);
|
||||||
|
|
||||||
if (profileData != null)
|
if (profileData != null)
|
||||||
{
|
{
|
||||||
return profileData.ToRegionInfo();
|
return profileData.ToRegionInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override RegionInfo GetRegionInfo(ulong homeRegionHandle)
|
protected override RegionInfo GetRegionInfo(ulong homeRegionHandle)
|
||||||
{
|
{
|
||||||
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle,
|
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle,
|
||||||
m_config.GridServerURL, m_config.GridSendKey,
|
m_config.GridServerURL, m_config.GridSendKey,
|
||||||
m_config.GridRecvKey);
|
m_config.GridRecvKey);
|
||||||
if (profileData != null)
|
if (profileData != null)
|
||||||
{
|
{
|
||||||
return profileData.ToRegionInfo();
|
return profileData.ToRegionInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override RegionInfo GetRegionInfo(UUID homeRegionId)
|
protected override RegionInfo GetRegionInfo(UUID homeRegionId)
|
||||||
{
|
{
|
||||||
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId,
|
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId,
|
||||||
m_config.GridServerURL, m_config.GridSendKey,
|
m_config.GridServerURL, m_config.GridSendKey,
|
||||||
m_config.GridRecvKey);
|
m_config.GridRecvKey);
|
||||||
if (profileData != null)
|
if (profileData != null)
|
||||||
{
|
{
|
||||||
return profileData.ToRegionInfo();
|
return profileData.ToRegionInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,7 +184,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
bool success = SynchronousRestObjectPoster.BeginPostObject<GridInstantMessage, bool>(
|
bool success = SynchronousRestObjectPoster.BeginPostObject<GridInstantMessage, bool>(
|
||||||
"POST", m_RestURL+"/SaveMessage/", im);
|
"POST", m_RestURL+"/SaveMessage/", im);
|
||||||
|
|
||||||
if(im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
|
if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
|
||||||
{
|
{
|
||||||
IClientAPI client = FindClient(new UUID(im.fromAgentID));
|
IClientAPI client = FindClient(new UUID(im.fromAgentID));
|
||||||
if (client == null)
|
if (client == null)
|
||||||
|
|
|
@ -1,165 +1,165 @@
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2008, Contributors. All rights reserved.
|
* Copyright (c) 2008, Contributors. All rights reserved.
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
* are permitted provided that the following conditions are met:
|
* are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
* * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
* this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
* and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the Organizations nor the names of Individual
|
* * Neither the name of the Organizations nor the names of Individual
|
||||||
* Contributors may be used to endorse or promote products derived from
|
* Contributors may be used to endorse or promote products derived from
|
||||||
* this software without specific prior written permission.
|
* this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
* 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
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
* 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
|
* 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
|
* 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
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Data;
|
using OpenSim.Data;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Communications.Services;
|
using OpenSim.Framework.Communications.Services;
|
||||||
using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
|
using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
|
||||||
using LLSDHelpers = OpenSim.Framework.Communications.Capabilities.LLSDHelpers;
|
using LLSDHelpers = OpenSim.Framework.Communications.Capabilities.LLSDHelpers;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Servers.Interfaces;
|
using OpenSim.Framework.Servers.Interfaces;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.CoreModules.Communications.REST;
|
using OpenSim.Region.CoreModules.Communications.REST;
|
||||||
|
|
||||||
using OpenMetaverse.StructuredData;
|
using OpenMetaverse.StructuredData;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.Hypergrid
|
namespace OpenSim.Region.CoreModules.Hypergrid
|
||||||
{
|
{
|
||||||
public class HGStandaloneInventoryModule : IRegionModule
|
public class HGStandaloneInventoryModule : IRegionModule
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
private static bool initialized = false;
|
private static bool initialized = false;
|
||||||
private static bool enabled = false;
|
private static bool enabled = false;
|
||||||
|
|
||||||
private bool m_doLookup = false;
|
private bool m_doLookup = false;
|
||||||
Scene m_scene;
|
Scene m_scene;
|
||||||
HGInventoryService m_inventoryService;
|
HGInventoryService m_inventoryService;
|
||||||
InventoryServiceBase m_inventoryBase;
|
InventoryServiceBase m_inventoryBase;
|
||||||
|
|
||||||
public bool DoLookup
|
public bool DoLookup
|
||||||
{
|
{
|
||||||
get { return m_doLookup; }
|
get { return m_doLookup; }
|
||||||
set { m_doLookup = value; }
|
set { m_doLookup = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IRegionModule interface
|
#region IRegionModule interface
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource config)
|
public void Initialise(Scene scene, IConfigSource config)
|
||||||
{
|
{
|
||||||
if (!initialized)
|
if (!initialized)
|
||||||
{
|
{
|
||||||
initialized = true;
|
initialized = true;
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
|
|
||||||
// This module is only on for standalones
|
// This module is only on for standalones
|
||||||
enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false);
|
enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
m_log.Info("[HGStandaloneInvModule]: Starting...");
|
m_log.Info("[HGStandaloneInvModule]: Starting...");
|
||||||
//m_inventoryService = new InventoryService(m_scene);
|
//m_inventoryService = new InventoryService(m_scene);
|
||||||
m_inventoryBase = (InventoryServiceBase)m_scene.CommsManager.SecureInventoryService;
|
m_inventoryBase = (InventoryServiceBase)m_scene.CommsManager.SecureInventoryService;
|
||||||
|
|
||||||
m_inventoryService = new HGInventoryService(m_inventoryBase,
|
m_inventoryService = new HGInventoryService(m_inventoryBase,
|
||||||
((AssetServerBase)m_scene.CommsManager.AssetCache.AssetServer).AssetProviderPlugin,
|
((AssetServerBase)m_scene.CommsManager.AssetCache.AssetServer).AssetProviderPlugin,
|
||||||
(UserManagerBase)m_scene.CommsManager.UserService, m_scene.CommsManager.HttpServer,
|
(UserManagerBase)m_scene.CommsManager.UserService, m_scene.CommsManager.HttpServer,
|
||||||
m_scene.CommsManager.NetworkServersInfo.InventoryURL);
|
m_scene.CommsManager.NetworkServersInfo.InventoryURL);
|
||||||
|
|
||||||
AddHttpHandlers(m_scene.CommsManager.HttpServer);
|
AddHttpHandlers(m_scene.CommsManager.HttpServer);
|
||||||
m_inventoryService.AddHttpHandlers();
|
m_inventoryService.AddHttpHandlers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
get { return "HGStandaloneInventoryModule"; }
|
get { return "HGStandaloneInventoryModule"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsSharedModule
|
public bool IsSharedModule
|
||||||
{
|
{
|
||||||
get { return true; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public virtual void AddHttpHandlers(IHttpServer httpServer)
|
public virtual void AddHttpHandlers(IHttpServer httpServer)
|
||||||
{
|
{
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<Guid, InventoryCollection>(
|
new RestDeserialiseSecureHandler<Guid, InventoryCollection>(
|
||||||
"POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession));
|
"POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
||||||
"POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession));
|
"POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
||||||
"POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession));
|
"POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
||||||
"POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession));
|
"POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
||||||
"POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession));
|
"POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
||||||
"POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession));
|
"POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession));
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
httpServer.AddStreamHandler(
|
||||||
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
||||||
"POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession));
|
"POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Check that the source of an inventory request for a particular agent is a current session belonging to
|
/// Check that the source of an inventory request for a particular agent is a current session belonging to
|
||||||
/// that agent.
|
/// that agent.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="session_id"></param>
|
/// <param name="session_id"></param>
|
||||||
/// <param name="avatar_id"></param>
|
/// <param name="avatar_id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool CheckAuthSession(string session_id, string avatar_id)
|
public bool CheckAuthSession(string session_id, string avatar_id)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,253 +1,253 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSimulator Project nor the
|
* * Neither the name of the OpenSimulator Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Communications.Services;
|
using OpenSim.Framework.Communications.Services;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Communications.Capabilities;
|
using OpenSim.Framework.Communications.Capabilities;
|
||||||
using OpenSim.Framework.Servers.Interfaces;
|
using OpenSim.Framework.Servers.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.Hypergrid
|
namespace OpenSim.Region.CoreModules.Hypergrid
|
||||||
{
|
{
|
||||||
public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector
|
public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
protected List<Scene> m_scenes = new List<Scene>();
|
protected List<Scene> m_scenes = new List<Scene>();
|
||||||
protected Scene m_firstScene;
|
protected Scene m_firstScene;
|
||||||
|
|
||||||
protected bool m_enabled = false; // Module is only enabled if running in standalone mode
|
protected bool m_enabled = false; // Module is only enabled if running in standalone mode
|
||||||
|
|
||||||
|
|
||||||
public bool RegionLoginsEnabled
|
public bool RegionLoginsEnabled
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (m_firstScene != null)
|
if (m_firstScene != null)
|
||||||
{
|
{
|
||||||
return m_firstScene.CommsManager.GridService.RegionLoginsEnabled;
|
return m_firstScene.CommsManager.GridService.RegionLoginsEnabled;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected HGLoginAuthService m_loginService;
|
protected HGLoginAuthService m_loginService;
|
||||||
|
|
||||||
#region IRegionModule Members
|
#region IRegionModule Members
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource source)
|
public void Initialise(Scene scene, IConfigSource source)
|
||||||
{
|
{
|
||||||
if (m_firstScene == null)
|
if (m_firstScene == null)
|
||||||
{
|
{
|
||||||
m_firstScene = scene;
|
m_firstScene = scene;
|
||||||
|
|
||||||
IConfig startupConfig = source.Configs["Startup"];
|
IConfig startupConfig = source.Configs["Startup"];
|
||||||
if (startupConfig != null)
|
if (startupConfig != null)
|
||||||
{
|
{
|
||||||
m_enabled = !startupConfig.GetBoolean("gridmode", false);
|
m_enabled = !startupConfig.GetBoolean("gridmode", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_enabled)
|
if (m_enabled)
|
||||||
{
|
{
|
||||||
m_log.Debug("[HGLogin] HGlogin module enabled");
|
m_log.Debug("[HGLogin] HGlogin module enabled");
|
||||||
bool authenticate = true;
|
bool authenticate = true;
|
||||||
string welcomeMessage = "Welcome to OpenSim";
|
string welcomeMessage = "Welcome to OpenSim";
|
||||||
IConfig standaloneConfig = source.Configs["StandAlone"];
|
IConfig standaloneConfig = source.Configs["StandAlone"];
|
||||||
if (standaloneConfig != null)
|
if (standaloneConfig != null)
|
||||||
{
|
{
|
||||||
authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true);
|
authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true);
|
||||||
welcomeMessage = standaloneConfig.GetString("welcome_message");
|
welcomeMessage = standaloneConfig.GetString("welcome_message");
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: fix casting.
|
//TODO: fix casting.
|
||||||
LibraryRootFolder rootFolder = m_firstScene.CommsManager.UserProfileCacheService.LibraryRoot as LibraryRootFolder;
|
LibraryRootFolder rootFolder = m_firstScene.CommsManager.UserProfileCacheService.LibraryRoot as LibraryRootFolder;
|
||||||
|
|
||||||
IHttpServer httpServer = m_firstScene.CommsManager.HttpServer;
|
IHttpServer httpServer = m_firstScene.CommsManager.HttpServer;
|
||||||
|
|
||||||
//TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference
|
//TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference
|
||||||
m_loginService = new HGLoginAuthService((UserManagerBase)m_firstScene.CommsManager.UserService, welcomeMessage, m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.NetworkServersInfo, authenticate, rootFolder, this);
|
m_loginService = new HGLoginAuthService((UserManagerBase)m_firstScene.CommsManager.UserService, welcomeMessage, m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.NetworkServersInfo, authenticate, rootFolder, this);
|
||||||
|
|
||||||
httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod);
|
httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod);
|
||||||
httpServer.AddXmlRPCHandler("hg_new_auth_key", m_loginService.XmlRpcGenerateKeyMethod);
|
httpServer.AddXmlRPCHandler("hg_new_auth_key", m_loginService.XmlRpcGenerateKeyMethod);
|
||||||
httpServer.AddXmlRPCHandler("hg_verify_auth_key", m_loginService.XmlRpcVerifyKeyMethod);
|
httpServer.AddXmlRPCHandler("hg_verify_auth_key", m_loginService.XmlRpcVerifyKeyMethod);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_enabled)
|
if (m_enabled)
|
||||||
{
|
{
|
||||||
AddScene(scene);
|
AddScene(scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
get { return "HGStandaloneLoginModule"; }
|
get { return "HGStandaloneLoginModule"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsSharedModule
|
public bool IsSharedModule
|
||||||
{
|
{
|
||||||
get { return true; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
protected void AddScene(Scene scene)
|
protected void AddScene(Scene scene)
|
||||||
{
|
{
|
||||||
lock (m_scenes)
|
lock (m_scenes)
|
||||||
{
|
{
|
||||||
if (!m_scenes.Contains(scene))
|
if (!m_scenes.Contains(scene))
|
||||||
{
|
{
|
||||||
m_scenes.Add(scene);
|
m_scenes.Add(scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent)
|
public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message)
|
public void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message)
|
||||||
{
|
{
|
||||||
Scene scene;
|
Scene scene;
|
||||||
if (TryGetRegion(regionHandle, out scene))
|
if (TryGetRegion(regionHandle, out scene))
|
||||||
{
|
{
|
||||||
scene.HandleLogOffUserFromGrid(AvatarID, RegionSecret, message);
|
scene.HandleLogOffUserFromGrid(AvatarID, RegionSecret, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo RequestNeighbourInfo(ulong regionhandle)
|
public RegionInfo RequestNeighbourInfo(ulong regionhandle)
|
||||||
{
|
{
|
||||||
Scene scene;
|
Scene scene;
|
||||||
if (TryGetRegion(regionhandle, out scene))
|
if (TryGetRegion(regionhandle, out scene))
|
||||||
{
|
{
|
||||||
return scene.RegionInfo;
|
return scene.RegionInfo;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo RequestClosestRegion(string region)
|
public RegionInfo RequestClosestRegion(string region)
|
||||||
{
|
{
|
||||||
Scene scene;
|
Scene scene;
|
||||||
if (TryGetRegion(region, out scene))
|
if (TryGetRegion(region, out scene))
|
||||||
{
|
{
|
||||||
return scene.RegionInfo;
|
return scene.RegionInfo;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo RequestNeighbourInfo(UUID regionID)
|
public RegionInfo RequestNeighbourInfo(UUID regionID)
|
||||||
{
|
{
|
||||||
Scene scene;
|
Scene scene;
|
||||||
if (TryGetRegion(regionID, out scene))
|
if (TryGetRegion(regionID, out scene))
|
||||||
{
|
{
|
||||||
return scene.RegionInfo;
|
return scene.RegionInfo;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool TryGetRegion(ulong regionHandle, out Scene scene)
|
protected bool TryGetRegion(ulong regionHandle, out Scene scene)
|
||||||
{
|
{
|
||||||
lock (m_scenes)
|
lock (m_scenes)
|
||||||
{
|
{
|
||||||
foreach (Scene nextScene in m_scenes)
|
foreach (Scene nextScene in m_scenes)
|
||||||
{
|
{
|
||||||
if (nextScene.RegionInfo.RegionHandle == regionHandle)
|
if (nextScene.RegionInfo.RegionHandle == regionHandle)
|
||||||
{
|
{
|
||||||
scene = nextScene;
|
scene = nextScene;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool TryGetRegion(UUID regionID, out Scene scene)
|
protected bool TryGetRegion(UUID regionID, out Scene scene)
|
||||||
{
|
{
|
||||||
lock (m_scenes)
|
lock (m_scenes)
|
||||||
{
|
{
|
||||||
foreach (Scene nextScene in m_scenes)
|
foreach (Scene nextScene in m_scenes)
|
||||||
{
|
{
|
||||||
if (nextScene.RegionInfo.RegionID == regionID)
|
if (nextScene.RegionInfo.RegionID == regionID)
|
||||||
{
|
{
|
||||||
scene = nextScene;
|
scene = nextScene;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool TryGetRegion(string regionName, out Scene scene)
|
protected bool TryGetRegion(string regionName, out Scene scene)
|
||||||
{
|
{
|
||||||
lock (m_scenes)
|
lock (m_scenes)
|
||||||
{
|
{
|
||||||
foreach (Scene nextScene in m_scenes)
|
foreach (Scene nextScene in m_scenes)
|
||||||
{
|
{
|
||||||
if (nextScene.RegionInfo.RegionName == regionName)
|
if (nextScene.RegionInfo.RegionName == regionName)
|
||||||
{
|
{
|
||||||
scene = nextScene;
|
scene = nextScene;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,18 +66,17 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
public void ReturnData(UUID id, byte[] data)
|
public void ReturnData(UUID id, byte[] data)
|
||||||
{
|
{
|
||||||
|
DynamicTextureUpdater updater = null;
|
||||||
|
|
||||||
DynamicTextureUpdater updater = null;
|
lock (Updaters)
|
||||||
|
|
||||||
lock(Updaters)
|
|
||||||
{
|
{
|
||||||
if (Updaters.ContainsKey(id))
|
if (Updaters.ContainsKey(id))
|
||||||
{
|
{
|
||||||
updater = Updaters[id];
|
updater = Updaters[id];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(updater != null)
|
if (updater != null)
|
||||||
{
|
{
|
||||||
if (RegisteredScenes.ContainsKey(updater.SimUUID))
|
if (RegisteredScenes.ContainsKey(updater.SimUUID))
|
||||||
{
|
{
|
||||||
|
@ -86,27 +85,26 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(updater.UpdateTimer == 0)
|
if (updater.UpdateTimer == 0)
|
||||||
{
|
{
|
||||||
lock(Updaters)
|
lock (Updaters)
|
||||||
{
|
{
|
||||||
if (!Updaters.ContainsKey(updater.UpdaterID))
|
if (!Updaters.ContainsKey(updater.UpdaterID))
|
||||||
{
|
{
|
||||||
Updaters.Remove(updater.UpdaterID);
|
Updaters.Remove(updater.UpdaterID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
|
public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
|
||||||
string extraParams, int updateTimer)
|
string extraParams, int updateTimer)
|
||||||
{
|
{
|
||||||
return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, updateTimer, false, 255);
|
return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, updateTimer, false, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
|
public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
|
||||||
string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
|
string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
|
||||||
{
|
{
|
||||||
if (RenderPlugins.ContainsKey(contentType))
|
if (RenderPlugins.ContainsKey(contentType))
|
||||||
{
|
{
|
||||||
|
@ -123,12 +121,12 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
updater.BlendWithOldTexture = SetBlending;
|
updater.BlendWithOldTexture = SetBlending;
|
||||||
updater.FrontAlpha = AlphaValue;
|
updater.FrontAlpha = AlphaValue;
|
||||||
|
|
||||||
lock(Updaters)
|
lock (Updaters)
|
||||||
{
|
{
|
||||||
if (!Updaters.ContainsKey(updater.UpdaterID))
|
if (!Updaters.ContainsKey(updater.UpdaterID))
|
||||||
{
|
{
|
||||||
Updaters.Add(updater.UpdaterID, updater);
|
Updaters.Add(updater.UpdaterID, updater);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
||||||
|
@ -138,13 +136,13 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
|
public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
|
||||||
string extraParams, int updateTimer)
|
string extraParams, int updateTimer)
|
||||||
{
|
{
|
||||||
return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, false, 255);
|
return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, false, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
|
public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
|
||||||
string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
|
string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
|
||||||
{
|
{
|
||||||
if (RenderPlugins.ContainsKey(contentType))
|
if (RenderPlugins.ContainsKey(contentType))
|
||||||
{
|
{
|
||||||
|
@ -159,12 +157,12 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
updater.BlendWithOldTexture = SetBlending;
|
updater.BlendWithOldTexture = SetBlending;
|
||||||
updater.FrontAlpha = AlphaValue;
|
updater.FrontAlpha = AlphaValue;
|
||||||
|
|
||||||
lock(Updaters)
|
lock (Updaters)
|
||||||
{
|
{
|
||||||
if (!Updaters.ContainsKey(updater.UpdaterID))
|
if (!Updaters.ContainsKey(updater.UpdaterID))
|
||||||
{
|
{
|
||||||
Updaters.Add(updater.UpdaterID, updater);
|
Updaters.Add(updater.UpdaterID, updater);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
|
RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
|
||||||
|
@ -173,7 +171,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
return UUID.Zero;
|
return UUID.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void GetDrawStringSize(string contentType, string text, string fontName, int fontSize,
|
public void GetDrawStringSize(string contentType, string text, string fontName, int fontSize,
|
||||||
out double xSize, out double ySize)
|
out double xSize, out double ySize)
|
||||||
{
|
{
|
||||||
|
@ -307,7 +304,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
part.ScheduleFullUpdate();
|
part.ScheduleFullUpdate();
|
||||||
|
|
||||||
scene.CommsManager.AssetCache.ExpireAsset(oldID);
|
scene.CommsManager.AssetCache.ExpireAsset(oldID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] BlendTextures(byte[] frontImage, byte[] backImage, bool setNewAlpha, byte newAlpha)
|
private byte[] BlendTextures(byte[] frontImage, byte[] backImage, bool setNewAlpha, byte newAlpha)
|
||||||
|
|
|
@ -4998,29 +4998,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (dir.x == 0)
|
if (dir.x == 0)
|
||||||
{
|
{
|
||||||
if (dir.y == 0)
|
if (dir.y == 0)
|
||||||
{
|
{
|
||||||
// Direction vector is 0,0 so return
|
// Direction vector is 0,0 so return
|
||||||
// false since we're staying in the sim
|
// false since we're staying in the sim
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Y is the only valid direction
|
// Y is the only valid direction
|
||||||
edge.y = dir.y / Math.Abs(dir.y);
|
edge.y = dir.y / Math.Abs(dir.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LSL_Float mag;
|
LSL_Float mag;
|
||||||
if (dir.x > 0)
|
if (dir.x > 0)
|
||||||
{
|
{
|
||||||
mag = (Constants.RegionSize - pos.x) / dir.x;
|
mag = (Constants.RegionSize - pos.x) / dir.x;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mag = (pos.x/dir.x);
|
mag = (pos.x/dir.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
mag = Math.Abs(mag);
|
mag = Math.Abs(mag);
|
||||||
|
|
||||||
|
@ -5028,7 +5028,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (edge.y > Constants.RegionSize || edge.y < 0)
|
if (edge.y > Constants.RegionSize || edge.y < 0)
|
||||||
{
|
{
|
||||||
// Y goes out of bounds first
|
// Y goes out of bounds first
|
||||||
edge.y = dir.y / Math.Abs(dir.y);
|
edge.y = dir.y / Math.Abs(dir.y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -5039,18 +5039,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SimpleRegionInfo> neighbors = World.CommsManager.GridService.RequestNeighbours(World.RegionInfo.RegionLocX, World.RegionInfo.RegionLocY);
|
List<SimpleRegionInfo> neighbors = World.CommsManager.GridService.RequestNeighbours(World.RegionInfo.RegionLocX, World.RegionInfo.RegionLocY);
|
||||||
|
|
||||||
uint neighborX = World.RegionInfo.RegionLocX + (uint)dir.x;
|
uint neighborX = World.RegionInfo.RegionLocX + (uint)dir.x;
|
||||||
uint neighborY = World.RegionInfo.RegionLocY + (uint)dir.y;
|
uint neighborY = World.RegionInfo.RegionLocY + (uint)dir.y;
|
||||||
|
|
||||||
foreach (SimpleRegionInfo sri in neighbors)
|
|
||||||
{
|
|
||||||
if (sri.RegionLocX == neighborX && sri.RegionLocY == neighborY)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
foreach (SimpleRegionInfo sri in neighbors)
|
||||||
|
{
|
||||||
|
if (sri.RegionLocX == neighborX && sri.RegionLocY == neighborY)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -49,7 +49,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
{
|
{
|
||||||
return localID.ToString() + itemID.ToString();
|
return localID.ToString() + itemID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private class TimerClass
|
private class TimerClass
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -198,7 +198,7 @@
|
||||||
|
|
||||||
;WorldMapModule = "WorldMap"
|
;WorldMapModule = "WorldMap"
|
||||||
;MapImageModule = "MapImageModule"
|
;MapImageModule = "MapImageModule"
|
||||||
|
|
||||||
; ##
|
; ##
|
||||||
; ## Customized Cache Implementation
|
; ## Customized Cache Implementation
|
||||||
; ##
|
; ##
|
||||||
|
@ -231,8 +231,8 @@
|
||||||
|
|
||||||
[Communications]
|
[Communications]
|
||||||
|
|
||||||
;InterregionComms = "LocalComms"
|
;InterregionComms = "LocalComms"
|
||||||
InterregionComms = "RESTComms"
|
InterregionComms = "RESTComms"
|
||||||
|
|
||||||
[StandAlone]
|
[StandAlone]
|
||||||
accounts_authenticate = true
|
accounts_authenticate = true
|
||||||
|
@ -579,16 +579,16 @@ InterregionComms = "RESTComms"
|
||||||
|
|
||||||
|
|
||||||
[RestHandler]
|
[RestHandler]
|
||||||
; Change this to true to enable the REST Asset and Inventory Plugin
|
; Change this to true to enable the REST Asset and Inventory Plugin
|
||||||
enabled = false
|
enabled = false
|
||||||
authenticate=true
|
authenticate = true
|
||||||
secured=true
|
secured = true
|
||||||
extended-escape=true
|
extended-escape = true
|
||||||
realm=OpenSim REST
|
realm = OpenSim REST
|
||||||
dump-asset=false
|
dump-asset = false
|
||||||
path-fill=true
|
path-fill = true
|
||||||
dump-line-size=32
|
dump-line-size = 32
|
||||||
flush-on-error=true
|
flush-on-error = true
|
||||||
|
|
||||||
|
|
||||||
; Uncomment the following for IRC bridge
|
; Uncomment the following for IRC bridge
|
||||||
|
@ -1122,16 +1122,16 @@ InterregionComms = "RESTComms"
|
||||||
; default is false
|
; default is false
|
||||||
enabled = false
|
enabled = false
|
||||||
|
|
||||||
; Channel on which to signal region readiness through a message
|
; Channel on which to signal region readiness through a message
|
||||||
; formatted as follows: "{server_startup|oar_file_load},{0|1},n,[oar error]"
|
; formatted as follows: "{server_startup|oar_file_load},{0|1},n,[oar error]"
|
||||||
; - the first field indicating whether this is an initial server startup
|
; - the first field indicating whether this is an initial server startup
|
||||||
; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error)
|
; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error)
|
||||||
; - the third field is a number indicating how many scripts failed to compile
|
; - the third field is a number indicating how many scripts failed to compile
|
||||||
; - "oar error" if supplied, provides the error message from the OAR load
|
; - "oar error" if supplied, provides the error message from the OAR load
|
||||||
channel_notify = -800
|
channel_notify = -800
|
||||||
|
|
||||||
|
|
||||||
[MRM]
|
[MRM]
|
||||||
; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK.
|
; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK.
|
||||||
; default is false
|
; default is false
|
||||||
Enabled = false
|
Enabled = false
|
||||||
|
|
Loading…
Reference in New Issue