Update svn properties, add copyright header, formatting cleanup.

0.6.5-rc1
Jeff Ames 2009-03-31 02:00:33 +00:00
parent c266df0dfe
commit 54ccca1e2c
15 changed files with 9858 additions and 9838 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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

View File

@ -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;
} }
} }
} }
} }

View File

@ -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)

View File

@ -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;
} }
} }
} }

View File

@ -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;
} }
} }
} }

View File

@ -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)

View File

@ -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>

View File

@ -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

View File

@ -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