Merge branch 'master' into careminster

avinationmerge
Melanie 2010-01-26 14:53:14 +00:00
commit b80ea00265
90 changed files with 2140 additions and 962 deletions

View File

@ -99,7 +99,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
regionLoader.SetIniConfigSource(m_openSim.ConfigSource.Source); regionLoader.SetIniConfigSource(m_openSim.ConfigSource.Source);
RegionInfo[] regionsToLoad = regionLoader.LoadRegions(); RegionInfo[] regionsToLoad = regionLoader.LoadRegions();
m_log.Info("[LOADREGIONSPLUGIN]: Loading specific shared modules..."); /*m_log.Info("[LOADREGIONSPLUGIN]: Loading specific shared modules...");
m_log.Info("[LOADREGIONSPLUGIN]: DynamicTextureModule..."); m_log.Info("[LOADREGIONSPLUGIN]: DynamicTextureModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule()); m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule());
m_log.Info("[LOADREGIONSPLUGIN]: InstantMessageModule..."); m_log.Info("[LOADREGIONSPLUGIN]: InstantMessageModule...");
@ -111,7 +111,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule..."); m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule()); m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule());
m_log.Info("[LOADREGIONSPLUGIN]: Done."); m_log.Info("[LOADREGIONSPLUGIN]: Done.");
*/
if (!CheckRegionsForSanity(regionsToLoad)) if (!CheckRegionsForSanity(regionsToLoad))
{ {
m_log.Error("[LOADREGIONS]: Halting startup due to conflicts in region configurations"); m_log.Error("[LOADREGIONS]: Halting startup due to conflicts in region configurations");

View File

@ -31,6 +31,7 @@ using System.Reflection;
using System.Text; using System.Text;
using System.Timers; using System.Timers;
using log4net; using log4net;
using Mono.Addins;
using MXP; using MXP;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
@ -44,7 +45,8 @@ namespace OpenSim.Client.MXP
/** /**
* MXP Client Module which adds MXP support to client / region communication. * MXP Client Module which adds MXP support to client / region communication.
*/ */
public class MXPModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MXPModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -57,15 +59,23 @@ namespace OpenSim.Client.MXP
private readonly Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); private readonly Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
private bool m_shutdown; private bool m_shutdown;
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
if (!m_scenes.ContainsKey(scene.RegionInfo.RegionID))
m_scenes.Add(scene.RegionInfo.RegionID, scene);
m_config = source; m_config = source;
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!m_scenes.ContainsKey(scene.RegionInfo.RegionID))
m_scenes.Add(scene.RegionInfo.RegionID, scene);
}
public void RegionLoaded(Scene scene)
{ {
if (m_config.Configs["MXP"] != null) if (m_config.Configs["MXP"] != null)
{ {
@ -76,7 +86,7 @@ namespace OpenSim.Client.MXP
m_port = con.GetInt("Port", m_port); m_port = con.GetInt("Port", m_port);
m_server = new MXPPacketServer(m_port, m_scenes,m_config.Configs["StandAlone"].GetBoolean("accounts_authenticate",true)); m_server = new MXPPacketServer(m_port, m_scenes, m_config.Configs["StandAlone"].GetBoolean("accounts_authenticate", true));
m_ticker = new Timer(100); m_ticker = new Timer(100);
m_ticker.AutoReset = false; m_ticker.AutoReset = false;
@ -89,6 +99,14 @@ namespace OpenSim.Client.MXP
} }
} }
public void RemoveRegion(Scene scene)
{
}
public void PostInitialise()
{
}
void ticker_Elapsed(object sender, ElapsedEventArgs e) void ticker_Elapsed(object sender, ElapsedEventArgs e)
{ {
try try
@ -121,11 +139,5 @@ namespace OpenSim.Client.MXP
{ {
get { return "MXP ClientStack Module"; } get { return "MXP ClientStack Module"; }
} }
public bool IsSharedModule
{
get { return true; }
}
} }
} }

View File

@ -302,6 +302,12 @@ namespace OpenSim.Framework.Console
if (!UUID.TryParse(post["ID"].ToString(), out id)) if (!UUID.TryParse(post["ID"].ToString(), out id))
return reply; return reply;
lock(m_Connections)
{
if(!m_Connections.ContainsKey(id))
return reply;
}
if (post["COMMAND"] == null || post["COMMAND"].ToString() == String.Empty) if (post["COMMAND"] == null || post["COMMAND"].ToString() == String.Empty)
return reply; return reply;

View File

@ -1450,6 +1450,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendKillObject(ulong regionHandle, uint localID) public void SendKillObject(ulong regionHandle, uint localID)
{ {
// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle);
KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject);
// TODO: don't create new blocks if recycling an old packet // TODO: don't create new blocks if recycling an old packet
kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1];
@ -3455,6 +3457,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendPrimitiveToClient(SendPrimitiveData data) public void SendPrimitiveToClient(SendPrimitiveData data)
{ {
// string text = data.text;
// if (text.IndexOf("\n") >= 0)
// text = text.Remove(text.IndexOf("\n"));
// m_log.DebugFormat(
// "[CLIENT]: Placing request to send full info about prim {0} text {1} to client {2}",
// data.localID, text, Name);
if (data.priority == double.NaN) if (data.priority == double.NaN)
{ {
m_log.Error("[LLClientView] SendPrimitiveToClient received a NaN priority, dropping update"); m_log.Error("[LLClientView] SendPrimitiveToClient received a NaN priority, dropping update");
@ -3492,7 +3501,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[count]; outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[count];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{
outPacket.ObjectData[i] = m_primFullUpdates.Dequeue(); outPacket.ObjectData[i] = m_primFullUpdates.Dequeue();
// string text = Util.FieldToString(outPacket.ObjectData[i].Text);
// if (text.IndexOf("\n") >= 0)
// text = text.Remove(text.IndexOf("\n"));
// m_log.DebugFormat(
// "[CLIENT]: Sending full info about prim {0} text {1} to client {2}",
// outPacket.ObjectData[i].ID, text, Name);
}
} }
OutPacket(outPacket, ThrottleOutPacketType.State); OutPacket(outPacket, ThrottleOutPacketType.State);
@ -9075,8 +9093,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private bool HandleSendPostcard(IClientAPI client, Packet packet) private bool HandleSendPostcard(IClientAPI client, Packet packet)
{ {
SendPostcardPacket SendPostcard = // SendPostcardPacket SendPostcard =
(SendPostcardPacket)packet; // (SendPostcardPacket)packet;
SendPostcard handlerSendPostcard = OnSendPostcard; SendPostcard handlerSendPostcard = OnSendPostcard;
if (handlerSendPostcard != null) if (handlerSendPostcard != null)
{ {

View File

@ -27,6 +27,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -35,7 +36,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Agent.AssetTransaction namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
{ {
public class AssetTransactionModule : IRegionModule, IAgentAssetTransactions [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class AssetTransactionModule : ISharedRegionModule, IAgentAssetTransactions
{ {
private readonly Dictionary<UUID, Scene> RegisteredScenes = new Dictionary<UUID, Scene>(); private readonly Dictionary<UUID, Scene> RegisteredScenes = new Dictionary<UUID, Scene>();
private bool m_dumpAssetsToFile = false; private bool m_dumpAssetsToFile = false;
@ -59,9 +61,14 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
//m_log.Debug("creating AgentAssetTransactionModule"); //m_log.Debug("creating AgentAssetTransactionModule");
} }
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public void AddRegion(Scene scene)
{ {
if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID)) if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID))
{ {
@ -79,6 +86,23 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
m_scene = scene; m_scene = scene;
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID))
RegisteredScenes.Remove(scene.RegionInfo.RegionID);
scene.UnregisterModuleInterface<IAgentAssetTransactions>(this);
scene.EventManager.OnNewClient -= NewClient;
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -92,11 +116,6 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
get { return "AgentTransactionModule"; } get { return "AgentTransactionModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
public void NewClient(IClientAPI client) public void NewClient(IClientAPI client)

View File

@ -69,7 +69,7 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
m_scene.UnregisterModuleInterface<ICapabilitiesModule>(this); scene.UnregisterModuleInterface<ICapabilitiesModule>(this);
} }
public void PostInitialise() {} public void PostInitialise() {}

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text; using System.Text;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
@ -36,21 +37,27 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Agent.IPBan namespace OpenSim.Region.CoreModules.Agent.IPBan
{ {
public class IPBanModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class IPBanModule : ISharedRegionModule
{ {
#region Implementation of IRegionModule #region Implementation of ISharedRegionModule
private List<string> m_bans = new List<string>(); private List<string> m_bans = new List<string>();
private Dictionary<Scene, SceneBanner> SceneBanners = new Dictionary<Scene, SceneBanner>();
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
new SceneBanner(scene, m_bans); }
public void AddRegion(Scene scene)
{
SceneBanners.Add(scene, new SceneBanner(scene, m_bans));
lock (m_bans) lock (m_bans)
{ {
foreach (EstateBan ban in scene.RegionInfo.EstateSettings.EstateBans) foreach (EstateBan ban in scene.RegionInfo.EstateSettings.EstateBans)
{ {
if (!String.IsNullOrEmpty(ban.BannedHostIPMask)) if (!String.IsNullOrEmpty(ban.BannedHostIPMask))
m_bans.Add(ban.BannedHostIPMask); m_bans.Add(ban.BannedHostIPMask);
if (!String.IsNullOrEmpty(ban.BannedHostNameMask)) if (!String.IsNullOrEmpty(ban.BannedHostNameMask))
m_bans.Add(ban.BannedHostNameMask); m_bans.Add(ban.BannedHostNameMask);
@ -58,7 +65,12 @@ namespace OpenSim.Region.CoreModules.Agent.IPBan
} }
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{ {
if (File.Exists("bans.txt")) if (File.Exists("bans.txt"))
{ {
@ -70,9 +82,18 @@ namespace OpenSim.Region.CoreModules.Agent.IPBan
} }
} }
public void RemoveRegion(Scene scene)
{
if(SceneBanners.ContainsKey(scene))
SceneBanners.Remove(scene);
}
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
public string Name public string Name
@ -80,11 +101,6 @@ namespace OpenSim.Region.CoreModules.Agent.IPBan
get { return "IPBanModule"; } get { return "IPBanModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
/// <summary> /// <summary>

View File

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -41,7 +42,8 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.Agent.TextureDownload namespace OpenSim.Region.CoreModules.Agent.TextureDownload
{ {
public class TextureDownloadModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class TextureDownloadModule : INonSharedRegionModule
{ {
private static readonly ILog m_log private static readonly ILog m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -65,11 +67,14 @@ namespace OpenSim.Region.CoreModules.Agent.TextureDownload
{ {
} }
#region IRegionModule Members #region INonSharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public void AddRegion(Scene scene)
{ {
if (m_scene == null) if (m_scene == null)
{ {
//m_log.Debug("Creating Texture download module"); //m_log.Debug("Creating Texture download module");
@ -90,8 +95,21 @@ namespace OpenSim.Region.CoreModules.Agent.TextureDownload
} }
} }
public void PostInitialise() public Type ReplaceableInterface
{ {
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if(m_scenes.Contains(scene))
m_scenes.Remove(scene);
scene.EventManager.OnNewClient -= NewClient;
scene.EventManager.OnRemovePresence -= EventManager_OnRemovePresence;
} }
public void Close() public void Close()
@ -103,11 +121,6 @@ namespace OpenSim.Region.CoreModules.Agent.TextureDownload
get { return "TextureDownloadModule"; } get { return "TextureDownloadModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
/// <summary> /// <summary>

View File

@ -32,6 +32,7 @@ using System.Reflection;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Imaging; using OpenMetaverse.Imaging;
@ -45,7 +46,8 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
{ {
public delegate void J2KDecodeDelegate(UUID assetID); public delegate void J2KDecodeDelegate(UUID assetID);
public class J2KDecoderModule : IRegionModule, IJ2KDecoder [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class J2KDecoderModule : ISharedRegionModule, IJ2KDecoder
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -58,16 +60,19 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
/// <summary>Reference to a scene (doesn't matter which one as long as it can load the cache module)</summary> /// <summary>Reference to a scene (doesn't matter which one as long as it can load the cache module)</summary>
private Scene m_scene; private Scene m_scene;
#region IRegionModule #region ISharedRegionModule
public string Name { get { return "J2KDecoderModule"; } } public string Name { get { return "J2KDecoderModule"; } }
public bool IsSharedModule { get { return true; } }
public J2KDecoderModule() public J2KDecoderModule()
{ {
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public void AddRegion(Scene scene)
{ {
if (m_scene == null) if (m_scene == null)
m_scene = scene; m_scene = scene;
@ -75,16 +80,30 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
scene.RegisterModuleInterface<IJ2KDecoder>(this); scene.RegisterModuleInterface<IJ2KDecoder>(this);
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{ {
m_cache = m_scene.RequestModuleInterface<IImprovedAssetCache>(); m_cache = m_scene.RequestModuleInterface<IImprovedAssetCache>();
} }
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IJ2KDecoder>(this);
}
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
#endregion IRegionModule #endregion
#region IJ2KDecoder #region IJ2KDecoder

View File

@ -27,6 +27,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -35,7 +36,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Agent.Xfer namespace OpenSim.Region.CoreModules.Agent.Xfer
{ {
public class XferModule : IRegionModule, IXfer [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class XferModule : INonSharedRegionModule, IXfer
{ {
private Scene m_scene; private Scene m_scene;
private Dictionary<string, XferRequest> Requests = new Dictionary<string, XferRequest>(); private Dictionary<string, XferRequest> Requests = new Dictionary<string, XferRequest>();
@ -52,9 +54,13 @@ namespace OpenSim.Region.CoreModules.Agent.Xfer
public DateTime timeStamp; public DateTime timeStamp;
} }
#region IRegionModule Members #region INonSharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.EventManager.OnNewClient += NewClient; m_scene.EventManager.OnNewClient += NewClient;
@ -62,8 +68,19 @@ namespace OpenSim.Region.CoreModules.Agent.Xfer
m_scene.RegisterModuleInterface<IXfer>(this); m_scene.RegisterModuleInterface<IXfer>(this);
} }
public void PostInitialise() public Type ReplaceableInterface
{ {
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnNewClient -= NewClient;
scene.UnregisterModuleInterface<IXfer>(this);
} }
public void Close() public void Close()
@ -75,11 +92,6 @@ namespace OpenSim.Region.CoreModules.Agent.Xfer
get { return "XferModule"; } get { return "XferModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
#region IXfer Members #region IXfer Members

View File

@ -28,6 +28,7 @@
using System; using System;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -38,7 +39,8 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
{ {
public class AvatarFactoryModule : IAvatarFactory, IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class AvatarFactoryModule : IAvatarFactory, ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Scene m_scene = null; private Scene m_scene = null;
@ -75,7 +77,16 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
return appearance; return appearance;
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
scene.RegisterModuleInterface<IAvatarFactory>(this); scene.RegisterModuleInterface<IAvatarFactory>(this);
scene.EventManager.OnNewClient += NewClient; scene.EventManager.OnNewClient += NewClient;
@ -84,9 +95,18 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
{ {
m_scene = scene; m_scene = scene;
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IAvatarFactory>(this);
scene.EventManager.OnNewClient -= NewClient;
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -100,11 +120,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
get { return "Default Avatar Factory"; } get { return "Default Avatar Factory"; }
} }
public bool IsSharedModule
{
get { return false; }
}
public void NewClient(IClientAPI client) public void NewClient(IClientAPI client)
{ {
client.OnAvatarNowWearing += AvatarIsWearing; client.OnAvatarNowWearing += AvatarIsWearing;

View File

@ -27,6 +27,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
@ -34,7 +35,8 @@ using OpenMetaverse;
namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
{ {
public class CombatModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class CombatModule : ISharedRegionModule
{ {
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -53,7 +55,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
/// </summary> /// </summary>
/// <param name="scene"></param> /// <param name="scene"></param>
/// <param name="config"></param> /// <param name="config"></param>
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
lock (m_scenel) lock (m_scenel)
{ {
@ -71,6 +83,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel; scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnAvatarKilled -= KillAvatar;
scene.EventManager.OnAvatarEnteringNewParcel -= AvatarEnteringParcel;
m_scenel.Remove(scene.RegionInfo.RegionHandle);
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -84,11 +107,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
get { return "CombatModule"; } get { return "CombatModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
private void KillAvatar(uint killerObjectLocalID, ScenePresence DeadAvatar) private void KillAvatar(uint killerObjectLocalID, ScenePresence DeadAvatar)
{ {
if (killerObjectLocalID == 0) if (killerObjectLocalID == 0)

View File

@ -25,9 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -37,28 +39,46 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.Dialog namespace OpenSim.Region.CoreModules.Avatar.Dialog
{ {
public class DialogModule : IRegionModule, IDialogModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class DialogModule : ISharedRegionModule, IDialogModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected Scene m_scene; protected Scene m_scene;
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.RegisterModuleInterface<IDialogModule>(this);
m_scene.AddCommand( m_scene.AddCommand(
this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand);
m_scene.AddCommand( m_scene.AddCommand(
this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand); this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand);
} }
public void PostInitialise() {} public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IDialogModule>(this);
}
public void PostInitialise() { }
public void Close() {} public void Close() {}
public string Name { get { return "Dialog Module"; } } public string Name { get { return "Dialog Module"; } }
public bool IsSharedModule { get { return false; } }
public void SendAlertToUser(IClientAPI client, string message) public void SendAlertToUser(IClientAPI client, string message)
{ {

View File

@ -31,6 +31,7 @@ using System.Collections.Generic;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
@ -81,7 +82,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
- Terminate Friendship messages (single) - Terminate Friendship messages (single)
*/ */
public class FriendsModule : IRegionModule, IFriendsModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class FriendsModule : ISharedRegionModule, IFriendsModule
{ {
private class Transaction private class Transaction
{ {
@ -111,9 +113,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
private IGridService m_gridServices = null; private IGridService m_gridServices = null;
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public void PostInitialise()
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
lock (m_scenes) lock (m_scenes)
{ {
@ -128,9 +144,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (!m_scenes.ContainsKey(scene.RegionInfo.RegionHandle)) if (!m_scenes.ContainsKey(scene.RegionInfo.RegionHandle))
m_scenes[scene.RegionInfo.RegionHandle] = scene; m_scenes[scene.RegionInfo.RegionHandle] = scene;
} }
scene.RegisterModuleInterface<IFriendsModule>(this); scene.RegisterModuleInterface<IFriendsModule>(this);
scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel; scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
@ -138,17 +154,34 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
scene.EventManager.OnClientClosed += ClientClosed; scene.EventManager.OnClientClosed += ClientClosed;
} }
public void PostInitialise() public void RegionLoaded(Scene scene)
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
{ {
m_TransferModule = m_initialScene.RequestModuleInterface<IMessageTransferModule>(); m_TransferModule = scene.RequestModuleInterface<IMessageTransferModule>();
m_gridServices = m_initialScene.GridService; m_gridServices = scene.GridService;
} }
if (m_TransferModule == null) if (m_TransferModule == null)
m_log.Error("[FRIENDS]: Unable to find a message transfer module, friendship offers will not work"); m_log.Error("[FRIENDS]: Unable to find a message transfer module, friendship offers will not work");
} }
public void RemoveRegion(Scene scene)
{
MainServer.Instance.RemoveXmlRPCHandler("presence_update_bulk");
MainServer.Instance.RemoveXmlRPCHandler("terminate_friend");
if (m_scenes.ContainsKey(scene.RegionInfo.RegionHandle))
m_scenes.Remove(scene.RegionInfo.RegionHandle);
scene.UnregisterModuleInterface<IFriendsModule>(this);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
scene.EventManager.OnAvatarEnteringNewParcel -= AvatarEnteringParcel;
scene.EventManager.OnMakeChildAgent -= MakeChildAgent;
scene.EventManager.OnClientClosed -= ClientClosed;
}
public void Close() public void Close()
{ {
} }
@ -158,11 +191,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
get { return "FriendsModule"; } get { return "FriendsModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
#region IInterregionFriendsComms #region IInterregionFriendsComms

View File

@ -25,8 +25,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -37,23 +39,41 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.Avatar.Gestures namespace OpenSim.Region.CoreModules.Avatar.Gestures
{ {
public class GesturesModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class GesturesModule : INonSharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected Scene m_scene; protected Scene m_scene;
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.EventManager.OnNewClient += OnNewClient; m_scene.EventManager.OnNewClient += OnNewClient;
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if(m_scene == scene)
m_scene = null;
scene.EventManager.OnNewClient -= OnNewClient;
}
public void PostInitialise() {}
public void Close() {} public void Close() {}
public string Name { get { return "Gestures Module"; } } public string Name { get { return "Gestures Module"; } }
public bool IsSharedModule { get { return false; } }
private void OnNewClient(IClientAPI client) private void OnNewClient(IClientAPI client)
{ {

View File

@ -25,7 +25,9 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -34,7 +36,8 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Region.CoreModules.Avatar.Gods namespace OpenSim.Region.CoreModules.Avatar.Gods
{ {
public class GodsModule : IRegionModule, IGodsModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class GodsModule : INonSharedRegionModule, IGodsModule
{ {
/// <summary>Special UUID for actions that apply to all agents</summary> /// <summary>Special UUID for actions that apply to all agents</summary>
private static readonly UUID ALL_AGENTS = new UUID("44e87126-e794-4ded-05b3-7c42da3d5cdb"); private static readonly UUID ALL_AGENTS = new UUID("44e87126-e794-4ded-05b3-7c42da3d5cdb");
@ -42,17 +45,34 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
protected Scene m_scene; protected Scene m_scene;
protected IDialogModule m_dialogModule; protected IDialogModule m_dialogModule;
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_dialogModule = m_scene.RequestModuleInterface<IDialogModule>(); m_dialogModule = m_scene.RequestModuleInterface<IDialogModule>();
m_scene.RegisterModuleInterface<IGodsModule>(this); m_scene.RegisterModuleInterface<IGodsModule>(this);
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IGodsModule>(this);
}
public void PostInitialise() {}
public void Close() {} public void Close() {}
public string Name { get { return "Gods Module"; } } public string Name { get { return "Gods Module"; } }
public bool IsSharedModule { get { return false; } }
public void RequestGodlikePowers( public void RequestGodlikePowers(
UUID agentID, UUID sessionID, UUID token, bool godLike, IClientAPI controllingClient) UUID agentID, UUID sessionID, UUID token, bool godLike, IClientAPI controllingClient)

View File

@ -25,9 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -36,7 +38,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.Groups namespace OpenSim.Region.CoreModules.Avatar.Groups
{ {
public class GroupsModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class GroupsModule : ISharedRegionModule
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -55,9 +58,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
private static GroupMembershipData osGroup = private static GroupMembershipData osGroup =
new GroupMembershipData(); new GroupMembershipData();
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
IConfig groupsConfig = config.Configs["Groups"]; IConfig groupsConfig = config.Configs["Groups"];
@ -76,7 +79,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
if (groupsConfig.GetString("Module", "Default") != "Default") if (groupsConfig.GetString("Module", "Default") != "Default")
return; return;
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
lock (m_SceneList) lock (m_SceneList)
{ {
if (!m_SceneList.Contains(scene)) if (!m_SceneList.Contains(scene))
@ -99,6 +110,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (m_SceneList.Contains(scene))
m_SceneList.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnClientClosed -= OnClientClosed;
scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -123,11 +147,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
get { return "GroupsModule"; } get { return "GroupsModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
private void OnNewClient(IClientAPI client) private void OnNewClient(IClientAPI client)

View File

@ -24,9 +24,12 @@
* (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.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -36,7 +39,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
{ {
public class InstantMessageModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class InstantMessageModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -47,11 +51,11 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
private readonly List<Scene> m_scenes = new List<Scene>(); private readonly List<Scene> m_scenes = new List<Scene>();
#region IRegionModule Members #region ISharedRegionModule Members
private IMessageTransferModule m_TransferModule = null; private IMessageTransferModule m_TransferModule = null;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (config.Configs["Messaging"] != null) if (config.Configs["Messaging"] != null)
{ {
@ -62,7 +66,15 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
} }
m_enabled = true; m_enabled = true;
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
lock (m_scenes) lock (m_scenes)
{ {
if (!m_scenes.Contains(scene)) if (!m_scenes.Contains(scene))
@ -74,6 +86,27 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
} }
} }
public void RegionLoaded(Scene scene)
{
if (!m_enabled)
return;
m_TransferModule =
m_scenes[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INSTANT MESSAGE]: No message transfer module, " +
"IM will not work!");
}
public void RemoveRegion(Scene scene)
{
if (m_scenes.Contains(scene))
m_scenes.Remove(scene);
scene.EventManager.OnClientConnect -= OnClientConnect;
scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
}
void OnClientConnect(IClientCore client) void OnClientConnect(IClientCore client)
{ {
IClientIM clientIM; IClientIM clientIM;
@ -85,15 +118,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
public void PostInitialise() public void PostInitialise()
{ {
if (!m_enabled)
return;
m_TransferModule =
m_scenes[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INSTANT MESSAGE]: No message transfer module, "+
"IM will not work!");
} }
public void Close() public void Close()
@ -105,11 +129,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
get { return "InstantMessageModule"; } get { return "InstantMessageModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
public void OnInstantMessage(IClientAPI client, GridInstantMessage im) public void OnInstantMessage(IClientAPI client, GridInstantMessage im)

View File

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
@ -40,7 +41,8 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
{ {
public class MessageTransferModule : IRegionModule, IMessageTransferModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MessageTransferModule : ISharedRegionModule, IMessageTransferModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -50,8 +52,9 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
protected Dictionary<UUID, ulong> m_UserRegionMap = new Dictionary<UUID, ulong>(); protected Dictionary<UUID, ulong> m_UserRegionMap = new Dictionary<UUID, ulong>();
public event UndeliveredMessage OnUndeliveredMessage; public event UndeliveredMessage OnUndeliveredMessage;
private bool m_enabled = true;
public virtual void Initialise(Scene scene, IConfigSource config) public virtual void Initialise(IConfigSource config)
{ {
IConfig cnf = config.Configs["Messaging"]; IConfig cnf = config.Configs["Messaging"];
if (cnf != null && cnf.GetString( if (cnf != null && cnf.GetString(
@ -59,29 +62,51 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
"MessageTransferModule") "MessageTransferModule")
{ {
m_log.Debug("[MESSAGE TRANSFER]: Disabled by configuration"); m_log.Debug("[MESSAGE TRANSFER]: Disabled by configuration");
return; m_enabled = false;
} }
cnf = config.Configs["Startup"]; cnf = config.Configs["Startup"];
if (cnf != null) if (cnf != null)
m_Gridmode = cnf.GetBoolean("gridmode", false); m_Gridmode = cnf.GetBoolean("gridmode", false);
}
// m_Enabled = true; public Type ReplaceableInterface
{
get { return null; }
}
lock (m_Scenes) public void AddRegion(Scene scene)
{
if (m_enabled)
{ {
if (m_Scenes.Count == 0) lock (m_Scenes)
{ {
MainServer.Instance.AddXmlRPCHandler( if (m_Scenes.Count == 0)
"grid_instant_message", processXMLRPCGridInstantMessage); {
} MainServer.Instance.AddXmlRPCHandler(
"grid_instant_message", processXMLRPCGridInstantMessage);
}
m_log.Debug("[MESSAGE TRANSFER]: Message transfer module active"); m_log.Debug("[MESSAGE TRANSFER]: Message transfer module active");
scene.RegisterModuleInterface<IMessageTransferModule>(this); scene.RegisterModuleInterface<IMessageTransferModule>(this);
m_Scenes.Add(scene); m_Scenes.Add(scene);
}
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (m_Scenes.Contains(scene))
m_Scenes.Remove(scene);
MainServer.Instance.RemoveXmlRPCHandler(
"grid_instant_message");
scene.UnregisterModuleInterface<IMessageTransferModule>(this);
}
public virtual void PostInitialise() public virtual void PostInitialise()
{ {
} }
@ -95,11 +120,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
get { return "MessageTransferModule"; } get { return "MessageTransferModule"; }
} }
public virtual bool IsSharedModule
{
get { return true; }
}
public virtual void SendInstantMessage(GridInstantMessage im, MessageResultNotification result) public virtual void SendInstantMessage(GridInstantMessage im, MessageResultNotification result)
{ {
UUID toAgentID = new UUID(im.toAgentID); UUID toAgentID = new UUID(im.toAgentID);

View File

@ -28,6 +28,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -39,7 +40,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.MuteList namespace OpenSim.Region.CoreModules.Avatar.MuteList
{ {
public class MuteListModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MuteListModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -47,7 +49,7 @@ namespace OpenSim.Region.CoreModules.Avatar.MuteList
private List<Scene> m_SceneList = new List<Scene>(); private List<Scene> m_SceneList = new List<Scene>();
private string m_RestURL = String.Empty; private string m_RestURL = String.Empty;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (!enabled) if (!enabled)
return; return;
@ -66,19 +68,24 @@ namespace OpenSim.Region.CoreModules.Avatar.MuteList
enabled = false; enabled = false;
return; return;
} }
m_RestURL = cnf.GetString("MuteListURL", "");
if (m_RestURL == "")
{
m_log.Error("[MUTE LIST] Module was enabled, but no URL is given, disabling");
enabled = false;
return;
}
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
lock (m_SceneList) lock (m_SceneList)
{ {
if (m_SceneList.Count == 0)
{
m_RestURL = cnf.GetString("MuteListURL", "");
if (m_RestURL == "")
{
m_log.Error("[MUTE LIST] Module was enabled, but no URL is given, disabling");
enabled = false;
return;
}
}
if (!m_SceneList.Contains(scene)) if (!m_SceneList.Contains(scene))
m_SceneList.Add(scene); m_SceneList.Add(scene);
@ -86,6 +93,18 @@ namespace OpenSim.Region.CoreModules.Avatar.MuteList
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (m_SceneList.Contains(scene))
m_SceneList.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
}
public void PostInitialise() public void PostInitialise()
{ {
if (!enabled) if (!enabled)
@ -102,11 +121,6 @@ namespace OpenSim.Region.CoreModules.Avatar.MuteList
get { return "MuteListModule"; } get { return "MuteListModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
public void Close() public void Close()
{ {
} }

View File

@ -28,6 +28,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -40,7 +41,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
{ {
public class OfflineMessageModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class OfflineMessageModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -49,7 +51,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
private string m_RestURL = String.Empty; private string m_RestURL = String.Empty;
private bool m_ForwardOfflineGroupMessages = true; private bool m_ForwardOfflineGroupMessages = true;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (!enabled) if (!enabled)
return; return;
@ -83,14 +85,23 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
return; return;
} }
} }
if (!m_SceneList.Contains(scene))
m_SceneList.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
} }
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!m_SceneList.Contains(scene))
m_SceneList.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
}
public void RegionLoaded(Scene scene)
{ {
if (!enabled) if (!enabled)
return; return;
@ -120,16 +131,22 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
m_log.Debug("[OFFLINE MESSAGING] Offline messages enabled"); m_log.Debug("[OFFLINE MESSAGING] Offline messages enabled");
} }
public void RemoveRegion(Scene scene)
{
if (m_SceneList.Contains(scene))
m_SceneList.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
}
public void PostInitialise()
{
}
public string Name public string Name
{ {
get { return "OfflineMessageModule"; } get { return "OfflineMessageModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
public void Close() public void Close()
{ {
} }
@ -163,10 +180,12 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
private void RetrieveInstantMessages(IClientAPI client) private void RetrieveInstantMessages(IClientAPI client)
{ {
m_log.DebugFormat("[OFFLINE MESSAGING] Retrieving stored messages for {0}", client.AgentId); if (m_RestURL != "")
{
m_log.DebugFormat("[OFFLINE MESSAGING] Retrieving stored messages for {0}", client.AgentId);
List<GridInstantMessage>msglist = SynchronousRestObjectPoster.BeginPostObject<UUID, List<GridInstantMessage>>( List<GridInstantMessage> msglist = SynchronousRestObjectPoster.BeginPostObject<UUID, List<GridInstantMessage>>(
"POST", m_RestURL+"/RetrieveMessages/", client.AgentId); "POST", m_RestURL + "/RetrieveMessages/", client.AgentId);
if (msglist != null) if (msglist != null)
{ {

View File

@ -24,11 +24,14 @@
* (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.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 log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
@ -39,7 +42,8 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
{ {
public class PresenceModule : IRegionModule, IPresenceModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class PresenceModule : ISharedRegionModule, IPresenceModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -59,7 +63,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
public event PresenceChange OnPresenceChange; public event PresenceChange OnPresenceChange;
public event BulkPresenceData OnBulkPresenceData; public event BulkPresenceData OnBulkPresenceData;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
lock (m_Scenes) lock (m_Scenes)
{ {
@ -78,28 +82,38 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
m_Gridmode = cnf.GetBoolean("gridmode", false); m_Gridmode = cnf.GetBoolean("gridmode", false);
m_Enabled = true; m_Enabled = true;
m_initialScene = scene;
} }
}
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_Enabled)
{
m_initialScene = scene;
if (m_Gridmode) if (m_Gridmode)
NotifyMessageServerOfStartup(scene); NotifyMessageServerOfStartup(scene);
m_Scenes.Add(scene); m_Scenes.Add(scene);
scene.RegisterModuleInterface<IPresenceModule>(this);
scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnSetRootAgentScene += OnSetRootAgentScene;
scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
} }
scene.RegisterModuleInterface<IPresenceModule>(this);
scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnSetRootAgentScene += OnSetRootAgentScene;
scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
} }
public void PostInitialise() public void RegionLoaded(Scene scene)
{ {
} }
public void Close() public void RemoveRegion(Scene scene)
{ {
if (!m_Gridmode || !m_Enabled) if (!m_Gridmode || !m_Enabled)
return; return;
@ -116,11 +130,23 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
} }
} }
lock (m_Scenes) NotifyMessageServerOfShutdown(scene);
{ if(m_Scenes.Contains(scene))
foreach (Scene scene in m_Scenes) m_Scenes.Remove(scene);
NotifyMessageServerOfShutdown(scene);
} scene.UnregisterModuleInterface<IPresenceModule>(this);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnSetRootAgentScene -= OnSetRootAgentScene;
scene.EventManager.OnMakeChildAgent -= OnMakeChildAgent;
}
public void PostInitialise()
{
}
public void Close()
{
} }
public string Name public string Name
@ -128,11 +154,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
get { return "PresenceModule"; } get { return "PresenceModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
public void RequestBulkPresenceData(UUID[] users) public void RequestBulkPresenceData(UUID[] users)
{ {
if (OnBulkPresenceData != null) if (OnBulkPresenceData != null)

View File

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -41,10 +42,11 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
/// <summary> /// <summary>
/// This module loads and saves OpenSimulator inventory archives /// This module loads and saves OpenSimulator inventory archives
/// </summary> /// </summary>
public class InventoryArchiverModule : IRegionModule, IInventoryArchiverModule public class InventoryArchiverModule : ISharedRegionModule, IInventoryArchiverModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -82,18 +84,28 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
DisablePresenceChecks = disablePresenceChecks; DisablePresenceChecks = disablePresenceChecks;
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
if (m_scenes.Count == 0) if (m_scenes.Count == 0)
{ {
scene.RegisterModuleInterface<IInventoryArchiverModule>(this); scene.RegisterModuleInterface<IInventoryArchiverModule>(this);
OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted; OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted;
scene.AddCommand( scene.AddCommand(
this, "load iar", this, "load iar",
"load iar <first> <last> <inventory path> <password> [<archive path>]", "load iar <first> <last> <inventory path> <password> [<archive path>]",
"Load user inventory archive.", HandleLoadInvConsoleCommand); "Load user inventory archive.", HandleLoadInvConsoleCommand);
scene.AddCommand( scene.AddCommand(
this, "save iar", this, "save iar",
"save iar <first> <last> <inventory path> <password> [<archive path>]", "save iar <first> <last> <inventory path> <password> [<archive path>]",
@ -101,10 +113,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
m_aScene = scene; m_aScene = scene;
} }
m_scenes[scene.RegionInfo.RegionID] = scene; m_scenes[scene.RegionInfo.RegionID] = scene;
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IInventoryArchiverModule>(this);
if(m_scenes.ContainsKey(scene.RegionInfo.RegionID))
m_scenes.Remove(scene.RegionInfo.RegionID);
}
public void PostInitialise() {} public void PostInitialise() {}
public void Close() {} public void Close() {}

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -39,7 +40,8 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
{ {
public class InventoryTransferModule : IInventoryTransferModule, IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class InventoryTransferModule : IInventoryTransferModule, ISharedRegionModule
{ {
private static readonly ILog m_log private static readonly ILog m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -50,10 +52,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
new Dictionary<UUID, Scene>(); new Dictionary<UUID, Scene>();
private IMessageTransferModule m_TransferModule = null; private IMessageTransferModule m_TransferModule = null;
private bool m_enabled = true;
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (config.Configs["Messaging"] != null) if (config.Configs["Messaging"] != null)
{ {
@ -62,29 +65,59 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
if (config.Configs["Messaging"].GetString( if (config.Configs["Messaging"].GetString(
"InventoryTransferModule", "InventoryTransferModule") != "InventoryTransferModule", "InventoryTransferModule") !=
"InventoryTransferModule") "InventoryTransferModule")
return; m_enabled = false;
} }
}
if (!m_Scenelist.Contains(scene)) public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_enabled)
{ {
m_Scenelist.Add(scene); if (!m_Scenelist.Contains(scene))
{
m_Scenelist.Add(scene);
scene.RegisterModuleInterface<IInventoryTransferModule>(this); scene.RegisterModuleInterface<IInventoryTransferModule>(this);
scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnClientClosed += ClientLoggedOut; scene.EventManager.OnClientClosed += ClientLoggedOut;
scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
}
} }
} }
public void RegionLoaded(Scene scene)
{
if (m_enabled)
{
if (m_Scenelist.Count > 0)
{
m_TransferModule = m_Scenelist[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INVENTORY TRANSFER] No Message transfer module found, transfers will be local only");
}
}
}
public void RemoveRegion(Scene scene)
{
if (m_Scenelist.Contains(scene))
m_Scenelist.Remove(scene);
scene.UnregisterModuleInterface<IInventoryTransferModule>(this);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnClientClosed -= ClientLoggedOut;
scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
}
public void PostInitialise() public void PostInitialise()
{ {
if (m_Scenelist.Count > 0)
{
m_TransferModule = m_Scenelist[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INVENTORY TRANSFER] No Message transfer module found, transfers will be local only");
}
} }
public void Close() public void Close()

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -37,36 +38,72 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.Lure namespace OpenSim.Region.CoreModules.Avatar.Lure
{ {
public class LureModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class LureModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly List<Scene> m_scenes = new List<Scene>(); private readonly List<Scene> m_scenes = new List<Scene>();
private bool m_enabled = true;
private IMessageTransferModule m_TransferModule = null; private IMessageTransferModule m_TransferModule = null;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (config.Configs["Messaging"] != null) if (config.Configs["Messaging"] != null)
{ {
if (config.Configs["Messaging"].GetString( if (config.Configs["Messaging"].GetString(
"LureModule", "LureModule") != "LureModule", "LureModule") !=
"LureModule") "LureModule")
return; m_enabled = false;
} }
}
lock (m_scenes) public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_enabled)
{ {
if (!m_scenes.Contains(scene)) lock (m_scenes)
{ {
m_scenes.Add(scene); if (!m_scenes.Contains(scene))
scene.EventManager.OnNewClient += OnNewClient; {
scene.EventManager.OnIncomingInstantMessage += m_scenes.Add(scene);
OnGridInstantMessage; scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnIncomingInstantMessage +=
OnGridInstantMessage;
}
} }
} }
} }
public void RegionLoaded(Scene scene)
{
if (m_enabled)
{
m_TransferModule =
m_scenes[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INSTANT MESSAGE]: No message transfer module, " +
"lures will not work!");
}
}
public void RemoveRegion(Scene scene)
{
if (m_scenes.Contains(scene))
m_scenes.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
scene.EventManager.OnIncomingInstantMessage -=
OnGridInstantMessage;
}
void OnNewClient(IClientAPI client) void OnNewClient(IClientAPI client)
{ {
client.OnInstantMessage += OnInstantMessage; client.OnInstantMessage += OnInstantMessage;
@ -76,12 +113,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Lure
public void PostInitialise() public void PostInitialise()
{ {
m_TransferModule =
m_scenes[0].RequestModuleInterface<IMessageTransferModule>();
if (m_TransferModule == null)
m_log.Error("[INSTANT MESSAGE]: No message transfer module, "+
"lures will not work!");
} }
public void Close() public void Close()

View File

@ -29,6 +29,7 @@ using System;
using System.Collections; using System.Collections;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
@ -41,24 +42,54 @@ using Caps=OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
{ {
public class ObjectAdd : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class ObjectAdd : ISharedRegionModule
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Scene m_scene; private Scene m_scene;
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene pScene, IConfigSource pSource) public void Initialise(IConfigSource pSource)
{ {
m_scene = pScene;
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
m_scene = scene;
m_scene.EventManager.OnRegisterCaps += RegisterCaps; m_scene.EventManager.OnRegisterCaps += RegisterCaps;
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnRegisterCaps -= RegisterCaps;
}
public void PostInitialise() public void PostInitialise()
{ {
} }
public void Close()
{
}
public string Name
{
get { return "ObjectAddModule"; }
}
public void RegisterCaps(UUID agentID, Caps caps) public void RegisterCaps(UUID agentID, Caps caps)
{ {
UUID capuuid = UUID.Random(); UUID capuuid = UUID.Random();
@ -348,22 +379,6 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
Array.Reverse(resultbytes); Array.Reverse(resultbytes);
return String.Format("<binary encoding=\"base64\">{0}</binary>",Convert.ToBase64String(resultbytes)); return String.Format("<binary encoding=\"base64\">{0}</binary>",Convert.ToBase64String(resultbytes));
} }
public void Close()
{
}
public string Name
{
get { return "ObjectAddModule"; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
} }
} }

View File

@ -30,6 +30,7 @@ using System.Collections;
using System.Globalization; using System.Globalization;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -38,20 +39,17 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.Profiles namespace OpenSim.Region.CoreModules.Avatar.Profiles
{ {
public class AvatarProfilesModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class AvatarProfilesModule : INonSharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Scene m_scene; private Scene m_scene;
private IProfileModule m_profileModule = null; private IProfileModule m_profileModule = null;
private bool m_enabled = true; private bool m_enabled = true;
public AvatarProfilesModule() #region INonSharedRegionModule Members
{
}
#region IRegionModule Members public void Initialise(IConfigSource config)
public void Initialise(Scene scene, IConfigSource config)
{ {
IConfig profileConfig = config.Configs["Profile"]; IConfig profileConfig = config.Configs["Profile"];
if (profileConfig != null) if (profileConfig != null)
@ -62,18 +60,31 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
return; return;
} }
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
m_scene = scene; m_scene = scene;
m_scene.EventManager.OnNewClient += NewClient; m_scene.EventManager.OnNewClient += NewClient;
} }
public void PostInitialise() public void RegionLoaded(Scene scene)
{ {
if (!m_enabled) if (!m_enabled)
return; return;
m_profileModule = m_scene.RequestModuleInterface<IProfileModule>(); m_profileModule = m_scene.RequestModuleInterface<IProfileModule>();
} }
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnNewClient -= NewClient;
}
public void Close() public void Close()
{ {
} }
@ -83,11 +94,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
get { return "AvatarProfilesModule"; } get { return "AvatarProfilesModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
public void NewClient(IClientAPI client) public void NewClient(IClientAPI client)

View File

@ -32,6 +32,7 @@ using System.Net;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Packets; using OpenMetaverse.Packets;
@ -52,11 +53,13 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
public OSDMap body; public OSDMap body;
} }
public class EventQueueGetModule : IEventQueue, IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class EventQueueGetModule : IEventQueue, INonSharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected Scene m_scene = null; protected Scene m_scene = null;
private IConfigSource m_gConfig; private IConfigSource m_gConfig;
private IConfig m_startupConfig;
bool enabledYN = false; bool enabledYN = false;
private Dictionary<UUID, int> m_ids = new Dictionary<UUID, int>(); private Dictionary<UUID, int> m_ids = new Dictionary<UUID, int>();
@ -65,23 +68,31 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
private Dictionary<UUID, UUID> m_QueueUUIDAvatarMapping = new Dictionary<UUID, UUID>(); private Dictionary<UUID, UUID> m_QueueUUIDAvatarMapping = new Dictionary<UUID, UUID>();
private Dictionary<UUID, UUID> m_AvatarQueueUUIDMapping = new Dictionary<UUID, UUID>(); private Dictionary<UUID, UUID> m_AvatarQueueUUIDMapping = new Dictionary<UUID, UUID>();
#region IRegionModule methods #region INonSharedRegionModule methods
public virtual void Initialise(Scene scene, IConfigSource config) public virtual void Initialise(IConfigSource config)
{ {
m_gConfig = config; m_gConfig = config;
IConfig startupConfig = m_gConfig.Configs["Startup"]; m_startupConfig = m_gConfig.Configs["Startup"];
}
ReadConfigAndPopulate(scene, startupConfig, "Startup"); public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
ReadConfigAndPopulate(scene, m_startupConfig, "Startup");
if (enabledYN) if (enabledYN)
{ {
m_scene = scene; m_scene = scene;
scene.RegisterModuleInterface<IEventQueue>(this); scene.RegisterModuleInterface<IEventQueue>(this);
// Register fallback handler // Register fallback handler
// Why does EQG Fail on region crossings! // Why does EQG Fail on region crossings!
//scene.CommsManager.HttpServer.AddLLSDHandler("/CAPS/EQG/", EventQueueFallBack); //scene.CommsManager.HttpServer.AddLLSDHandler("/CAPS/EQG/", EventQueueFallBack);
scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnNewClient += OnNewClient;
@ -99,7 +110,14 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
{ {
m_gConfig = null; m_gConfig = null;
} }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
} }
private void ReadConfigAndPopulate(Scene scene, IConfig startupConfig, string p) private void ReadConfigAndPopulate(Scene scene, IConfig startupConfig, string p)
@ -107,10 +125,6 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
enabledYN = startupConfig.GetBoolean("EventQueue", true); enabledYN = startupConfig.GetBoolean("EventQueue", true);
} }
public void PostInitialise()
{
}
public virtual void Close() public virtual void Close()
{ {
} }
@ -120,10 +134,6 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
get { return "EventQueueGetModule"; } get { return "EventQueueGetModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
/// <summary> /// <summary>

View File

@ -25,10 +25,12 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
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 Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -39,7 +41,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Framework.Monitoring namespace OpenSim.Region.CoreModules.Framework.Monitoring
{ {
public class MonitorModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MonitorModule : INonSharedRegionModule
{ {
private Scene m_scene; private Scene m_scene;
private readonly List<IMonitor> m_monitors = new List<IMonitor>(); private readonly List<IMonitor> m_monitors = new List<IMonitor>();
@ -62,9 +65,19 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring
} }
} }
#region Implementation of IRegionModule #region Implementation of INonSharedRegionModule
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
@ -77,6 +90,51 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring
MainServer.Instance.AddHTTPHandler("/monitorstats/" + m_scene.RegionInfo.RegionID + "/", StatsPage); MainServer.Instance.AddHTTPHandler("/monitorstats/" + m_scene.RegionInfo.RegionID + "/", StatsPage);
} }
public void RegionLoaded(Scene scene)
{
m_monitors.Add(new AgentCountMonitor(m_scene));
m_monitors.Add(new ChildAgentCountMonitor(m_scene));
m_monitors.Add(new GCMemoryMonitor());
m_monitors.Add(new ObjectCountMonitor(m_scene));
m_monitors.Add(new PhysicsFrameMonitor(m_scene));
m_monitors.Add(new PhysicsUpdateFrameMonitor(m_scene));
m_monitors.Add(new PWSMemoryMonitor());
m_monitors.Add(new ThreadCountMonitor());
m_monitors.Add(new TotalFrameMonitor(m_scene));
m_monitors.Add(new EventFrameMonitor(m_scene));
m_monitors.Add(new LandFrameMonitor(m_scene));
m_monitors.Add(new LastFrameTimeMonitor(m_scene));
m_alerts.Add(new DeadlockAlert(m_monitors.Find(x => x is LastFrameTimeMonitor) as LastFrameTimeMonitor));
foreach (IAlert alert in m_alerts)
{
alert.OnTriggerAlert += OnTriggerAlert;
}
}
public void RemoveRegion(Scene scene)
{
MainServer.Instance.RemoveHTTPHandler("", "/monitorstats/" + m_scene.RegionInfo.RegionID + "/");
m_monitors.Clear();
foreach (IAlert alert in m_alerts)
{
alert.OnTriggerAlert -= OnTriggerAlert;
}
m_alerts.Clear();
}
public void Close()
{
}
public string Name
{
get { return "Region Health Monitoring Module"; }
}
public Hashtable StatsPage(Hashtable request) public Hashtable StatsPage(Hashtable request)
{ {
// If request was for a specific monitor // If request was for a specific monitor
@ -132,49 +190,10 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring
return ereply; return ereply;
} }
public void PostInitialise()
{
m_monitors.Add(new AgentCountMonitor(m_scene));
m_monitors.Add(new ChildAgentCountMonitor(m_scene));
m_monitors.Add(new GCMemoryMonitor());
m_monitors.Add(new ObjectCountMonitor(m_scene));
m_monitors.Add(new PhysicsFrameMonitor(m_scene));
m_monitors.Add(new PhysicsUpdateFrameMonitor(m_scene));
m_monitors.Add(new PWSMemoryMonitor());
m_monitors.Add(new ThreadCountMonitor());
m_monitors.Add(new TotalFrameMonitor(m_scene));
m_monitors.Add(new EventFrameMonitor(m_scene));
m_monitors.Add(new LandFrameMonitor(m_scene));
m_monitors.Add(new LastFrameTimeMonitor(m_scene));
m_alerts.Add(new DeadlockAlert(m_monitors.Find(x => x is LastFrameTimeMonitor) as LastFrameTimeMonitor));
foreach (IAlert alert in m_alerts)
{
alert.OnTriggerAlert += OnTriggerAlert;
}
}
void OnTriggerAlert(System.Type reporter, string reason, bool fatal) void OnTriggerAlert(System.Type reporter, string reason, bool fatal)
{ {
m_log.Error("[Monitor] " + reporter.Name + " for " + m_scene.RegionInfo.RegionName + " reports " + reason + " (Fatal: " + fatal + ")"); m_log.Error("[Monitor] " + reporter.Name + " for " + m_scene.RegionInfo.RegionName + " reports " + reason + " (Fatal: " + fatal + ")");
} }
public void Close()
{
}
public string Name
{
get { return "Region Health Monitoring Module"; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
} }
} }

View File

@ -1,4 +1,4 @@
/* /*
* 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.
* *
@ -32,6 +32,7 @@ using System.Net;
using System.Reflection; using System.Reflection;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using Nwc.XmlRpc; using Nwc.XmlRpc;
@ -46,7 +47,8 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Region.CoreModules.Hypergrid namespace OpenSim.Region.CoreModules.Hypergrid
{ {
public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class HGStandaloneLoginModule : ISharedRegionModule, ILoginServiceToRegionsConnector
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -56,47 +58,58 @@ namespace OpenSim.Region.CoreModules.Hypergrid
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
protected HGLoginAuthService m_loginService; protected HGLoginAuthService m_loginService;
private bool authenticate = true;
private string welcomeMessage = "Welcome to OpenSim";
private IConfig startupConfig;
private IConfig standaloneConfig;
#region ISharedRegionModule Members
#region IRegionModule Members public void Initialise(IConfigSource source)
{
startupConfig = source.Configs["Startup"];
standaloneConfig = source.Configs["StandAlone"];
if (standaloneConfig != null)
{
authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true);
welcomeMessage = standaloneConfig.GetString("welcome_message");
}
m_enabled = !startupConfig.GetBoolean("gridmode", false);
}
public void Initialise(Scene scene, IConfigSource source) public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
}
public void RegionLoaded(Scene scene)
{ {
if (m_firstScene == null) if (m_firstScene == null)
{ {
m_firstScene = scene; m_firstScene = scene;
IConfig startupConfig = source.Configs["Startup"];
if (startupConfig != null)
{
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;
string welcomeMessage = "Welcome to OpenSim";
IConfig standaloneConfig = source.Configs["StandAlone"];
if (standaloneConfig != null)
{
authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true);
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 = MainServer.Instance; IHttpServer httpServer = MainServer.Instance;
//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 m_loginService
= new HGLoginAuthService( = new HGLoginAuthService(
(UserManagerBase)m_firstScene.CommsManager.UserAdminService, (UserManagerBase)m_firstScene.CommsManager.UserAdminService,
welcomeMessage, welcomeMessage,
m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.InterServiceInventoryService,
m_firstScene.CommsManager.NetworkServersInfo, m_firstScene.CommsManager.NetworkServersInfo,
authenticate, authenticate,
rootFolder, rootFolder,
this); this);
httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod); httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod);
@ -113,6 +126,19 @@ namespace OpenSim.Region.CoreModules.Hypergrid
} }
} }
public void RemoveRegion(Scene scene)
{
if (scene == m_firstScene)
{
IHttpServer httpServer = MainServer.Instance;
httpServer.RemoveXmlRPCHandler("hg_login");
httpServer.RemoveXmlRPCHandler("check_auth_session");
httpServer.RemoveXmlRPCHandler("get_avatar_appearance");
httpServer.RemoveXmlRPCHandler("update_avatar_appearance");
}
m_scenes.Remove(scene);
}
public void PostInitialise() public void PostInitialise()
{ {
@ -128,11 +154,6 @@ namespace OpenSim.Region.CoreModules.Hypergrid
get { return "HGStandaloneLoginModule"; } get { return "HGStandaloneLoginModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
protected void AddScene(Scene scene) protected void AddScene(Scene scene)

View File

@ -32,6 +32,7 @@ using System.Net;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
@ -42,7 +43,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.InterGrid namespace OpenSim.Region.CoreModules.InterGrid
{ {
public class OGSRadmin : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class OGSRadmin : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly List<Scene> m_scenes = new List<Scene>(); private readonly List<Scene> m_scenes = new List<Scene>();
@ -56,7 +58,6 @@ namespace OpenSim.Region.CoreModules.InterGrid
get { return "OGS Supporting RAdmin"; } get { return "OGS Supporting RAdmin"; }
} }
public void Initialise(IConfigSource source) public void Initialise(IConfigSource source)
{ {
m_settings = source; m_settings = source;
@ -67,6 +68,11 @@ namespace OpenSim.Region.CoreModules.InterGrid
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene) public void AddRegion(Scene scene)
{ {
lock (m_scenes) lock (m_scenes)
@ -77,14 +83,10 @@ namespace OpenSim.Region.CoreModules.InterGrid
{ {
lock (m_scenes) lock (m_scenes)
m_scenes.Remove(scene); m_scenes.Remove(scene);
MainServer.Instance.RemoveXmlRPCHandler("grid_message");
} }
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)
{
}
public void PostInitialise()
{ {
if (m_settings.Configs["Startup"].GetBoolean("gridmode", false)) if (m_settings.Configs["Startup"].GetBoolean("gridmode", false))
{ {
@ -93,21 +95,8 @@ namespace OpenSim.Region.CoreModules.InterGrid
} }
} }
#endregion public void PostInitialise()
#region IRegionModule
public void Initialise(Scene scene, IConfigSource source)
{ {
m_settings = source;
lock (m_scenes)
m_scenes.Add(scene);
}
public bool IsSharedModule
{
get { return true; }
} }
#endregion #endregion

View File

@ -35,6 +35,7 @@ using System.Security.Cryptography.X509Certificates;
using System.Threading; using System.Threading;
using System.Web; using System.Web;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
@ -75,8 +76,9 @@ namespace OpenSim.Region.CoreModules.InterGrid
public bool visible_to_parent; public bool visible_to_parent;
public string teleported_into_region; public string teleported_into_region;
} }
public class OpenGridProtocolModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class OpenGridProtocolModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private List<Scene> m_scene = new List<Scene>(); private List<Scene> m_scene = new List<Scene>();
@ -92,21 +94,22 @@ namespace OpenSim.Region.CoreModules.InterGrid
private bool httpSSL = false; private bool httpSSL = false;
private uint httpsslport = 0; private uint httpsslport = 0;
private bool GridMode = false; private bool GridMode = false;
private bool m_enabled = false;
private IConfig cfg = null;
private IConfig httpcfg = null;
private IConfig startupcfg = null;
#region ISharedRegionModule Members
#region IRegionModule Members public void Initialise(IConfigSource config)
public void Initialise(Scene scene, IConfigSource config)
{ {
bool enabled = false;
IConfig cfg = null;
IConfig httpcfg = null;
IConfig startupcfg = null;
try try
{ {
cfg = config.Configs["OpenGridProtocol"]; cfg = config.Configs["OpenGridProtocol"];
} catch (NullReferenceException) }
catch (NullReferenceException)
{ {
enabled = false; m_enabled = false;
} }
try try
@ -128,15 +131,15 @@ namespace OpenSim.Region.CoreModules.InterGrid
if (startupcfg != null) if (startupcfg != null)
{ {
GridMode = enabled = startupcfg.GetBoolean("gridmode", false); GridMode = m_enabled = startupcfg.GetBoolean("gridmode", false);
} }
if (cfg != null) if (cfg != null)
{ {
enabled = cfg.GetBoolean("ogp_enabled", false); m_enabled = cfg.GetBoolean("ogp_enabled", false);
LastNameSuffix = cfg.GetString("ogp_lastname_suffix", "_EXTERNAL"); LastNameSuffix = cfg.GetString("ogp_lastname_suffix", "_EXTERNAL");
FirstNamePrefix = cfg.GetString("ogp_firstname_prefix", ""); FirstNamePrefix = cfg.GetString("ogp_firstname_prefix", "");
if (enabled) if (m_enabled)
{ {
m_log.Warn("[OGP]: Open Grid Protocol is on, Listening for Clients on /agent/"); m_log.Warn("[OGP]: Open Grid Protocol is on, Listening for Clients on /agent/");
lock (m_scene) lock (m_scene)
@ -165,35 +168,61 @@ namespace OpenSim.Region.CoreModules.InterGrid
} }
} }
// can't pick the region 'agent' because it would conflict with our agent domain handler }
// a zero length region name would conflict with are base region seed cap }
if (!SceneListDuplicateCheck(scene.RegionInfo.RegionName) && scene.RegionInfo.RegionName.ToLower() != "agent" && scene.RegionInfo.RegionName.Length > 0) }
{ }
MainServer.Instance.AddLLSDHandler(
"/" + HttpUtility.UrlPathEncode(scene.RegionInfo.RegionName.ToLower()),
ProcessRegionDomainSeed);
}
if (!m_scene.Contains(scene)) public Type ReplaceableInterface
m_scene.Add(scene); {
} get { return null; }
} }
}
lock (m_scene) public void AddRegion(Scene scene)
{
if (m_enabled)
{ {
if (m_scene.Count == 1) lock (m_scene)
{ {
if (httpcfg != null) if (m_scene.Count == 1)
{ {
httpSSL = httpcfg.GetBoolean("http_listener_ssl", false); if (httpcfg != null)
httpsCN = httpcfg.GetString("http_listener_cn", scene.RegionInfo.ExternalHostName); {
if (httpsCN.Length == 0) httpSSL = httpcfg.GetBoolean("http_listener_ssl", false);
httpsCN = scene.RegionInfo.ExternalHostName; httpsCN = httpcfg.GetString("http_listener_cn", scene.RegionInfo.ExternalHostName);
httpsslport = (uint)httpcfg.GetInt("http_listener_sslport",((int)scene.RegionInfo.HttpPort + 1)); if (httpsCN.Length == 0)
httpsCN = scene.RegionInfo.ExternalHostName;
httpsslport = (uint)httpcfg.GetInt("http_listener_sslport", ((int)scene.RegionInfo.HttpPort + 1));
}
} }
} }
// can't pick the region 'agent' because it would conflict with our agent domain handler
// a zero length region name would conflict with are base region seed cap
if (!SceneListDuplicateCheck(scene.RegionInfo.RegionName) && scene.RegionInfo.RegionName.ToLower() != "agent" && scene.RegionInfo.RegionName.Length > 0)
{
MainServer.Instance.AddLLSDHandler(
"/" + HttpUtility.UrlPathEncode(scene.RegionInfo.RegionName.ToLower()),
ProcessRegionDomainSeed);
}
if (!m_scene.Contains(scene))
m_scene.Add(scene);
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
MainServer.Instance.RemoveLLSDHandler(
"/" + HttpUtility.UrlPathEncode(scene.RegionInfo.RegionName.ToLower()),
ProcessRegionDomainSeed);
if (m_scene.Contains(scene))
m_scene.Remove(scene);
}
public void PostInitialise() public void PostInitialise()
{ {
@ -209,11 +238,6 @@ namespace OpenSim.Region.CoreModules.InterGrid
get { return "OpenGridProtocolModule"; } get { return "OpenGridProtocolModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
public OSD ProcessRegionDomainSeed(string path, OSD request, string endpoint) public OSD ProcessRegionDomainSeed(string path, OSD request, string endpoint)

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Imaging; using OpenMetaverse.Imaging;
@ -40,7 +41,8 @@ using System.Reflection;
namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
{ {
public class DynamicTextureModule : IRegionModule, IDynamicTextureManager [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class DynamicTextureModule : ISharedRegionModule, IDynamicTextureManager
{ {
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -210,9 +212,14 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
}
public void AddRegion(Scene scene)
{ {
if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID)) if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID))
{ {
@ -221,6 +228,24 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
} }
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID))
{
RegisteredScenes.Remove(scene.RegionInfo.RegionID);
scene.UnregisterModuleInterface<IDynamicTextureManager>(this);
}
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -234,11 +259,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
get { return "DynamicTextureModule"; } get { return "DynamicTextureModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
#region Nested type: DynamicTextureUpdater #region Nested type: DynamicTextureUpdater
@ -358,18 +378,18 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
// tmptex.DefaultTexture.Fullbright = true; // tmptex.DefaultTexture.Fullbright = true;
part.UpdateTexture(tmptex); part.UpdateTexture(tmptex);
} }
if (oldID != UUID.Zero && ((Disp & DISP_EXPIRE) != 0)) if (oldID != UUID.Zero && ((Disp & DISP_EXPIRE) != 0))
{ {
if (oldAsset == null) oldAsset = scene.AssetService.Get(oldID.ToString()); if (oldAsset == null) oldAsset = scene.AssetService.Get(oldID.ToString());
if (oldAsset != null) if (oldAsset != null)
{ {
if (oldAsset.Temporary == true) if (oldAsset.Temporary == true)
{ {
scene.AssetService.Delete(oldID.ToString()); scene.AssetService.Delete(oldID.ToString());
} }
} }
} }
} }

View File

@ -32,6 +32,7 @@ using System.Text.RegularExpressions;
using DotNetOpenMail; using DotNetOpenMail;
using DotNetOpenMail.SmtpAuth; using DotNetOpenMail.SmtpAuth;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -40,6 +41,7 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Scripting.EmailModules namespace OpenSim.Region.CoreModules.Scripting.EmailModules
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class EmailModule : IEmailModule public class EmailModule : IEmailModule
{ {
// //
@ -94,7 +96,7 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
} }
} }
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
m_Config = config; m_Config = config;
IConfig SMTPConfig; IConfig SMTPConfig;
@ -136,7 +138,16 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
m_Enabled = false; m_Enabled = false;
return; return;
} }
m_log.Info("[EMAIL] Activated DefaultEmailModule");
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
// It's a go! // It's a go!
if (m_Enabled) if (m_Enabled)
{ {
@ -155,8 +166,20 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
m_Scenes.Add(scene.RegionInfo.RegionHandle, scene); m_Scenes.Add(scene.RegionInfo.RegionHandle, scene);
} }
} }
}
}
m_log.Info("[EMAIL] Activated DefaultEmailModule"); public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IEmailModule>(this);
if (m_Scenes.ContainsKey(scene.RegionInfo.RegionHandle))
{
m_Scenes.Remove(scene.RegionInfo.RegionHandle);
} }
} }
@ -173,11 +196,6 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
get { return "DefaultEmailModule"; } get { return "DefaultEmailModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
/// <summary> /// <summary>
/// Delay function using thread in seconds /// Delay function using thread in seconds
/// </summary> /// </summary>

View File

@ -31,6 +31,7 @@ using System.IO;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -84,7 +85,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Scripting.HttpRequest namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
{ {
public class HttpRequestModule : IRegionModule, IHttpRequestModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class HttpRequestModule : ISharedRegionModule, IHttpRequestModule
{ {
private object HttpListLock = new object(); private object HttpListLock = new object();
private int httpTimeout = 30000; private int httpTimeout = 30000;
@ -229,18 +231,35 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
m_proxyurl = config.Configs["Startup"].GetString("HttpProxy");
m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions");
m_pendingRequests = new Dictionary<UUID, HttpRequestClass>();
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.RegisterModuleInterface<IHttpRequestModule>(this); m_scene.RegisterModuleInterface<IHttpRequestModule>(this);
}
m_proxyurl = config.Configs["Startup"].GetString("HttpProxy"); public Type ReplaceableInterface
m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions"); {
get { return null; }
}
m_pendingRequests = new Dictionary<UUID, HttpRequestClass>(); public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IHttpRequestModule>(this);
} }
public void PostInitialise() public void PostInitialise()
@ -256,11 +275,6 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
get { return m_name; } get { return m_name; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
} }

View File

@ -126,6 +126,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
scene.UnregisterModuleInterface<IUrlModule>(this);
scene.EventManager.OnScriptReset -= OnScriptReset;
} }
public void Close() public void Close()

View File

@ -29,6 +29,7 @@ using System;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Net; using System.Net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Imaging; using OpenMetaverse.Imaging;
@ -39,7 +40,8 @@ using System.Reflection;
namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
{ {
public class LoadImageURLModule : IRegionModule, IDynamicTextureRender [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class LoadImageURLModule : ISharedRegionModule, IDynamicTextureRender
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -97,20 +99,28 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{
m_proxyurl = config.Configs["Startup"].GetString("HttpProxy");
m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions");
}
public void AddRegion(Scene scene)
{ {
if (m_scene == null) if (m_scene == null)
{ {
m_scene = scene; m_scene = scene;
} }
m_proxyurl = config.Configs["Startup"].GetString("HttpProxy");
m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions");
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{ {
m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>(); m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>();
if (m_textureManager != null) if (m_textureManager != null)
@ -119,6 +129,14 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
} }
} }
public void RemoveRegion(Scene scene)
{
}
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
@ -128,11 +146,6 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
get { return m_name; } get { return m_name; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
private void MakeHttpRequest(string url, UUID requestID) private void MakeHttpRequest(string url, UUID requestID)

View File

@ -31,6 +31,7 @@ using System.Drawing.Imaging;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Net; using System.Net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Imaging; using OpenMetaverse.Imaging;
@ -43,7 +44,8 @@ using System.Reflection;
namespace OpenSim.Region.CoreModules.Scripting.VectorRender namespace OpenSim.Region.CoreModules.Scripting.VectorRender
{ {
public class VectorRenderModule : IRegionModule, IDynamicTextureRender [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class VectorRenderModule : ISharedRegionModule, IDynamicTextureRender
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -110,15 +112,10 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (m_scene == null)
{
m_scene = scene;
}
if (m_graph == null) if (m_graph == null)
{ {
Bitmap bitmap = new Bitmap(1024, 1024, PixelFormat.Format32bppArgb); Bitmap bitmap = new Bitmap(1024, 1024, PixelFormat.Format32bppArgb);
@ -133,7 +130,20 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
m_log.DebugFormat("[VECTORRENDERMODULE]: using font \"{0}\" for text rendering.", m_fontName); m_log.DebugFormat("[VECTORRENDERMODULE]: using font \"{0}\" for text rendering.", m_fontName);
} }
public void PostInitialise() public void AddRegion(Scene scene)
{
if (m_scene == null)
{
m_scene = scene;
}
}
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{ {
m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>(); m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>();
if (m_textureManager != null) if (m_textureManager != null)
@ -142,6 +152,14 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
} }
} }
public void RemoveRegion(Scene scene)
{
}
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
@ -151,11 +169,6 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
get { return m_name; } get { return m_name; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
private void Draw(string data, UUID id, string extraParams) private void Draw(string data, UUID id, string extraParams)

View File

@ -28,6 +28,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -85,7 +86,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Scripting.WorldComm namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{ {
public class WorldCommModule : IRegionModule, IWorldComm [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class WorldCommModule : INonSharedRegionModule, IWorldComm
{ {
// private static readonly ILog m_log = // private static readonly ILog m_log =
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -98,9 +100,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
private int m_saydistance = 30; private int m_saydistance = 30;
private int m_shoutdistance = 100; private int m_shoutdistance = 100;
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
// wrap this in a try block so that defaults will work if // wrap this in a try block so that defaults will work if
// the config file doesn't specify otherwise. // the config file doesn't specify otherwise.
@ -120,17 +122,33 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
if (maxlisteners < 1) maxlisteners = int.MaxValue; if (maxlisteners < 1) maxlisteners = int.MaxValue;
if (maxhandles < 1) maxhandles = int.MaxValue; if (maxhandles < 1) maxhandles = int.MaxValue;
m_scene = scene;
m_scene.RegisterModuleInterface<IWorldComm>(this);
m_listenerManager = new ListenerManager(maxlisteners, maxhandles); m_listenerManager = new ListenerManager(maxlisteners, maxhandles);
m_scene.EventManager.OnChatFromClient += DeliverClientMessage;
m_scene.EventManager.OnChatBroadcast += DeliverClientMessage;
m_pendingQ = new Queue(); m_pendingQ = new Queue();
m_pending = Queue.Synchronized(m_pendingQ); m_pending = Queue.Synchronized(m_pendingQ);
} }
public void PostInitialise() public void AddRegion(Scene scene)
{ {
m_scene = scene;
m_scene.RegisterModuleInterface<IWorldComm>(this);
m_scene.EventManager.OnChatFromClient += DeliverClientMessage;
m_scene.EventManager.OnChatBroadcast += DeliverClientMessage;
}
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IWorldComm>(this);
scene.EventManager.OnChatFromClient -= DeliverClientMessage;
scene.EventManager.OnChatBroadcast -= DeliverClientMessage;
} }
public void Close() public void Close()
@ -142,11 +160,6 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
get { return "WorldCommModule"; } get { return "WorldCommModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
#region IWorldComm Members #region IWorldComm Members

View File

@ -32,6 +32,7 @@ using System.Net;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
@ -76,7 +77,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Scripting.XMLRPC namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
{ {
public class XMLRPCModule : IRegionModule, IXMLRPC [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class XMLRPCModule : ISharedRegionModule, IXMLRPC
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -94,9 +96,9 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
private int RemoteReplyScriptWait = 300; private int RemoteReplyScriptWait = 300;
private object XMLRPCListLock = new object(); private object XMLRPCListLock = new object();
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
// We need to create these early because the scripts might be calling // We need to create these early because the scripts might be calling
// But since this gets called for every region, we need to make sure they // But since this gets called for every region, we need to make sure they
@ -116,7 +118,14 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
{ {
} }
} }
}
public void PostInitialise()
{
}
public void AddRegion(Scene scene)
{
if (!m_scenes.Contains(scene)) if (!m_scenes.Contains(scene))
{ {
m_scenes.Add(scene); m_scenes.Add(scene);
@ -125,7 +134,12 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
} }
} }
public void PostInitialise() public Type ReplaceableInterface
{
get { return null; }
}
private Dictionary<Scene, BaseHttpServer> m_HttpServers = new Dictionary<Scene, BaseHttpServer>();
public void RegionLoaded(Scene scene)
{ {
if (IsEnabled()) if (IsEnabled())
{ {
@ -133,9 +147,31 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
// Attach xmlrpc handlers // Attach xmlrpc handlers
m_log.Info("[REMOTE_DATA]: " + m_log.Info("[REMOTE_DATA]: " +
"Starting XMLRPC Server on port " + m_remoteDataPort + " for llRemoteData commands."); "Starting XMLRPC Server on port " + m_remoteDataPort + " for llRemoteData commands.");
BaseHttpServer httpServer = new BaseHttpServer((uint) m_remoteDataPort); BaseHttpServer httpServer = new BaseHttpServer((uint)m_remoteDataPort);
httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData); httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData);
httpServer.Start(); httpServer.Start();
m_HttpServers.Add(scene, httpServer);
}
}
public void RemoveRegion(Scene scene)
{
if (m_scenes.Contains(scene))
m_scenes.Remove(scene);
scene.UnregisterModuleInterface<IXMLRPC>(this);
if (IsEnabled())
{
// Start http server
// Attach xmlrpc handlers
if (m_HttpServers.ContainsKey(scene))
{
BaseHttpServer httpServer;
m_HttpServers.TryGetValue(scene, out httpServer);
m_log.Info("[REMOTE_DATA]: " +
"Stopping XMLRPC Server on port " + m_remoteDataPort + " for llRemoteData commands.");
httpServer.RemoveXmlRPCHandler("llRemoteData");
httpServer.Stop();
}
} }
} }
@ -148,11 +184,6 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
get { return m_name; } get { return m_name; }
} }
public bool IsSharedModule
{
get { return true; }
}
public int Port public int Port
{ {
get { return m_remoteDataPort; } get { return m_remoteDataPort; }

View File

@ -47,7 +47,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Asset
private IConfigSource m_Config; private IConfigSource m_Config;
bool m_Registered = false; bool m_Registered = false;
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -51,7 +51,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid
bool m_Registered = false; bool m_Registered = false;
HypergridServiceInConnector m_HypergridHandler; HypergridServiceInConnector m_HypergridHandler;
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -47,7 +47,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory
private IConfigSource m_Config; private IConfigSource m_Config;
bool m_Registered = false; bool m_Registered = false;
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land
private IConfigSource m_Config; private IConfigSource m_Config;
private List<Scene> m_Scenes = new List<Scene>(); private List<Scene> m_Scenes = new List<Scene>();
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour
private IConfigSource m_Config; private IConfigSource m_Config;
private List<Scene> m_Scenes = new List<Scene>(); private List<Scene> m_Scenes = new List<Scene>();
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -49,7 +49,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Simulation
private IConfigSource m_Config; private IConfigSource m_Config;
bool m_Registered = false; bool m_Registered = false;
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -48,7 +48,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
#endregion /* Events */ #endregion /* Events */
#region IRegionModule #region ISharedRegionModule
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {
@ -136,7 +136,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
} }
} }
#endregion /* IRegionModule */ #endregion
#region IInterregionComms #region IInterregionComms

View File

@ -66,7 +66,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
protected bool m_safemode; protected bool m_safemode;
protected IPAddress m_thisIP; protected IPAddress m_thisIP;
#region IRegionModule #region ISharedRegionModule
public virtual void Initialise(IConfigSource config) public virtual void Initialise(IConfigSource config)
{ {
@ -149,7 +149,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
MainServer.Instance.AddHTTPHandler("/object/", ObjectHandler); MainServer.Instance.AddHTTPHandler("/object/", ObjectHandler);
} }
#endregion /* IRegionModule */ #endregion
#region IInterregionComms #region IInterregionComms
@ -435,12 +435,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
} }
OSDMap resp = new OSDMap(2); OSDMap resp = new OSDMap(2);
string reason = String.Empty; string reason = String.Empty;
uint teleportFlags = 0; uint teleportFlags = 0;
if (args.ContainsKey("teleport_flags")) if (args.ContainsKey("teleport_flags"))
{ {
teleportFlags = args["teleport_flags"].AsUInteger(); teleportFlags = args["teleport_flags"].AsUInteger();
} }
// This is the meaning of POST agent // This is the meaning of POST agent
m_regionClient.AdjustUserInformation(aCircuit); m_regionClient.AdjustUserInformation(aCircuit);

View File

@ -422,9 +422,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
currentRegionSettings.TerrainTexture4 = loadedRegionSettings.TerrainTexture4; currentRegionSettings.TerrainTexture4 = loadedRegionSettings.TerrainTexture4;
currentRegionSettings.UseEstateSun = loadedRegionSettings.UseEstateSun; currentRegionSettings.UseEstateSun = loadedRegionSettings.UseEstateSun;
currentRegionSettings.WaterHeight = loadedRegionSettings.WaterHeight; currentRegionSettings.WaterHeight = loadedRegionSettings.WaterHeight;
IEstateModule estateModule = m_scene.RequestModuleInterface<IEstateModule>(); IEstateModule estateModule = m_scene.RequestModuleInterface<IEstateModule>();
estateModule.sendRegionHandshakeToAll();
if (estateModule != null)
estateModule.sendRegionHandshakeToAll();
return true; return true;
} }

View File

@ -81,6 +81,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
scene.UnregisterModuleInterface<IRegionArchiverModule>(this);
} }
public void Close() public void Close()

View File

@ -36,6 +36,7 @@ using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Serialization; using OpenSim.Framework.Serialization;
using OpenSim.Framework.Serialization.External;
using OpenSim.Region.CoreModules.World.Serialiser; using OpenSim.Region.CoreModules.World.Serialiser;
using OpenSim.Region.CoreModules.World.Terrain; using OpenSim.Region.CoreModules.World.Terrain;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
@ -214,7 +215,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
// Also check that direct entries which will also have a file entry containing that directory doesn't // Also check that direct entries which will also have a file entry containing that directory doesn't
// upset load // upset load
tar.WriteDir(ArchiveConstants.TERRAINS_PATH); tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile()); tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
string part1Name = "object1"; string part1Name = "object1";
@ -234,6 +235,45 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition); UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition);
part1.Name = part1Name; part1.Name = part1Name;
SceneObjectGroup object1 = new SceneObjectGroup(part1); SceneObjectGroup object1 = new SceneObjectGroup(part1);
// Let's put some inventory items into our object
UUID soundItemUuid = UUID.Parse("00000000-0000-0000-0000-000000000002");
Type type = GetType();
Assembly assembly = type.Assembly;
string soundDataResourceName = null;
string[] names = assembly.GetManifestResourceNames();
foreach (string name in names)
{
if (name.EndsWith(".Resources.test-sound.wav"))
soundDataResourceName = name;
}
Assert.That(soundDataResourceName, Is.Not.Null);
byte[] soundData;
Console.WriteLine("Loading " + soundDataResourceName);
using (Stream resource = assembly.GetManifestResourceStream(soundDataResourceName))
{
using (BinaryReader br = new BinaryReader(resource))
{
// FIXME: Use the inspector insteadthere are so many forums and lists already, though admittedly none of them are suitable for cross virtual-enivornemnt discussion
soundData = br.ReadBytes(99999999);
UUID soundUuid = UUID.Parse("00000000-0000-0000-0000-000000000001");
string soundAssetFileName
= ArchiveConstants.ASSETS_PATH + soundUuid
+ ArchiveConstants.ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.SoundWAV];
tar.WriteFile(soundAssetFileName, soundData);
/*
AssetBase soundAsset = AssetHelpers.CreateAsset(soundUuid, soundData);
scene.AssetService.Store(soundAsset);
asset1FileName = ArchiveConstants.ASSETS_PATH + soundUuid + ".wav";
*/
TaskInventoryItem item1 = new TaskInventoryItem { AssetID = soundUuid, ItemID = soundItemUuid };
part1.Inventory.AddInventoryItem(item1, true);
}
}
scene.AddNewSceneObject(object1, false); scene.AddNewSceneObject(object1, false);
string object1FileName = string.Format( string object1FileName = string.Format(
@ -265,10 +305,116 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
Assert.That( Assert.That(
object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal"); object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal");
// Need to implement a method to get the task inventory item by name (since the uuid will have changed on load)
/*
TaskInventoryItem loadedSoundItem = object1PartLoaded.Inventory.GetInventoryItem(soundItemUuid);
Assert.That(loadedSoundItem, Is.Not.Null, "loaded sound item was null");
AssetBase loadedSoundAsset = scene.AssetService.Get(loadedSoundItem.AssetID.ToString());
Assert.That(loadedSoundAsset, Is.Not.Null, "loaded sound asset was null");
Assert.That(loadedSoundAsset.Data, Is.EqualTo(soundData), "saved and loaded sound data do not match");
*/
// Temporary // Temporary
Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
} }
/// <summary>
/// Test loading the region settings of a V0.2 OpenSim Region Archive.
/// </summary>
[Test]
public void TestLoadOarV0_2RegionSettings()
{
TestHelper.InMethod();
//log4net.Config.XmlConfigurator.Configure();
SerialiserModule serialiserModule = new SerialiserModule();
ArchiverModule archiverModule = new ArchiverModule();
Scene scene = SceneSetupHelpers.SetupScene();
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
MemoryStream archiveWriteStream = new MemoryStream();
TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
RegionSettings rs = new RegionSettings();
rs.AgentLimit = 17;
rs.AllowDamage = true;
rs.AllowLandJoinDivide = true;
rs.AllowLandResell = true;
rs.BlockFly = true;
rs.BlockShowInSearch = true;
rs.BlockTerraform = true;
rs.DisableCollisions = true;
rs.DisablePhysics = true;
rs.DisableScripts = true;
rs.Elevation1NW = 15.9;
rs.Elevation1NE = 45.3;
rs.Elevation1SE = 49;
rs.Elevation1SW = 1.9;
rs.Elevation2NW = 4.5;
rs.Elevation2NE = 19.2;
rs.Elevation2SE = 9.2;
rs.Elevation2SW = 2.1;
rs.FixedSun = true;
rs.ObjectBonus = 1.4;
rs.RestrictPushing = true;
rs.TerrainLowerLimit = 0.4;
rs.TerrainRaiseLimit = 17.9;
rs.TerrainTexture1 = UUID.Parse("00000000-0000-0000-0000-000000000020");
rs.TerrainTexture2 = UUID.Parse("00000000-0000-0000-0000-000000000040");
rs.TerrainTexture3 = UUID.Parse("00000000-0000-0000-0000-000000000060");
rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
rs.UseEstateSun = true;
rs.WaterHeight = 23;
tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs));
tar.Close();
MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());
lock (this)
{
scene.EventManager.OnOarFileLoaded += LoadCompleted;
archiverModule.DearchiveRegion(archiveReadStream);
}
Assert.That(m_lastErrorMessage, Is.Null);
RegionSettings loadedRs = scene.RegionInfo.RegionSettings;
Assert.That(loadedRs.AgentLimit, Is.EqualTo(17));
Assert.That(loadedRs.AllowDamage, Is.True);
Assert.That(loadedRs.AllowLandJoinDivide, Is.True);
Assert.That(loadedRs.AllowLandResell, Is.True);
Assert.That(loadedRs.BlockFly, Is.True);
Assert.That(loadedRs.BlockShowInSearch, Is.True);
Assert.That(loadedRs.BlockTerraform, Is.True);
Assert.That(loadedRs.DisableCollisions, Is.True);
Assert.That(loadedRs.DisablePhysics, Is.True);
Assert.That(loadedRs.DisableScripts, Is.True);
Assert.That(loadedRs.Elevation1NW, Is.EqualTo(15.9));
Assert.That(loadedRs.Elevation1NE, Is.EqualTo(45.3));
Assert.That(loadedRs.Elevation1SE, Is.EqualTo(49));
Assert.That(loadedRs.Elevation1SW, Is.EqualTo(1.9));
Assert.That(loadedRs.Elevation2NW, Is.EqualTo(4.5));
Assert.That(loadedRs.Elevation2NE, Is.EqualTo(19.2));
Assert.That(loadedRs.Elevation2SE, Is.EqualTo(9.2));
Assert.That(loadedRs.Elevation2SW, Is.EqualTo(2.1));
Assert.That(loadedRs.FixedSun, Is.True);
Assert.That(loadedRs.ObjectBonus, Is.EqualTo(1.4));
Assert.That(loadedRs.RestrictPushing, Is.True);
Assert.That(loadedRs.TerrainLowerLimit, Is.EqualTo(0.4));
Assert.That(loadedRs.TerrainRaiseLimit, Is.EqualTo(17.9));
Assert.That(loadedRs.TerrainTexture1, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000020")));
Assert.That(loadedRs.TerrainTexture2, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000040")));
Assert.That(loadedRs.TerrainTexture3, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000060")));
Assert.That(loadedRs.TerrainTexture4, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000080")));
Assert.That(loadedRs.UseEstateSun, Is.True);
Assert.That(loadedRs.WaterHeight, Is.EqualTo(23));
}
/// <summary> /// <summary>
/// Test merging a V0.2 OpenSim Region Archive into an existing scene /// Test merging a V0.2 OpenSim Region Archive into an existing scene
/// </summary> /// </summary>

View File

@ -27,6 +27,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -35,6 +36,7 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules namespace OpenSim.Region.CoreModules
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class CloudModule : ICloudModule public class CloudModule : ICloudModule
{ {
// private static readonly log4net.ILog m_log // private static readonly log4net.ILog m_log
@ -48,7 +50,7 @@ namespace OpenSim.Region.CoreModules
private float m_cloudDensity = 1.0F; private float m_cloudDensity = 1.0F;
private float[] cloudCover = new float[16 * 16]; private float[] cloudCover = new float[16 * 16];
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
IConfig cloudConfig = config.Configs["Cloud"]; IConfig cloudConfig = config.Configs["Cloud"];
@ -58,10 +60,17 @@ namespace OpenSim.Region.CoreModules
m_cloudDensity = cloudConfig.GetFloat("density", 0.5F); m_cloudDensity = cloudConfig.GetFloat("density", 0.5F);
m_frameUpdateRate = cloudConfig.GetInt("cloud_update_rate", 1000); m_frameUpdateRate = cloudConfig.GetInt("cloud_update_rate", 1000);
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_enabled) if (m_enabled)
{ {
m_scene = scene; m_scene = scene;
scene.EventManager.OnNewClient += CloudsToClient; scene.EventManager.OnNewClient += CloudsToClient;
@ -71,9 +80,18 @@ namespace OpenSim.Region.CoreModules
GenerateCloudCover(); GenerateCloudCover();
m_ready = true; m_ready = true;
} }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnNewClient -= CloudsToClient;
scene.UnregisterModuleInterface<ICloudModule>(this);
scene.EventManager.OnFrame -= CloudUpdate;
} }
public void PostInitialise() public void PostInitialise()
@ -96,12 +114,6 @@ namespace OpenSim.Region.CoreModules
get { return "CloudModule"; } get { return "CloudModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
public float CloudCover(int x, int y, int z) public float CloudCover(int x, int y, int z)
{ {
float cover = 0f; float cover = 0f;

View File

@ -30,6 +30,7 @@ using System.IO;
using System.Reflection; using System.Reflection;
using System.Security; using System.Security;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -38,6 +39,7 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.World.Estate namespace OpenSim.Region.CoreModules.World.Estate
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class EstateManagementModule : IEstateModule public class EstateManagementModule : IEstateModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -898,7 +900,16 @@ namespace OpenSim.Region.CoreModules.World.Estate
#region IRegionModule Members #region IRegionModule Members
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.RegisterModuleInterface<IEstateModule>(this); m_scene.RegisterModuleInterface<IEstateModule>(this);
@ -920,6 +931,29 @@ namespace OpenSim.Region.CoreModules.World.Estate
consoleSetTerrainHeights); consoleSetTerrainHeights);
} }
public void RegionLoaded(Scene scene)
{
// Sets up the sun module based on the saved Estate and Region Settings
// DO NOT REMOVE or the sun will stop working
TriggerEstateToolsSunUpdate();
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IEstateModule>(this);
scene.EventManager.OnNewClient -= EventManager_OnNewClient;
scene.EventManager.OnRequestChangeWaterHeight -= changeWaterHeight;
}
public void Close()
{
}
public string Name
{
get { return "EstateManagementModule"; }
}
#region Console Commands #region Console Commands
public void consoleSetTerrainTexture(string module, string[] args) public void consoleSetTerrainTexture(string module, string[] args)
@ -1006,28 +1040,6 @@ namespace OpenSim.Region.CoreModules.World.Estate
} }
#endregion #endregion
public void PostInitialise()
{
// Sets up the sun module based no the saved Estate and Region Settings
// DO NOT REMOVE or the sun will stop working
TriggerEstateToolsSunUpdate();
}
public void Close()
{
}
public string Name
{
get { return "EstateManagementModule"; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
#region Other Functions #region Other Functions

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -89,7 +90,8 @@ enum GroupPowers : long
namespace OpenSim.Region.CoreModules.World.Permissions namespace OpenSim.Region.CoreModules.World.Permissions
{ {
public class PermissionsModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class PermissionsModule : INonSharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -148,12 +150,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions
#endregion #endregion
#region IRegionModule Members #region INonSharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
m_scene = scene;
IConfig myConfig = config.Configs["Startup"]; IConfig myConfig = config.Configs["Startup"];
string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule"); string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule");
@ -177,74 +177,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if (m_bypassPermissions) if (m_bypassPermissions)
m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks"); m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks");
else else
m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks"); m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks");
//Register functions with Scene External Checks!
m_scene.Permissions.OnBypassPermissions += BypassPermissions;
m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions;
m_scene.Permissions.OnPropagatePermissions += PropagatePermissions;
m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags;
m_scene.Permissions.OnAbandonParcel += CanAbandonParcel;
m_scene.Permissions.OnReclaimParcel += CanReclaimParcel;
m_scene.Permissions.OnDeedParcel += CanDeedParcel;
m_scene.Permissions.OnDeedObject += CanDeedObject;
m_scene.Permissions.OnIsGod += IsGod;
m_scene.Permissions.OnDuplicateObject += CanDuplicateObject;
m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnEditParcel += CanEditParcel; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnInstantMessage += CanInstantMessage;
m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; //NOT YET IMPLEMENTED
m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; //FULLY IMPLEMENTED
m_scene.Permissions.OnMoveObject += CanMoveObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnObjectEntry += CanObjectEntry;
m_scene.Permissions.OnReturnObject += CanReturnObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnRezObject += CanRezObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand;
m_scene.Permissions.OnRunScript += CanRunScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCompileScript += CanCompileScript;
m_scene.Permissions.OnSellParcel += CanSellParcel;
m_scene.Permissions.OnTakeObject += CanTakeObject;
m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject;
m_scene.Permissions.OnTerraformLand += CanTerraformLand;
m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED
m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED
m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE
m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnResetScript += CanResetScript;
m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED
m_scene.Permissions.OnUseObjectReturn += CanUseObjectReturn; //NOT YET IMPLEMENTED
m_scene.AddCommand(this, "bypass permissions",
"bypass permissions <true / false>",
"Bypass permission checks",
HandleBypassPermissions);
m_scene.AddCommand(this, "force permissions",
"force permissions <true / false>",
"Force permissions on or off",
HandleForcePermissions);
m_scene.AddCommand(this, "debug permissions",
"debug permissions <true / false>",
"Enable permissions debugging",
HandleDebugPermissions);
string grant = myConfig.GetString("GrantLSL",""); string grant = myConfig.GetString("GrantLSL","");
if (grant.Length > 0) { if (grant.Length > 0) {
@ -292,6 +225,158 @@ namespace OpenSim.Region.CoreModules.World.Permissions
} }
public void AddRegion(Scene scene)
{
m_scene = scene;
//Register functions with Scene External Checks!
m_scene.Permissions.OnBypassPermissions += BypassPermissions;
m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions;
m_scene.Permissions.OnPropagatePermissions += PropagatePermissions;
m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags;
m_scene.Permissions.OnAbandonParcel += CanAbandonParcel;
m_scene.Permissions.OnReclaimParcel += CanReclaimParcel;
m_scene.Permissions.OnDeedParcel += CanDeedParcel;
m_scene.Permissions.OnDeedObject += CanDeedObject;
m_scene.Permissions.OnIsGod += IsGod;
m_scene.Permissions.OnDuplicateObject += CanDuplicateObject;
m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnEditParcel += CanEditParcel; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnInstantMessage += CanInstantMessage;
m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; //NOT YET IMPLEMENTED
m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; //FULLY IMPLEMENTED
m_scene.Permissions.OnMoveObject += CanMoveObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnObjectEntry += CanObjectEntry;
m_scene.Permissions.OnReturnObject += CanReturnObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnRezObject += CanRezObject; //MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand;
m_scene.Permissions.OnRunScript += CanRunScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCompileScript += CanCompileScript;
m_scene.Permissions.OnSellParcel += CanSellParcel;
m_scene.Permissions.OnTakeObject += CanTakeObject;
m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject;
m_scene.Permissions.OnTerraformLand += CanTerraformLand;
m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED
m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED
m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED
m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE
m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnResetScript += CanResetScript;
m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED
m_scene.Permissions.OnUseObjectReturn += CanUseObjectReturn; //NOT YET IMPLEMENTED
m_scene.AddCommand(this, "bypass permissions",
"bypass permissions <true / false>",
"Bypass permission checks",
HandleBypassPermissions);
m_scene.AddCommand(this, "force permissions",
"force permissions <true / false>",
"Force permissions on or off",
HandleForcePermissions);
m_scene.AddCommand(this, "debug permissions",
"debug permissions <true / false>",
"Enable permissions debugging",
HandleDebugPermissions);
}
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
m_friendsModule = m_scene.RequestModuleInterface<IFriendsModule>();
if (m_friendsModule == null)
m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work");
else
m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled");
}
public void RemoveRegion(Scene scene)
{
scene.Permissions.OnBypassPermissions -= BypassPermissions;
scene.Permissions.OnSetBypassPermissions -= SetBypassPermissions;
scene.Permissions.OnPropagatePermissions -= PropagatePermissions;
scene.Permissions.OnGenerateClientFlags -= GenerateClientFlags;
scene.Permissions.OnAbandonParcel -= CanAbandonParcel;
scene.Permissions.OnReclaimParcel -= CanReclaimParcel;
scene.Permissions.OnDeedParcel -= CanDeedParcel;
scene.Permissions.OnDeedObject -= CanDeedObject;
scene.Permissions.OnIsGod -= IsGod;
scene.Permissions.OnDuplicateObject -= CanDuplicateObject;
scene.Permissions.OnDeleteObject -= CanDeleteObject; //MAYBE FULLY IMPLEMENTED
scene.Permissions.OnEditObject -= CanEditObject; //MAYBE FULLY IMPLEMENTED
scene.Permissions.OnEditParcel -= CanEditParcel; //MAYBE FULLY IMPLEMENTED
scene.Permissions.OnInstantMessage -= CanInstantMessage;
scene.Permissions.OnInventoryTransfer -= CanInventoryTransfer; //NOT YET IMPLEMENTED
scene.Permissions.OnIssueEstateCommand -= CanIssueEstateCommand; //FULLY IMPLEMENTED
scene.Permissions.OnMoveObject -= CanMoveObject; //MAYBE FULLY IMPLEMENTED
scene.Permissions.OnObjectEntry -= CanObjectEntry;
scene.Permissions.OnReturnObject -= CanReturnObject; //NOT YET IMPLEMENTED
scene.Permissions.OnRezObject -= CanRezObject; //MAYBE FULLY IMPLEMENTED
scene.Permissions.OnRunConsoleCommand -= CanRunConsoleCommand;
scene.Permissions.OnRunScript -= CanRunScript; //NOT YET IMPLEMENTED
scene.Permissions.OnCompileScript -= CanCompileScript;
scene.Permissions.OnSellParcel -= CanSellParcel;
scene.Permissions.OnTakeObject -= CanTakeObject;
scene.Permissions.OnTakeCopyObject -= CanTakeCopyObject;
scene.Permissions.OnTerraformLand -= CanTerraformLand;
scene.Permissions.OnLinkObject -= CanLinkObject; //NOT YET IMPLEMENTED
scene.Permissions.OnDelinkObject -= CanDelinkObject; //NOT YET IMPLEMENTED
scene.Permissions.OnBuyLand -= CanBuyLand; //NOT YET IMPLEMENTED
scene.Permissions.OnViewNotecard -= CanViewNotecard; //NOT YET IMPLEMENTED
scene.Permissions.OnViewScript -= CanViewScript; //NOT YET IMPLEMENTED
scene.Permissions.OnEditNotecard -= CanEditNotecard; //NOT YET IMPLEMENTED
scene.Permissions.OnEditScript -= CanEditScript; //NOT YET IMPLEMENTED
scene.Permissions.OnCreateObjectInventory -= CanCreateObjectInventory; //NOT IMPLEMENTED HERE
scene.Permissions.OnEditObjectInventory -= CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
scene.Permissions.OnCopyObjectInventory -= CanCopyObjectInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnDeleteObjectInventory -= CanDeleteObjectInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnResetScript -= CanResetScript;
scene.Permissions.OnCreateUserInventory -= CanCreateUserInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnCopyUserInventory -= CanCopyUserInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnEditUserInventory -= CanEditUserInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnDeleteUserInventory -= CanDeleteUserInventory; //NOT YET IMPLEMENTED
scene.Permissions.OnTeleport -= CanTeleport; //NOT YET IMPLEMENTED
scene.Permissions.OnUseObjectReturn -= CanUseObjectReturn; //NOT YET IMPLEMENTED
}
public void PostInitialise()
{
}
public void Close()
{
}
public string Name
{
get { return "PermissionsModule"; }
}
public void HandleBypassPermissions(string module, string[] args) public void HandleBypassPermissions(string module, string[] args)
{ {
if (m_scene.ConsoleScene() != null && if (m_scene.ConsoleScene() != null &&
@ -362,31 +447,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions
m_log.InfoFormat("[PERMISSIONS] Set permissions debugging to {0} in {1}", m_debugPermissions, m_scene.RegionInfo.RegionName); m_log.InfoFormat("[PERMISSIONS] Set permissions debugging to {0} in {1}", m_debugPermissions, m_scene.RegionInfo.RegionName);
} }
} }
public void PostInitialise()
{
m_friendsModule = m_scene.RequestModuleInterface<IFriendsModule>();
if (m_friendsModule == null)
m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work");
else
m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled");
}
public void Close()
{
}
public string Name
{
get { return "PermissionsModule"; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
#region Helper Functions #region Helper Functions

View File

@ -26,6 +26,7 @@
*/ */
using System; using System;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -34,26 +35,44 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.World.Sound namespace OpenSim.Region.CoreModules.World.Sound
{ {
public class SoundModule : IRegionModule, ISoundModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class SoundModule : INonSharedRegionModule, ISoundModule
{ {
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected Scene m_scene; protected Scene m_scene;
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.EventManager.OnNewClient += OnNewClient; m_scene.EventManager.OnNewClient += OnNewClient;
m_scene.RegisterModuleInterface<ISoundModule>(this); m_scene.RegisterModuleInterface<ISoundModule>(this);
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnNewClient -= OnNewClient;
scene.UnregisterModuleInterface<ISoundModule>(this);
}
public void PostInitialise() {}
public void Close() {} public void Close() {}
public string Name { get { return "Sound Module"; } } public string Name { get { return "Sound Module"; } }
public bool IsSharedModule { get { return false; } }
private void OnNewClient(IClientAPI client) private void OnNewClient(IClientAPI client)
{ {
client.OnSoundTrigger += TriggerSound; client.OnSoundTrigger += TriggerSound;

View File

@ -29,6 +29,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -37,6 +38,7 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules namespace OpenSim.Region.CoreModules
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class SunModule : ISunModule public class SunModule : ISunModule
{ {
/// <summary> /// <summary>
@ -278,27 +280,12 @@ namespace OpenSim.Region.CoreModules
return GetCurrentSunHour() + 6.0f; return GetCurrentSunHour() + 6.0f;
} }
#region IRegion Methods #region INonSharedRegionModule Methods
// Called immediately after the module is loaded for a given region // Called immediately after the module is loaded for a given region
// i.e. Immediately after instance creation. // i.e. Immediately after instance creation.
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
m_scene = scene;
m_frame = 0;
// This one puts an entry in the main help screen
m_scene.AddCommand(this, String.Empty, "sun", "Usage: sun [param] [value] - Get or Update Sun module paramater", null);
// This one enables the ability to type just "sun" without any parameters
m_scene.AddCommand(this, "sun", "", "", HandleSunConsoleCommand);
foreach (KeyValuePair<string, string> kvp in GetParamList())
{
m_scene.AddCommand(this, String.Format("sun {0}", kvp.Key), String.Format("{0} - {1}", kvp.Key, kvp.Value), "", HandleSunConsoleCommand);
}
TimeZone local = TimeZone.CurrentTimeZone; TimeZone local = TimeZone.CurrentTimeZone;
TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks; TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks;
m_log.Debug("[SUN]: localtime offset is " + TicksUTCOffset); m_log.Debug("[SUN]: localtime offset is " + TicksUTCOffset);
@ -346,57 +333,6 @@ namespace OpenSim.Region.CoreModules
// m_latitude = d_latitude; // m_latitude = d_latitude;
// m_longitude = d_longitude; // m_longitude = d_longitude;
} }
switch (m_RegionMode)
{
case "T1":
default:
case "SL":
// Time taken to complete a cycle (day and season)
SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60);
SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
// Ration of real-to-virtual time
// VWTimeRatio = 24/m_day_length;
// Speed of rotation needed to complete a cycle in the
// designated period (day and season)
SunSpeed = m_SunCycle/SecondsPerSunCycle;
SeasonSpeed = m_SeasonalCycle/SecondsPerYear;
// Horizon translation
HorizonShift = m_HorizonShift; // Z axis translation
// HoursToRadians = (SunCycle/24)*VWTimeRatio;
// Insert our event handling hooks
scene.EventManager.OnFrame += SunUpdate;
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
scene.EventManager.OnEstateToolsSunUpdate += EstateToolsSunUpdate;
scene.EventManager.OnGetCurrentTimeAsLindenSunHour += GetCurrentTimeAsLindenSunHour;
ready = true;
m_log.Debug("[SUN]: Mode is " + m_RegionMode);
m_log.Debug("[SUN]: Initialization completed. Day is " + SecondsPerSunCycle + " seconds, and year is " + m_YearLengthDays + " days");
m_log.Debug("[SUN]: Axis offset is " + m_HorizonShift);
m_log.Debug("[SUN]: Percentage of time for daylight " + m_DayTimeSunHourScale);
m_log.Debug("[SUN]: Positional data updated every " + m_UpdateInterval + " frames");
break;
}
scene.RegisterModuleInterface<ISunModule>(this);
}
public void PostInitialise()
{
} }
public void Close() public void Close()
@ -415,10 +351,84 @@ namespace OpenSim.Region.CoreModules
get { return "SunModule"; } get { return "SunModule"; }
} }
public bool IsSharedModule public Type ReplaceableInterface
{ {
get { return false; } get { return null; }
} }
public void AddRegion(Scene scene)
{
m_scene = scene;
m_frame = 0;
// This one puts an entry in the main help screen
m_scene.AddCommand(this, String.Empty, "sun", "Usage: sun [param] [value] - Get or Update Sun module paramater", null);
// This one enables the ability to type just "sun" without any parameters
m_scene.AddCommand(this, "sun", "", "", HandleSunConsoleCommand);
foreach (KeyValuePair<string, string> kvp in GetParamList())
{
m_scene.AddCommand(this, String.Format("sun {0}", kvp.Key), String.Format("{0} - {1}", kvp.Key, kvp.Value), "", HandleSunConsoleCommand);
}
switch (m_RegionMode)
{
case "T1":
default:
case "SL":
// Time taken to complete a cycle (day and season)
SecondsPerSunCycle = (uint)(m_DayLengthHours * 60 * 60);
SecondsPerYear = (uint)(SecondsPerSunCycle * m_YearLengthDays);
// Ration of real-to-virtual time
// VWTimeRatio = 24/m_day_length;
// Speed of rotation needed to complete a cycle in the
// designated period (day and season)
SunSpeed = m_SunCycle / SecondsPerSunCycle;
SeasonSpeed = m_SeasonalCycle / SecondsPerYear;
// Horizon translation
HorizonShift = m_HorizonShift; // Z axis translation
// HoursToRadians = (SunCycle/24)*VWTimeRatio;
// Insert our event handling hooks
scene.EventManager.OnFrame += SunUpdate;
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
scene.EventManager.OnEstateToolsSunUpdate += EstateToolsSunUpdate;
scene.EventManager.OnGetCurrentTimeAsLindenSunHour += GetCurrentTimeAsLindenSunHour;
ready = true;
m_log.Debug("[SUN]: Mode is " + m_RegionMode);
m_log.Debug("[SUN]: Initialization completed. Day is " + SecondsPerSunCycle + " seconds, and year is " + m_YearLengthDays + " days");
m_log.Debug("[SUN]: Axis offset is " + m_HorizonShift);
m_log.Debug("[SUN]: Percentage of time for daylight " + m_DayTimeSunHourScale);
m_log.Debug("[SUN]: Positional data updated every " + m_UpdateInterval + " frames");
break;
}
scene.RegisterModuleInterface<ISunModule>(this);
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.RegisterModuleInterface<ISunModule>(this);
scene.EventManager.OnFrame -= SunUpdate;
scene.EventManager.OnAvatarEnteringNewParcel -= AvatarEnteringParcel;
scene.EventManager.OnEstateToolsSunUpdate -= EstateToolsSunUpdate;
scene.EventManager.OnGetCurrentTimeAsLindenSunHour -= GetCurrentTimeAsLindenSunHour;
}
#endregion #endregion
#region EventManager Events #region EventManager Events

View File

@ -28,6 +28,7 @@
using System; using System;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -36,7 +37,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.Avatar.Vegetation namespace OpenSim.Region.CoreModules.Avatar.Vegetation
{ {
public class VegetationModule : IRegionModule, IVegetationModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class VegetationModule : INonSharedRegionModule, IVegetationModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -45,17 +47,34 @@ namespace OpenSim.Region.CoreModules.Avatar.Vegetation
protected static readonly PCode[] creationCapabilities = new PCode[] { PCode.Grass, PCode.NewTree, PCode.Tree }; protected static readonly PCode[] creationCapabilities = new PCode[] { PCode.Grass, PCode.NewTree, PCode.Tree };
public PCode[] CreationCapabilities { get { return creationCapabilities; } } public PCode[] CreationCapabilities { get { return creationCapabilities; } }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public void AddRegion(Scene scene)
{ {
m_scene = scene; m_scene = scene;
m_scene.RegisterModuleInterface<IVegetationModule>(this); m_scene.RegisterModuleInterface<IVegetationModule>(this);
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IVegetationModule>(this);
}
public void PostInitialise() {} public void PostInitialise() {}
public void Close() {} public void Close() {}
public string Name { get { return "Vegetation Module"; } } public string Name { get { return "Vegetation Module"; } }
public bool IsSharedModule { get { return false; } }
public SceneObjectGroup AddTree( public SceneObjectGroup AddTree(
UUID uuid, UUID groupID, Vector3 scale, Quaternion rotation, Vector3 position, Tree treeType, bool newTree) UUID uuid, UUID groupID, Vector3 scale, Quaternion rotation, Vector3 position, Tree treeType, bool newTree)
{ {

View File

@ -55,17 +55,19 @@ namespace OpenSim.Region.CoreModules
private IWindModelPlugin m_activeWindPlugin = null; private IWindModelPlugin m_activeWindPlugin = null;
private const string m_dWindPluginName = "SimpleRandomWind"; private const string m_dWindPluginName = "SimpleRandomWind";
private string m_desiredWindPlugin = "SimpleRandomWind";
private Dictionary<string, IWindModelPlugin> m_availableWindPlugins = new Dictionary<string, IWindModelPlugin>(); private Dictionary<string, IWindModelPlugin> m_availableWindPlugins = new Dictionary<string, IWindModelPlugin>();
// Simplified windSpeeds based on the fact that the client protocal tracks at a resolution of 16m // Simplified windSpeeds based on the fact that the client protocal tracks at a resolution of 16m
private Vector2[] windSpeeds = new Vector2[16 * 16]; private Vector2[] windSpeeds = new Vector2[16 * 16];
private IConfig windConfig;
#region IRegion Methods #region IRegion Methods
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
IConfig windConfig = config.Configs["Wind"]; windConfig = config.Configs["Wind"];
string desiredWindPlugin = m_dWindPluginName; m_desiredWindPlugin = m_dWindPluginName;
if (windConfig != null) if (windConfig != null)
{ {
@ -76,10 +78,18 @@ namespace OpenSim.Region.CoreModules
// Determine which wind model plugin is desired // Determine which wind model plugin is desired
if (windConfig.Contains("wind_plugin")) if (windConfig.Contains("wind_plugin"))
{ {
desiredWindPlugin = windConfig.GetString("wind_plugin"); m_desiredWindPlugin = windConfig.GetString("wind_plugin");
} }
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_enabled) if (m_enabled)
{ {
m_log.InfoFormat("[WIND] Enabled with an update rate of {0} frames.", m_frameUpdateRate); m_log.InfoFormat("[WIND] Enabled with an update rate of {0} frames.", m_frameUpdateRate);
@ -95,30 +105,30 @@ namespace OpenSim.Region.CoreModules
} }
// Check for desired plugin // Check for desired plugin
if (m_availableWindPlugins.ContainsKey(desiredWindPlugin)) if (m_availableWindPlugins.ContainsKey(m_desiredWindPlugin))
{ {
m_activeWindPlugin = m_availableWindPlugins[desiredWindPlugin]; m_activeWindPlugin = m_availableWindPlugins[m_desiredWindPlugin];
m_log.InfoFormat("[WIND] {0} plugin found, initializing.", desiredWindPlugin); m_log.InfoFormat("[WIND] {0} plugin found, initializing.", m_desiredWindPlugin);
if (windConfig != null) if (windConfig != null)
{ {
m_activeWindPlugin.Initialise(); m_activeWindPlugin.Initialise();
m_activeWindPlugin.WindConfig(m_scene, windConfig); m_activeWindPlugin.WindConfig(m_scene, windConfig);
} }
} }
// if the plug-in wasn't found, default to no wind. // if the plug-in wasn't found, default to no wind.
if (m_activeWindPlugin == null) if (m_activeWindPlugin == null)
{ {
m_log.ErrorFormat("[WIND] Could not find specified wind plug-in: {0}", desiredWindPlugin); m_log.ErrorFormat("[WIND] Could not find specified wind plug-in: {0}", m_desiredWindPlugin);
m_log.ErrorFormat("[WIND] Defaulting to no wind."); m_log.ErrorFormat("[WIND] Defaulting to no wind.");
} }
// This one puts an entry in the main help screen // This one puts an entry in the main help screen
m_scene.AddCommand(this, String.Empty, "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null); m_scene.AddCommand(this, String.Empty, "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null);
// This one enables the ability to type just the base command without any parameters // This one enables the ability to type just the base command without any parameters
m_scene.AddCommand(this, "wind", "", "", HandleConsoleCommand); m_scene.AddCommand(this, "wind", "", "", HandleConsoleCommand);
@ -127,7 +137,7 @@ namespace OpenSim.Region.CoreModules
{ {
m_scene.AddCommand(this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand); m_scene.AddCommand(this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand);
m_scene.AddCommand(this, String.Format("wind base wind_update_rate"), "Change the wind update rate.", "", HandleConsoleBaseCommand); m_scene.AddCommand(this, String.Format("wind base wind_update_rate"), "Change the wind update rate.", "", HandleConsoleBaseCommand);
foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams()) foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams())
{ {
m_scene.AddCommand(this, String.Format("wind {0} {1}", windPlugin.Name, kvp.Key), String.Format("{0} : {1} - {2}", windPlugin.Name, kvp.Key, kvp.Value), "", HandleConsoleParamCommand); m_scene.AddCommand(this, String.Format("wind {0} {1}", windPlugin.Name, kvp.Key), String.Format("{0} : {1} - {2}", windPlugin.Name, kvp.Key, kvp.Value), "", HandleConsoleParamCommand);
@ -149,13 +159,19 @@ namespace OpenSim.Region.CoreModules
m_ready = true; m_ready = true;
} }
} }
public void PostInitialise() public void RegionLoaded(Scene scene)
{ {
} }
public void RemoveRegion(Scene scene)
{
scene.EventManager.OnFrame -= WindUpdate;
scene.EventManager.OnMakeRootAgent -= OnAgentEnteredRegion;
scene.UnregisterModuleInterface<IWindModule>(this);
}
public void Close() public void Close()
{ {
if (m_enabled) if (m_enabled)
@ -182,11 +198,6 @@ namespace OpenSim.Region.CoreModules
get { return "WindModule"; } get { return "WindModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion

View File

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Imaging; using OpenMetaverse.Imaging;
@ -59,7 +60,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
public face[] trns; public face[] trns;
} }
public class MapImageModule : IMapImageGenerator, IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MapImageModule : IMapImageGenerator, INonSharedRegionModule
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -128,23 +130,36 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
#endregion #endregion
#region IRegionModule Members #region INonSharedRegionModule Members
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
m_scene = scene;
m_config = source; m_config = source;
IConfig startupConfig = m_config.Configs["Startup"]; IConfig startupConfig = m_config.Configs["Startup"];
if (startupConfig.GetString("MapImageModule", "MapImageModule") != if (startupConfig.GetString("MapImageModule", "MapImageModule") !=
"MapImageModule") "MapImageModule")
return; return;
}
public void AddRegion(Scene scene)
{
m_scene = scene;
m_scene.RegisterModuleInterface<IMapImageGenerator>(this); m_scene.RegisterModuleInterface<IMapImageGenerator>(this);
} }
public void PostInitialise() public Type ReplaceableInterface
{ {
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IMapImageGenerator>(this);
} }
public void Close() public void Close()
@ -156,11 +171,6 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
get { return "MapImageModule"; } get { return "MapImageModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
// TODO: unused: // TODO: unused:

View File

@ -24,9 +24,12 @@
* (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.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -38,7 +41,8 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Region.CoreModules.World.WorldMap namespace OpenSim.Region.CoreModules.World.WorldMap
{ {
public class MapSearchModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MapSearchModule : ISharedRegionModule
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -46,8 +50,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
Scene m_scene = null; // only need one for communication with GridService Scene m_scene = null; // only need one for communication with GridService
List<Scene> m_scenes = new List<Scene>(); List<Scene> m_scenes = new List<Scene>();
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{
}
public void AddRegion(Scene scene)
{ {
if (m_scene == null) if (m_scene == null)
{ {
@ -58,6 +66,22 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnNewClient += OnNewClient;
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if(m_scenes.Contains(scene))
m_scenes.Remove(scene);
scene.EventManager.OnNewClient -= OnNewClient;
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -73,11 +97,6 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
get { return "MapSearchModule"; } get { return "MapSearchModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
private void OnNewClient(IClientAPI client) private void OnNewClient(IClientAPI client)

View File

@ -33,6 +33,7 @@ using System.Net;
using System.Reflection; using System.Reflection;
using System.Xml; using System.Xml;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -43,7 +44,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.DataSnapshot namespace OpenSim.Region.DataSnapshot
{ {
public class DataSnapshotManager : IRegionModule, IDataSnapshot [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class DataSnapshotManager : ISharedRegionModule, IDataSnapshot
{ {
#region Class members #region Class members
//Information from config //Information from config
@ -89,7 +91,7 @@ namespace OpenSim.Region.DataSnapshot
#region IRegionModule #region IRegionModule
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
if (!m_configLoaded) if (!m_configLoaded)
{ {
@ -140,24 +142,29 @@ namespace OpenSim.Region.DataSnapshot
return; return;
} }
} }
if (m_enabled)
{
//Hand it the first scene, assuming that all scenes have the same BaseHTTPServer
new DataRequestHandler(scene, this);
m_hostname = scene.RegionInfo.ExternalHostName;
m_snapStore = new SnapshotStore(m_snapsDir, m_gridinfo, m_listener_port, m_hostname);
MakeEverythingStale();
if (m_dataServices != "" && m_dataServices != "noservices")
NotifyDataServices(m_dataServices, "online");
}
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (m_enabled) if (m_enabled)
{ {
//Hand it the first scene, assuming that all scenes have the same BaseHTTPServer
new DataRequestHandler(scene, this);
m_hostname = scene.RegionInfo.ExternalHostName;
m_snapStore = new SnapshotStore(m_snapsDir, m_gridinfo, m_listener_port, m_hostname);
MakeEverythingStale();
if (m_dataServices != "" && m_dataServices != "noservices")
NotifyDataServices(m_dataServices, "online");
m_log.Info("[DATASNAPSHOT]: Scene added to module."); m_log.Info("[DATASNAPSHOT]: Scene added to module.");
m_snapStore.AddScene(scene); m_snapStore.AddScene(scene);
@ -191,22 +198,27 @@ namespace OpenSim.Region.DataSnapshot
} }
else else
{ {
m_log.Warn("[DATASNAPSHOT]: Data snapshot disabled, not adding scene to module (or anything else)."); m_log.Info("[DATASNAPSHOT]: Data snapshot disabled, not adding scene to module (or anything else).");
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (m_scenes.Contains(scene))
m_scenes.Remove(scene);
m_snapStore.RemoveScene(scene);
}
public void Close() public void Close()
{ {
if (m_enabled && m_dataServices != "" && m_dataServices != "noservices") if (m_enabled && m_dataServices != "" && m_dataServices != "noservices")
NotifyDataServices(m_dataServices, "offline"); NotifyDataServices(m_dataServices, "offline");
} }
public bool IsSharedModule
{
get { return true; }
}
public string Name public string Name
{ {
get { return "External Data Generator"; } get { return "External Data Generator"; }
@ -214,7 +226,6 @@ namespace OpenSim.Region.DataSnapshot
public void PostInitialise() public void PostInitialise()
{ {
} }
#endregion #endregion

View File

@ -28,7 +28,7 @@
namespace OpenSim.Region.Framework.Interfaces namespace OpenSim.Region.Framework.Interfaces
{ {
public interface ICloudModule : IRegionModule public interface ICloudModule : INonSharedRegionModule
{ {
/// <summary> /// <summary>
/// Retrieves the cloud density at the given region coordinates /// Retrieves the cloud density at the given region coordinates

View File

@ -38,7 +38,7 @@ namespace OpenSim.Region.Framework.Interfaces
public int numLeft; public int numLeft;
} }
public interface IEmailModule : IRegionModule public interface IEmailModule : ISharedRegionModule
{ {
void SendEmail(UUID objectID, string address, string subject, string body); void SendEmail(UUID objectID, string address, string subject, string body);
Email GetNextEmail(UUID objectID, string sender, string subject); Email GetNextEmail(UUID objectID, string sender, string subject);

View File

@ -77,7 +77,11 @@ namespace OpenSim.Region.Framework.Interfaces
/// <summary> /// <summary>
/// Stop all the scripts in this entity. /// Stop all the scripts in this entity.
/// </summary> /// </summary>
void RemoveScriptInstances(); /// <param name="sceneObjectBeingDeleted">
/// Should be true if these scripts are being removed because the scene
/// object is being deleted. This will prevent spurious updates to the client.
/// </param>
void RemoveScriptInstances(bool sceneObjectBeingDeleted);
/// <summary> /// <summary>
/// Start a script which is in this entity's inventory. /// Start a script which is in this entity's inventory.
@ -103,7 +107,11 @@ namespace OpenSim.Region.Framework.Interfaces
/// Stop a script which is in this prim's inventory. /// Stop a script which is in this prim's inventory.
/// </summary> /// </summary>
/// <param name="itemId"></param> /// <param name="itemId"></param>
void RemoveScriptInstance(UUID itemId); /// <param name="sceneObjectBeingDeleted">
/// Should be true if these scripts are being removed because the scene
/// object is being deleted. This will prevent spurious updates to the client.
/// </param>
void RemoveScriptInstance(UUID itemId, bool sceneObjectBeingDeleted);
/// <summary> /// <summary>
/// Add an item to this entity's inventory. If an item with the same name already exists, then an alternative /// Add an item to this entity's inventory. If an item with the same name already exists, then an alternative

View File

@ -29,7 +29,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces namespace OpenSim.Region.Framework.Interfaces
{ {
public interface IEstateModule : IRegionModule public interface IEstateModule : INonSharedRegionModule
{ {
uint GetRegionFlags(); uint GetRegionFlags();
bool IsManager(UUID avatarID); bool IsManager(UUID avatarID);

View File

@ -29,7 +29,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces namespace OpenSim.Region.Framework.Interfaces
{ {
public interface ISunModule : IRegionModule public interface ISunModule : INonSharedRegionModule
{ {
double GetSunParameter(string param); double GetSunParameter(string param);

View File

@ -29,7 +29,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces namespace OpenSim.Region.Framework.Interfaces
{ {
public interface IWindModule : IRegionModule public interface IWindModule : INonSharedRegionModule
{ {
/// <summary> /// <summary>

View File

@ -256,7 +256,7 @@ namespace OpenSim.Region.Framework.Scenes
if (isScriptRunning) if (isScriptRunning)
{ {
part.Inventory.RemoveScriptInstance(item.ItemID); part.Inventory.RemoveScriptInstance(item.ItemID, false);
} }
// Update item with new asset // Update item with new asset
@ -859,8 +859,10 @@ namespace OpenSim.Region.Framework.Scenes
if (item.Type == 10) if (item.Type == 10)
{ {
part.RemoveScriptEvents(itemID);
EventManager.TriggerRemoveScript(localID, itemID); EventManager.TriggerRemoveScript(localID, itemID);
} }
group.RemoveInventoryItem(localID, itemID); group.RemoveInventoryItem(localID, itemID);
part.GetProperties(remoteClient); part.GetProperties(remoteClient);
} }

View File

@ -1023,7 +1023,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (ent is SceneObjectGroup) if (ent is SceneObjectGroup)
{ {
((SceneObjectGroup) ent).RemoveScriptInstances(); ((SceneObjectGroup) ent).RemoveScriptInstances(false);
} }
} }
} }
@ -1911,13 +1911,15 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="silent">Suppress broadcasting changes to other clients.</param> /// <param name="silent">Suppress broadcasting changes to other clients.</param>
public void DeleteSceneObject(SceneObjectGroup group, bool silent) public void DeleteSceneObject(SceneObjectGroup group, bool silent)
{ {
// m_log.DebugFormat("[SCENE]: Deleting scene object {0} {1}", group.Name, group.UUID);
//SceneObjectPart rootPart = group.GetChildPart(group.UUID); //SceneObjectPart rootPart = group.GetChildPart(group.UUID);
// Serialise calls to RemoveScriptInstances to avoid // Serialise calls to RemoveScriptInstances to avoid
// deadlocking on m_parts inside SceneObjectGroup // deadlocking on m_parts inside SceneObjectGroup
lock (m_deleting_scene_object) lock (m_deleting_scene_object)
{ {
group.RemoveScriptInstances(); group.RemoveScriptInstances(true);
} }
foreach (SceneObjectPart part in group.Children.Values) foreach (SceneObjectPart part in group.Children.Values)
@ -1945,6 +1947,8 @@ namespace OpenSim.Region.Framework.Scenes
} }
group.DeleteGroup(silent); group.DeleteGroup(silent);
// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
} }
/// <summary> /// <summary>

View File

@ -46,8 +46,8 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void ForceInventoryPersistence() public void ForceInventoryPersistence()
{ {
lockPartsForRead(true); lockPartsForRead(true);
List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values); List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values);
lockPartsForRead(false); lockPartsForRead(false);
foreach (SceneObjectPart part in values) foreach (SceneObjectPart part in values)
{ {
@ -75,9 +75,9 @@ namespace OpenSim.Region.Framework.Scenes
/// Stop the scripts contained in all the prims in this group /// Stop the scripts contained in all the prims in this group
/// </summary> /// </summary>
public void RemoveScriptInstances() public void RemoveScriptInstances()
{ {
lockPartsForRead(true); lockPartsForRead(true);
List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values); List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values);
lockPartsForRead(false); lockPartsForRead(false);
foreach (SceneObjectPart part in values) foreach (SceneObjectPart part in values)

View File

@ -2489,7 +2489,7 @@ namespace OpenSim.Region.Framework.Scenes
//m_log.Debug("prev: " + prevflag.ToString() + " curr: " + Flags.ToString()); //m_log.Debug("prev: " + prevflag.ToString() + " curr: " + Flags.ToString());
//ScheduleFullUpdate(); //ScheduleFullUpdate();
} }
public void RemoveScriptEvents(UUID scriptid) public void RemoveScriptEvents(UUID scriptid)
{ {
lock (m_scriptEvents) lock (m_scriptEvents)
@ -2543,6 +2543,8 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void ScheduleFullUpdate() public void ScheduleFullUpdate()
{ {
// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId);
if (m_parentGroup != null) if (m_parentGroup != null)
{ {
m_parentGroup.QueueForUpdateCheck(); m_parentGroup.QueueForUpdateCheck();
@ -4069,6 +4071,8 @@ namespace OpenSim.Region.Framework.Scenes
if (m_parentGroup == null) if (m_parentGroup == null)
{ {
// m_log.DebugFormat(
// "[SCENE OBJECT PART]: Scheduling part {0} {1} for full update in aggregateScriptEvents() since m_parentGroup == null", Name, LocalId);
ScheduleFullUpdate(); ScheduleFullUpdate();
return; return;
} }
@ -4085,9 +4089,15 @@ namespace OpenSim.Region.Framework.Scenes
LocalFlags=(PrimFlags)objectflagupdate; LocalFlags=(PrimFlags)objectflagupdate;
if (m_parentGroup != null && m_parentGroup.RootPart == this) if (m_parentGroup != null && m_parentGroup.RootPart == this)
{
m_parentGroup.aggregateScriptEvents(); m_parentGroup.aggregateScriptEvents();
}
else else
{
// m_log.DebugFormat(
// "[SCENE OBJECT PART]: Scheduling part {0} {1} for full update in aggregateScriptEvents()", Name, LocalId);
ScheduleFullUpdate(); ScheduleFullUpdate();
}
} }
public int registerTargetWaypoint(Vector3 target, float tolerance) public int registerTargetWaypoint(Vector3 target, float tolerance)

View File

@ -235,7 +235,11 @@ namespace OpenSim.Region.Framework.Scenes
/// <summary> /// <summary>
/// Stop all the scripts in this prim. /// Stop all the scripts in this prim.
/// </summary> /// </summary>
public void RemoveScriptInstances() /// <param name="sceneObjectBeingDeleted">
/// Should be true if these scripts are being removed because the scene
/// object is being deleted. This will prevent spurious updates to the client.
/// </param>
public void RemoveScriptInstances(bool sceneObjectBeingDeleted)
{ {
Items.LockItemsForRead(true); Items.LockItemsForRead(true);
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values);
@ -412,10 +416,17 @@ namespace OpenSim.Region.Framework.Scenes
/// Stop a script which is in this prim's inventory. /// Stop a script which is in this prim's inventory.
/// </summary> /// </summary>
/// <param name="itemId"></param> /// <param name="itemId"></param>
public void RemoveScriptInstance(UUID itemId) /// <param name="sceneObjectBeingDeleted">
/// Should be true if this script is being removed because the scene
/// object is being deleted. This will prevent spurious updates to the client.
/// </param>
public void RemoveScriptInstance(UUID itemId, bool sceneObjectBeingDeleted)
{ {
if (m_items.ContainsKey(itemId)) if (m_items.ContainsKey(itemId))
{ {
if (!sceneObjectBeingDeleted)
m_part.RemoveScriptEvents(itemId);
m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId); m_part.ParentGroup.Scene.EventManager.TriggerRemoveScript(m_part.LocalId, itemId);
m_part.ParentGroup.AddActiveScriptCount(-1); m_part.ParentGroup.AddActiveScriptCount(-1);
} }
@ -496,7 +507,7 @@ namespace OpenSim.Region.Framework.Scenes
if (i.Name == item.Name) if (i.Name == item.Name)
{ {
if (i.InvType == (int)InventoryType.LSL) if (i.InvType == (int)InventoryType.LSL)
RemoveScriptInstance(i.ItemID); RemoveScriptInstance(i.ItemID, false);
RemoveInventoryItem(i.ItemID); RemoveInventoryItem(i.ItemID);
break; break;

View File

@ -1319,6 +1319,12 @@ namespace OpenSim.Region.Framework.Scenes
if (m_allowMovement) if (m_allowMovement)
{ {
if (agentData.UseClientAgentPosition)
{
m_moveToPositionInProgress = (agentData.ClientAgentPosition - AbsolutePosition).Length() > 0.2f;
m_moveToPositionTarget = agentData.ClientAgentPosition;
}
int i = 0; int i = 0;
bool update_rotation = false; bool update_rotation = false;
@ -1421,7 +1427,7 @@ namespace OpenSim.Region.Framework.Scenes
if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving)) if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving))
{ {
//Check the error term of the current position in relation to the target position //Check the error term of the current position in relation to the target position
if (Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget) <= 1.5f) if (Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget) <= 0.5f)
{ {
// we are close enough to the target // we are close enough to the target
m_moveToPositionTarget = Vector3.Zero; m_moveToPositionTarget = Vector3.Zero;
@ -2969,7 +2975,15 @@ namespace OpenSim.Region.Framework.Scenes
protected void CrossToNewRegion() protected void CrossToNewRegion()
{ {
InTransit(); InTransit();
m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); try
{
m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying);
}
catch(Exception ex)
{
m_scene.CrossAgentToNewRegion(this, false);
}
} }
public void InTransit() public void InTransit()

View File

@ -25,9 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
@ -35,24 +37,23 @@ using OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server;
namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView
{ {
public class IRCStackModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class IRCStackModule : INonSharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IRCServer m_server; private IRCServer m_server;
// private Scene m_scene; // private Scene m_scene;
private int portNo;
#region Implementation of IRegionModule #region Implementation of ISharedRegionModule
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
if (null != source.Configs["IRCd"] && if (null != source.Configs["IRCd"] &&
source.Configs["IRCd"].GetBoolean("Enabled",false)) source.Configs["IRCd"].GetBoolean("Enabled",false))
{ {
int portNo = source.Configs["IRCd"].GetInt("Port",6666); portNo = source.Configs["IRCd"].GetInt("Port",6666);
// m_scene = scene;
m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), portNo, scene);
m_server.OnNewIRCClient += m_server_OnNewIRCClient;
} }
} }
@ -68,9 +69,20 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView
m_log.Info("[IRCd] Added user to Scene"); m_log.Info("[IRCd] Added user to Scene");
} }
public void PostInitialise() public void AddRegion(Scene scene)
{ {
if (portNo != null)
{
m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), portNo, scene);
m_server.OnNewIRCClient += m_server_OnNewIRCClient;
}
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
} }
public void Close() public void Close()
@ -83,9 +95,9 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView
get { return "IRCClientStackModule"; } get { return "IRCClientStackModule"; }
} }
public bool IsSharedModule public Type ReplaceableInterface
{ {
get { return false; } get { return null; }
} }
#endregion #endregion

View File

@ -38,6 +38,7 @@ using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using OpenMetaverse; using OpenMetaverse;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenSim.Framework; using OpenSim.Framework;
@ -53,7 +54,8 @@ using System.Text.RegularExpressions;
namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
{ {
public class FreeSwitchVoiceModule : IRegionModule, IVoiceModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class FreeSwitchVoiceModule : ISharedRegionModule, IVoiceModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -108,9 +110,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
private IConfig m_config; private IConfig m_config;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
m_scene = scene;
m_config = config.Configs["FreeSwitchVoice"]; m_config = config.Configs["FreeSwitchVoice"];
if (null == m_config) if (null == m_config)
@ -224,17 +225,21 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
return; return;
} }
} }
}
if (m_pluginEnabled) public void AddRegion(Scene scene)
{
m_scene = scene;
if (m_pluginEnabled)
{ {
// we need to capture scene in an anonymous method // we need to capture scene in an anonymous method
// here as we need it later in the callbacks // here as we need it later in the callbacks
scene.EventManager.OnRegisterCaps += delegate(UUID agentID, Caps caps) scene.EventManager.OnRegisterCaps += delegate(UUID agentID, Caps caps)
{ {
OnRegisterCaps(scene, agentID, caps); OnRegisterCaps(scene, agentID, caps);
}; };
try try
{ {
@ -254,21 +259,53 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
m_log.Error("[FreeSwitchVoice]: Certificate validation handler change not supported. You may get ssl certificate validation errors teleporting from your region to some SSL regions."); m_log.Error("[FreeSwitchVoice]: Certificate validation handler change not supported. You may get ssl certificate validation errors teleporting from your region to some SSL regions.");
} }
} }
} }
}
public void PostInitialise()
{
if (m_pluginEnabled) if (m_pluginEnabled)
{ {
m_log.Info("[FreeSwitchVoice] registering IVoiceModule with the scene"); m_log.Info("[FreeSwitchVoice] registering IVoiceModule with the scene");
// register the voice interface for this module, so the script engine can call us // register the voice interface for this module, so the script engine can call us
m_scene.RegisterModuleInterface<IVoiceModule>(this); m_scene.RegisterModuleInterface<IVoiceModule>(this);
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (UseProxy)
{
MainServer.Instance.RemoveHTTPHandler("", String.Format("{0}/", m_freeSwitchAPIPrefix));
}
else
{
MainServer.Instance.RemoveHTTPHandler("", String.Format("{0}/viv_get_prelogin.php", m_freeSwitchAPIPrefix));
MainServer.Instance.RemoveHTTPHandler("", String.Format("{0}/viv_signin.php", m_freeSwitchAPIPrefix));
MainServer.Instance.RemoveHTTPHandler("", String.Format("{0}/freeswitch-config", m_freeSwitchAPIPrefix));
MainServer.Instance.RemoveHTTPHandler("", String.Format("{0}/viv_buddy.php", m_freeSwitchAPIPrefix));
}
scene.EventManager.OnRegisterCaps -= delegate(UUID agentID, Caps caps)
{
OnRegisterCaps(scene, agentID, caps);
};
scene.UnregisterModuleInterface<IVoiceModule>(this);
}
public Type ReplaceableInterface
{
get { return null; }
}
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
} }
@ -277,11 +314,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
{ {
get { return "FreeSwitchVoiceModule"; } get { return "FreeSwitchVoiceModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
// <summary> // <summary>
// implementation of IVoiceModule, called by osSetParcelSIPAddress script function // implementation of IVoiceModule, called by osSetParcelSIPAddress script function

View File

@ -1,4 +1,4 @@
/* /*
* 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.
* *
@ -38,6 +38,7 @@ using System.Threading;
using OpenMetaverse; using OpenMetaverse;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim; using OpenSim;
@ -50,7 +51,8 @@ using log4net;
namespace OpenSim.Region.OptionalModules.ContentManagement namespace OpenSim.Region.OptionalModules.ContentManagement
{ {
public class ContentManagementModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class ContentManagementModule : ISharedRegionModule
{ {
#region Static Fields #region Static Fields
@ -60,22 +62,20 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
#region Fields #region Fields
bool initialised = false; private bool initialised = false;
CMController m_control = null; private CMController m_control = null;
bool m_enabled = false; private bool m_enabled = false;
CMModel m_model = null; private CMModel m_model = null;
bool m_posted = false; private bool m_posted = false;
CMView m_view = null; private CMView m_view = null;
private string databaseDir = "./";
private string database = "FileSystemDatabase";
private int channel = 345;
#endregion Fields #endregion Fields
#region Public Properties #region Public Properties
public bool IsSharedModule
{
get { return true; }
}
public string Name public string Name
{ {
get { return "ContentManagementModule"; } get { return "ContentManagementModule"; }
@ -89,11 +89,8 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
{ {
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
string databaseDir = "./";
string database = "FileSystemDatabase";
int channel = 345;
try try
{ {
if (source.Configs["CMS"] == null) if (source.Configs["CMS"] == null)
@ -115,13 +112,15 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
m_log.ErrorFormat("[Content Management]: Exception thrown while reading parameters from configuration file. Message: " + e); m_log.ErrorFormat("[Content Management]: Exception thrown while reading parameters from configuration file. Message: " + e);
m_enabled = false; m_enabled = false;
} }
}
public void AddRegion(Scene scene)
{
if (!m_enabled) if (!m_enabled)
{ {
m_log.Info("[Content Management]: Content Management System is not Enabled."); m_log.Info("[Content Management]: Content Management System is not Enabled.");
return; return;
} }
lock (this) lock (this)
{ {
if (!initialised) //only init once if (!initialised) //only init once
@ -142,6 +141,18 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
} }
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void PostInitialise() public void PostInitialise()
{ {

View File

@ -38,6 +38,7 @@ using System.Security.Policy;
using System.Text; using System.Text;
using log4net; using log4net;
using Microsoft.CSharp; using Microsoft.CSharp;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
@ -46,7 +47,8 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
public class MRMModule : IRegionModule, IMRMModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class MRMModule : INonSharedRegionModule, IMRMModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Scene m_scene; private Scene m_scene;
@ -62,12 +64,14 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
private IConfig m_config; private IConfig m_config;
private bool m_hidden = true;
public void RegisterExtension<T>(T instance) public void RegisterExtension<T>(T instance)
{ {
m_extensions[typeof (T)] = instance; m_extensions[typeof (T)] = instance;
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
if (source.Configs["MRM"] != null) if (source.Configs["MRM"] != null)
{ {
@ -76,19 +80,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
if (source.Configs["MRM"].GetBoolean("Enabled", false)) if (source.Configs["MRM"].GetBoolean("Enabled", false))
{ {
m_log.Info("[MRM] Enabling MRM Module"); m_log.Info("[MRM] Enabling MRM Module");
m_scene = scene;
// when hidden, we don't listen for client initiated script events // when hidden, we don't listen for client initiated script events
// only making the MRM engine available for region modules // only making the MRM engine available for region modules
if (!source.Configs["MRM"].GetBoolean("Hidden", false)) m_hidden = source.Configs["MRM"].GetBoolean("Hidden", false);
{
scene.EventManager.OnRezScript += EventManager_OnRezScript;
scene.EventManager.OnStopScript += EventManager_OnStopScript;
}
scene.EventManager.OnFrame += EventManager_OnFrame;
scene.RegisterModuleInterface<IMRMModule>(this);
} }
else else
{ {
@ -101,6 +96,39 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
} }
} }
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
m_scene = scene;
if (!m_hidden)
{
scene.EventManager.OnRezScript += EventManager_OnRezScript;
scene.EventManager.OnStopScript += EventManager_OnStopScript;
}
scene.EventManager.OnFrame += EventManager_OnFrame;
scene.RegisterModuleInterface<IMRMModule>(this);
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
if (!m_hidden)
{
scene.EventManager.OnRezScript -= EventManager_OnRezScript;
scene.EventManager.OnStopScript -= EventManager_OnStopScript;
}
scene.EventManager.OnFrame -= EventManager_OnFrame;
scene.UnregisterModuleInterface<IMRMModule>(this);
}
void EventManager_OnStopScript(uint localID, UUID itemID) void EventManager_OnStopScript(uint localID, UUID itemID)
{ {
if (m_scripts.ContainsKey(itemID)) if (m_scripts.ContainsKey(itemID))
@ -302,11 +330,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
mmb.InitMiniModule(world, host, itemID); mmb.InitMiniModule(world, host, itemID);
} }
public void PostInitialise()
{
}
public void Close() public void Close()
{ {
foreach (KeyValuePair<UUID, MRMBase> pair in m_scripts) foreach (KeyValuePair<UUID, MRMBase> pair in m_scripts)
@ -320,11 +343,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
get { return "MiniRegionModule"; } get { return "MiniRegionModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
/// <summary> /// <summary>
/// Stolen from ScriptEngine Common /// Stolen from ScriptEngine Common
/// </summary> /// </summary>

View File

@ -100,10 +100,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
if (!m_enabled) if (!m_enabled)
return; return;
m_scene.EventManager.OnEmptyScriptCompileQueue -= OnEmptyScriptCompileQueue; scene.EventManager.OnEmptyScriptCompileQueue -= OnEmptyScriptCompileQueue;
m_scene.EventManager.OnOarFileLoaded -= OnOarFileLoaded; scene.EventManager.OnOarFileLoaded -= OnOarFileLoaded;
m_scene = null; scene = null;
} }
public void Close() public void Close()

View File

@ -58,6 +58,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.ScriptModuleComms
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
{ {
scene.UnregisterModuleInterface<IScriptModuleComms>(this);
} }
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)

View File

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
@ -49,7 +50,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcGridRouterModule
public string uri; public string uri;
} }
public class XmlRpcGridRouter : IRegionModule, IXmlRpcRouter [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class XmlRpcGridRouter : INonSharedRegionModule, IXmlRpcRouter
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -59,7 +61,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcGridRouterModule
private bool m_Enabled = false; private bool m_Enabled = false;
private string m_ServerURI = String.Empty; private string m_ServerURI = String.Empty;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
IConfig startupConfig = config.Configs["Startup"]; IConfig startupConfig = config.Configs["Startup"];
if (startupConfig == null) if (startupConfig == null)
@ -75,13 +77,26 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcGridRouterModule
return; return;
} }
scene.RegisterModuleInterface<IXmlRpcRouter>(this);
m_Enabled = true; m_Enabled = true;
} }
} }
public void PostInitialise() public void AddRegion(Scene scene)
{ {
scene.RegisterModuleInterface<IXmlRpcRouter>(this);
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IXmlRpcRouter>(this);
}
public Type ReplaceableInterface
{
get { return null; }
} }
public void Close() public void Close()
@ -93,11 +108,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcGridRouterModule
get { return "XmlRpcGridRouterModule"; } get { return "XmlRpcGridRouterModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri) public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
{ {
if (!m_Channels.ContainsKey(itemID)) if (!m_Channels.ContainsKey(itemID))

View File

@ -29,6 +29,7 @@ using System;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
@ -39,11 +40,12 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcRouterModule namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcRouterModule
{ {
public class XmlRpcRouter : IRegionModule, IXmlRpcRouter [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class XmlRpcRouter : INonSharedRegionModule, IXmlRpcRouter
{ {
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool m_enabled = false;
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
IConfig startupConfig = config.Configs["Startup"]; IConfig startupConfig = config.Configs["Startup"];
if (startupConfig == null) if (startupConfig == null)
@ -52,12 +54,25 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcRouterModule
if (startupConfig.GetString("XmlRpcRouterModule", if (startupConfig.GetString("XmlRpcRouterModule",
"XmlRpcRouterModule") == "XmlRpcRouterModule") "XmlRpcRouterModule") == "XmlRpcRouterModule")
{ {
scene.RegisterModuleInterface<IXmlRpcRouter>(this); m_enabled = true;
} }
} }
public void AddRegion(Scene scene)
public void PostInitialise()
{ {
scene.RegisterModuleInterface<IXmlRpcRouter>(this);
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<IXmlRpcRouter>(this);
}
public Type ReplaceableInterface
{
get { return null; }
} }
public void Close() public void Close()
@ -69,11 +84,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.XmlRpcRouterModule
get { return "XmlRpcRouterModule"; } get { return "XmlRpcRouterModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri) public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
{ {
scriptEngine.PostScriptEvent(itemID, "xmlrpc_uri", new Object[] {uri}); scriptEngine.PostScriptEvent(itemID, "xmlrpc_uri", new Object[] {uri});

View File

@ -47,7 +47,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Freeswitch
private IConfigSource m_Config; private IConfigSource m_Config;
bool m_Registered = false; bool m_Registered = false;
#region IRegionModule interface #region ISharedRegionModule interface
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {

View File

@ -31,6 +31,7 @@ using System.IO;
using System.Reflection; using System.Reflection;
using System.Timers; using System.Timers;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.CoreModules.World.Serialiser; using OpenSim.Region.CoreModules.World.Serialiser;
@ -42,7 +43,8 @@ using Slash = System.IO.Path;
namespace OpenSim.Region.Modules.SvnSerialiser namespace OpenSim.Region.Modules.SvnSerialiser
{ {
public class SvnBackupModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class SvnBackupModule : ISharedRegionModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -200,9 +202,9 @@ namespace OpenSim.Region.Modules.SvnSerialiser
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
m_scenes = new List<Scene>(); m_scenes = new List<Scene>();
m_timer = new Timer(); m_timer = new Timer();
@ -225,7 +227,10 @@ namespace OpenSim.Region.Modules.SvnSerialiser
catch (Exception) catch (Exception)
{ {
} }
}
public void AddRegion(Scene scene)
{
lock (m_scenes) lock (m_scenes)
{ {
m_scenes.Add(scene); m_scenes.Add(scene);
@ -236,6 +241,18 @@ namespace OpenSim.Region.Modules.SvnSerialiser
scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
}
public Type ReplaceableInterface
{
get { return null; }
}
public void PostInitialise() public void PostInitialise()
{ {
@ -277,11 +294,6 @@ namespace OpenSim.Region.Modules.SvnSerialiser
get { return "SvnBackupModule"; } get { return "SvnBackupModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
#endregion #endregion
private void EventManager_OnPluginConsole(string[] args) private void EventManager_OnPluginConsole(string[] args)

View File

@ -25,9 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using OpenMetaverse; using OpenMetaverse;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
@ -37,7 +39,8 @@ using Timer=System.Timers.Timer;
namespace OpenSim.Region.OptionalModules.World.NPC namespace OpenSim.Region.OptionalModules.World.NPC
{ {
public class NPCModule : IRegionModule, INPCModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class NPCModule : ISharedRegionModule, INPCModule
{ {
// private const bool m_enabled = false; // private const bool m_enabled = false;
@ -134,15 +137,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC
} }
public void Initialise(Scene scene, IConfigSource source) public void Initialise(IConfigSource source)
{ {
m_createMutex = new Mutex(false); m_createMutex = new Mutex(false);
m_timer = new Timer(500); m_timer = new Timer(500);
m_timer.Elapsed += m_timer_Elapsed; m_timer.Elapsed += m_timer_Elapsed;
m_timer.Start(); m_timer.Start();
scene.RegisterModuleInterface<INPCModule>(this);
} }
void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
@ -173,6 +174,19 @@ namespace OpenSim.Region.OptionalModules.World.NPC
} }
} }
public void AddRegion(Scene scene)
{
scene.RegisterModuleInterface<INPCModule>(this);
}
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<INPCModule>(this);
}
public void PostInitialise() public void PostInitialise()
{ {
} }
@ -186,9 +200,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC
get { return "NPCModule"; } get { return "NPCModule"; }
} }
public bool IsSharedModule public Type ReplaceableInterface
{ {
get { return true; } get { return null; }
} }
} }
} }

View File

@ -31,6 +31,7 @@ using System.Reflection;
using System.Timers; using System.Timers;
using OpenMetaverse; using OpenMetaverse;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.CoreModules.Framework.InterfaceCommander; using OpenSim.Region.CoreModules.Framework.InterfaceCommander;
@ -46,7 +47,8 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
/// <summary> /// <summary>
/// Version 2.02 - Still hacky /// Version 2.02 - Still hacky
/// </summary> /// </summary>
public class TreePopulatorModule : IRegionModule, ICommandableModule, IVegetationModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class TreePopulatorModule : INonSharedRegionModule, ICommandableModule, IVegetationModule
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly Commander m_commander = new Commander("tree"); private readonly Commander m_commander = new Commander("tree");
@ -168,15 +170,10 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
#endregion #endregion
#region IRegionModule Members #region ISharedRegionModule Members
public void Initialise(Scene scene, IConfigSource config) public void Initialise(IConfigSource config)
{ {
m_scene = scene;
m_scene.RegisterModuleInterface<IRegionModule>(this);
m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
// ini file settings // ini file settings
try try
{ {
@ -196,12 +193,18 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
m_log.Debug("[TREES]: ini failure for update_rate - using default"); m_log.Debug("[TREES]: ini failure for update_rate - using default");
} }
InstallCommands();
m_log.Debug("[TREES]: Initialised tree module"); m_log.Debug("[TREES]: Initialised tree module");
} }
public void PostInitialise() public void AddRegion(Scene scene)
{
m_scene = scene;
m_scene.RegisterModuleInterface<INonSharedRegionModule>(this);
m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
InstallCommands();
}
public void RegionLoaded(Scene scene)
{ {
ReloadCopse(); ReloadCopse();
if (m_copse.Count > 0) if (m_copse.Count > 0)
@ -211,6 +214,17 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
activeizeTreeze(true); activeizeTreeze(true);
} }
public void RemoveRegion(Scene scene)
{
scene.UnregisterModuleInterface<INonSharedRegionModule>(this);
scene.EventManager.OnPluginConsole -= EventManager_OnPluginConsole;
}
public Type ReplaceableInterface
{
get { return null; }
}
public void Close() public void Close()
{ {
} }
@ -220,11 +234,6 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
get { return "TreePopulatorModule"; } get { return "TreePopulatorModule"; }
} }
public bool IsSharedModule
{
get { return false; }
}
#endregion #endregion
//-------------------------------------------------------------- //--------------------------------------------------------------

View File

@ -923,9 +923,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
instance = null; instance = null;
<<<<<<< HEAD:OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
ObjectRemoved handlerObjectRemoved = OnObjectRemoved; ObjectRemoved handlerObjectRemoved = OnObjectRemoved;
if (handlerObjectRemoved != null) if (handlerObjectRemoved != null)
handlerObjectRemoved(part.UUID); handlerObjectRemoved(part.UUID);
=======
ObjectRemoved handlerObjectRemoved = OnObjectRemoved;
if (handlerObjectRemoved != null)
{
SceneObjectPart part = m_Scene.GetSceneObjectPart(localID);
handlerObjectRemoved(part.UUID);
}
>>>>>>> master:OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
CleanAssemblies(); CleanAssemblies();

View File

@ -34,6 +34,7 @@ using System.Reflection;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using log4net; using log4net;
using Mono.Addins;
using Nini.Config; using Nini.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
@ -52,7 +53,8 @@ using OSDMap = OpenMetaverse.StructuredData.OSDMap;
namespace OpenSim.Region.UserStatistics namespace OpenSim.Region.UserStatistics
{ {
public class WebStatsModule : IRegionModule [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
public class WebStatsModule : ISharedRegionModule
{ {
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -70,7 +72,7 @@ namespace OpenSim.Region.UserStatistics
private string m_loglines = String.Empty; private string m_loglines = String.Empty;
private volatile int lastHit = 12000; private volatile int lastHit = 12000;
public virtual void Initialise(Scene scene, IConfigSource config) public virtual void Initialise(IConfigSource config)
{ {
IConfig cnfg; IConfig cnfg;
try try
@ -82,11 +84,17 @@ namespace OpenSim.Region.UserStatistics
{ {
enabled = false; enabled = false;
} }
}
public Type ReplaceableInterface
{
get { return null; }
}
public void AddRegion(Scene scene)
{
if (!enabled) if (!enabled)
{
return; return;
}
lock (m_scene) lock (m_scene)
{ {
@ -130,7 +138,7 @@ namespace OpenSim.Region.UserStatistics
MainServer.Instance.AddHTTPHandler("/SStats/", HandleStatsRequest); MainServer.Instance.AddHTTPHandler("/SStats/", HandleStatsRequest);
MainServer.Instance.AddHTTPHandler("/CAPS/VS/", HandleUnknownCAPSRequest); MainServer.Instance.AddHTTPHandler("/CAPS/VS/", HandleUnknownCAPSRequest);
} }
m_scene.Add(scene); m_scene.Add(scene);
if (m_simstatsCounters.ContainsKey(scene.RegionInfo.RegionID)) if (m_simstatsCounters.ContainsKey(scene.RegionInfo.RegionID))
m_simstatsCounters.Remove(scene.RegionInfo.RegionID); m_simstatsCounters.Remove(scene.RegionInfo.RegionID);
@ -140,6 +148,14 @@ namespace OpenSim.Region.UserStatistics
} }
} }
public void RegionLoaded(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
}
public void ReceiveClassicSimStatsPacket(SimStats stats) public void ReceiveClassicSimStatsPacket(SimStats stats)
{ {
if (!enabled) if (!enabled)
@ -308,11 +324,6 @@ namespace OpenSim.Region.UserStatistics
get { return "ViewerStatsModule"; } get { return "ViewerStatsModule"; }
} }
public bool IsSharedModule
{
get { return true; }
}
public void OnRegisterCaps(UUID agentID, Caps caps) public void OnRegisterCaps(UUID agentID, Caps caps)
{ {
m_log.DebugFormat("[VC]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps); m_log.DebugFormat("[VC]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps);

View File

@ -161,10 +161,11 @@ namespace OpenSim.Tests.Common.Setup
capsModule.Initialise(new IniConfigSource()); capsModule.Initialise(new IniConfigSource());
testScene.AddRegionModule(capsModule.Name, capsModule); testScene.AddRegionModule(capsModule.Name, capsModule);
capsModule.AddRegion(testScene); capsModule.AddRegion(testScene);
IRegionModule godsModule = new GodsModule(); INonSharedRegionModule godsModule = new GodsModule();
godsModule.Initialise(testScene, new IniConfigSource()); godsModule.Initialise(new IniConfigSource());
testScene.AddModule(godsModule.Name, godsModule); testScene.AddRegionModule(godsModule.Name, godsModule);
godsModule.AddRegion(testScene);
realServices = realServices.ToLower(); realServices = realServices.ToLower();
// IConfigSource config = new IniConfigSource(); // IConfigSource config = new IniConfigSource();

View File

@ -2272,6 +2272,7 @@
<Reference name="OpenMetaverseTypes.dll"/> <Reference name="OpenMetaverseTypes.dll"/>
<Reference name="OpenMetaverse.dll"/> <Reference name="OpenMetaverse.dll"/>
<Reference name="Nini.dll" /> <Reference name="Nini.dll" />
<Reference name="Mono.Addins" />
<Reference name="log4net.dll" /> <Reference name="log4net.dll" />
<Files> <Files>
<Match pattern="*.cs" recurse="true"/> <Match pattern="*.cs" recurse="true"/>
@ -2332,6 +2333,7 @@
<Reference name="log4net.dll"/> <Reference name="log4net.dll"/>
<Reference name="protobuf-net"/> <Reference name="protobuf-net"/>
<Reference name="MXP.dll"/> <Reference name="MXP.dll"/>
<Reference name="Mono.Addins"/>
<Files> <Files>
<Match pattern="*.cs" recurse="true"/> <Match pattern="*.cs" recurse="true"/>
</Files> </Files>
@ -2842,6 +2844,7 @@
<Reference name="OpenSim.Framework.Statistics"/> <Reference name="OpenSim.Framework.Statistics"/>
<Reference name="OpenSim.Region.Physics.Manager"/> <Reference name="OpenSim.Region.Physics.Manager"/>
<Reference name="Mono.Data.SqliteClient"/> <Reference name="Mono.Data.SqliteClient"/>
<Reference name="Mono.Addins"/>
<!-- For scripting in funny languages by default --> <!-- For scripting in funny languages by default -->
<Reference name="Microsoft.JScript"/> <Reference name="Microsoft.JScript"/>
@ -3301,6 +3304,7 @@
<Match path="Agent/TextureSender/Tests" pattern="*.cs" recurse="true" /> <Match path="Agent/TextureSender/Tests" pattern="*.cs" recurse="true" />
<Match path="Avatar/Inventory/Archiver/Tests" pattern="*.cs" recurse="true" /> <Match path="Avatar/Inventory/Archiver/Tests" pattern="*.cs" recurse="true" />
<Match path="World/Archiver/Tests" pattern="*.cs" recurse="true" /> <Match path="World/Archiver/Tests" pattern="*.cs" recurse="true" />
<Match path="World/Archiver/Tests/Resources" pattern="*" buildAction="EmbeddedResource"/>
<Match path="World/Serialiser/Tests" pattern="*.cs" recurse="true" /> <Match path="World/Serialiser/Tests" pattern="*.cs" recurse="true" />
<Match path="World/Terrain/Tests" pattern="*.cs" recurse="true" /> <Match path="World/Terrain/Tests" pattern="*.cs" recurse="true" />
<Match path="ServiceConnectorsOut/Grid/Tests" pattern="*.cs" recurse="true" /> <Match path="ServiceConnectorsOut/Grid/Tests" pattern="*.cs" recurse="true" />