Merge branch 'master' of /home/opensim/src/OpenSim

0.7.4.1
BlueWall 2012-05-13 17:40:03 -04:00
commit 171480f235
3 changed files with 34 additions and 29 deletions

View File

@ -64,6 +64,8 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
private TimeSpan m_QueueTimeout = new TimeSpan(2, 0, 0); // 2 hours without llGetNextEmail drops the queue private TimeSpan m_QueueTimeout = new TimeSpan(2, 0, 0); // 2 hours without llGetNextEmail drops the queue
private string m_InterObjectHostname = "lsl.opensim.local"; private string m_InterObjectHostname = "lsl.opensim.local";
private int m_MaxEmailSize = 4096; // largest email allowed by default, as per lsl docs.
// Scenes by Region Handle // Scenes by Region Handle
private Dictionary<ulong, Scene> m_Scenes = private Dictionary<ulong, Scene> m_Scenes =
new Dictionary<ulong, Scene>(); new Dictionary<ulong, Scene>();
@ -127,6 +129,7 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
SMTP_SERVER_PORT = SMTPConfig.GetInt("SMTP_SERVER_PORT", SMTP_SERVER_PORT); SMTP_SERVER_PORT = SMTPConfig.GetInt("SMTP_SERVER_PORT", SMTP_SERVER_PORT);
SMTP_SERVER_LOGIN = SMTPConfig.GetString("SMTP_SERVER_LOGIN", SMTP_SERVER_LOGIN); SMTP_SERVER_LOGIN = SMTPConfig.GetString("SMTP_SERVER_LOGIN", SMTP_SERVER_LOGIN);
SMTP_SERVER_PASSWORD = SMTPConfig.GetString("SMTP_SERVER_PASSWORD", SMTP_SERVER_PASSWORD); SMTP_SERVER_PASSWORD = SMTPConfig.GetString("SMTP_SERVER_PASSWORD", SMTP_SERVER_PASSWORD);
m_MaxEmailSize = SMTPConfig.GetInt("email_max_size", m_MaxEmailSize);
} }
catch (Exception e) catch (Exception e)
{ {
@ -176,18 +179,6 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
get { return true; } get { return true; }
} }
/// <summary>
/// Delay function using thread in seconds
/// </summary>
/// <param name="seconds"></param>
private void DelayInSeconds(int delay)
{
delay = (int)((float)delay * 1000);
if (delay == 0)
return;
System.Threading.Thread.Sleep(delay);
}
private bool IsLocal(UUID objectID) private bool IsLocal(UUID objectID)
{ {
string unused; string unused;
@ -267,10 +258,9 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
m_log.Error("[EMAIL] REGEX Problem in EMail Address: "+address); m_log.Error("[EMAIL] REGEX Problem in EMail Address: "+address);
return; return;
} }
//FIXME:Check if subject + body = 4096 Byte if ((subject.Length + body.Length) > m_MaxEmailSize)
if ((subject.Length + body.Length) > 1024)
{ {
m_log.Error("[EMAIL] subject + body > 1024 Byte"); m_log.Error("[EMAIL] subject + body larger than limit of " + m_MaxEmailSize + " bytes");
return; return;
} }
@ -345,10 +335,6 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
// TODO FIX // TODO FIX
} }
} }
//DONE: Message as Second Life style
//20 second delay - AntiSpam System - for now only 10 seconds
DelayInSeconds(10);
} }
/// <summary> /// <summary>

View File

@ -106,6 +106,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
protected IUrlModule m_UrlModule = null; protected IUrlModule m_UrlModule = null;
protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache =
new Dictionary<UUID, UserInfoCacheEntry>(); new Dictionary<UUID, UserInfoCacheEntry>();
protected int EMAIL_PAUSE_TIME = 20; // documented delay value for smtp.
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item)
{ {
@ -113,6 +114,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_host = host; m_host = host;
m_item = item; m_item = item;
LoadLimits(); // read script limits from config.
m_TransferModule =
m_ScriptEngine.World.RequestModuleInterface<IMessageTransferModule>();
m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>();
AsyncCommands = new AsyncCommandManager(ScriptEngine);
}
/* load configuration items that affect script, object and run-time behavior. */
private void LoadLimits()
{
m_ScriptDelayFactor = m_ScriptDelayFactor =
m_ScriptEngine.Config.GetFloat("ScriptDelayFactor", 1.0f); m_ScriptEngine.Config.GetFloat("ScriptDelayFactor", 1.0f);
m_ScriptDistanceFactor = m_ScriptDistanceFactor =
@ -125,12 +138,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_ScriptEngine.Config.GetInt("NotecardLineReadCharsMax", 255); m_ScriptEngine.Config.GetInt("NotecardLineReadCharsMax", 255);
if (m_notecardLineReadCharsMax > 65535) if (m_notecardLineReadCharsMax > 65535)
m_notecardLineReadCharsMax = 65535; m_notecardLineReadCharsMax = 65535;
// load limits for particular subsystems.
m_TransferModule = IConfig SMTPConfig;
m_ScriptEngine.World.RequestModuleInterface<IMessageTransferModule>(); if ((SMTPConfig = m_ScriptEngine.ConfigSource.Configs["SMTP"]) != null) {
m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>(); // there's an smtp config, so load in the snooze time.
EMAIL_PAUSE_TIME = SMTPConfig.GetInt("email_pause_time", EMAIL_PAUSE_TIME);
AsyncCommands = new AsyncCommandManager(ScriptEngine); }
} }
public override Object InitializeLifetimeService() public override Object InitializeLifetimeService()
@ -2877,6 +2890,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public virtual void llSleep(double sec) public virtual void llSleep(double sec)
{ {
// m_log.Info("llSleep snoozing " + sec + "s.");
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
Thread.Sleep((int)(sec * 1000)); Thread.Sleep((int)(sec * 1000));
} }
@ -3130,7 +3144,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
} }
emailModule.SendEmail(m_host.UUID, address, subject, message); emailModule.SendEmail(m_host.UUID, address, subject, message);
ScriptSleep(20000); llSleep(EMAIL_PAUSE_TIME);
} }
public void llGetNextEmail(string address, string subject) public void llGetNextEmail(string address, string subject)

View File

@ -273,6 +273,12 @@
;# {host_domain_header_from} {[Startup]emailmodule:DefaultEmailModule enabled:true} {From address to use in the sent email header?} {} 127.0.0.1 ;# {host_domain_header_from} {[Startup]emailmodule:DefaultEmailModule enabled:true} {From address to use in the sent email header?} {} 127.0.0.1
; host_domain_header_from = "127.0.0.1" ; host_domain_header_from = "127.0.0.1"
;# {email_pause_time} {[Startup]emailmodule:DefaultEmailModule enabled:true} {Period in seconds to delay after an email is sent.} {} 20
; email_pause_time = 20
;# {email_max_size} {[Startup]emailmodule:DefaultEmailModule enabled:true} {Maximum total size of email in bytes.} {} 4096
; email_max_size = 4096
;# {SMTP_SERVER_HOSTNAME} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server name?} {} 127.0.0.1 ;# {SMTP_SERVER_HOSTNAME} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server name?} {} 127.0.0.1
; SMTP_SERVER_HOSTNAME = "127.0.0.1" ; SMTP_SERVER_HOSTNAME = "127.0.0.1"
@ -285,7 +291,6 @@
;# {SMTP_SERVER_PASSWORD} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server password} {} ;# {SMTP_SERVER_PASSWORD} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server password} {}
; SMTP_SERVER_PASSWORD = "" ; SMTP_SERVER_PASSWORD = ""
[Network] [Network]
;; Configure the remote console user here. This will not actually be used ;; Configure the remote console user here. This will not actually be used
;; unless you use -console=rest at startup. ;; unless you use -console=rest at startup.
@ -677,7 +682,7 @@
;; Sets the multiplier for the scripting delays ;; Sets the multiplier for the scripting delays
; ScriptDelayFactor = 1.0 ; ScriptDelayFactor = 1.0
;; The factor the 10 m distances llimits are multiplied by ;; The factor the 10 m distances limits are multiplied by
; ScriptDistanceLimitFactor = 1.0 ; ScriptDistanceLimitFactor = 1.0
;; Maximum length of notecard line read ;; Maximum length of notecard line read
@ -780,7 +785,7 @@
;; groups service if the service is using these keys ;; groups service if the service is using these keys
; XmlRpcServiceReadKey = 1234 ; XmlRpcServiceReadKey = 1234
; XmlRpcServiceWriteKey = 1234 ; XmlRpcServiceWriteKey = 1234
[InterestManagement] [InterestManagement]
;# {UpdatePrioritizationScheme} {} {Update prioritization scheme?} {BestAvatarResponsiveness Time Distance SimpleAngularDistance FrontBack} BestAvatarResponsiveness ;# {UpdatePrioritizationScheme} {} {Update prioritization scheme?} {BestAvatarResponsiveness Time Distance SimpleAngularDistance FrontBack} BestAvatarResponsiveness
;; This section controls how state updates are prioritized for each client ;; This section controls how state updates are prioritized for each client