aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 991107e..0e6e8bb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -120,6 +120,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
120 protected IUrlModule m_UrlModule = null; 120 protected IUrlModule m_UrlModule = null;
121 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = new Dictionary<UUID, UserInfoCacheEntry>(); 121 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = new Dictionary<UUID, UserInfoCacheEntry>();
122 protected int EMAIL_PAUSE_TIME = 20; // documented delay value for smtp. 122 protected int EMAIL_PAUSE_TIME = 20; // documented delay value for smtp.
123 protected string m_internalObjectHost = "lsl.opensim.local";
124 protected bool m_restrictEmail = false;
123 protected ISoundModule m_SoundModule = null; 125 protected ISoundModule m_SoundModule = null;
124 126
125 //An array of HTTP/1.1 headers that are not allowed to be used 127 //An array of HTTP/1.1 headers that are not allowed to be used
@@ -193,11 +195,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
193 195
194 if (seConfigSource != null) 196 if (seConfigSource != null)
195 { 197 {
198 IConfig lslConfig = seConfigSource.Configs["LL-Functions"];
199 if (lslConfig != null)
200 {
201 m_restrictEmail = lslConfig.GetBoolean("RestrictEmail", m_restrictEmail);
202 }
203
196 IConfig smtpConfig = seConfigSource.Configs["SMTP"]; 204 IConfig smtpConfig = seConfigSource.Configs["SMTP"];
197 if (smtpConfig != null) 205 if (smtpConfig != null)
198 { 206 {
199 // there's an smtp config, so load in the snooze time. 207 // there's an smtp config, so load in the snooze time.
200 EMAIL_PAUSE_TIME = smtpConfig.GetInt("email_pause_time", EMAIL_PAUSE_TIME); 208 EMAIL_PAUSE_TIME = smtpConfig.GetInt("email_pause_time", EMAIL_PAUSE_TIME);
209
210 m_internalObjectHost = smtpConfig.GetString("internal_object_host", m_internalObjectHost);
201 } 211 }
202 } 212 }
203 } 213 }
@@ -3387,6 +3397,30 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3387 return; 3397 return;
3388 } 3398 }
3389 3399
3400 //Restrict email destination to the avatars registered email address?
3401 //The restriction only applies if the destination address is not local.
3402 if (m_restrictEmail == true && address.Contains(m_internalObjectHost) == false)
3403 {
3404 UserAccount account =
3405 World.UserAccountService.GetUserAccount(
3406 World.RegionInfo.ScopeID,
3407 m_host.OwnerID);
3408
3409 if (account == null)
3410 {
3411 Error("llEmail", "Can't find user account for '" + m_host.OwnerID.ToString() + "'");
3412 return;
3413 }
3414
3415 if (String.IsNullOrEmpty(account.Email))
3416 {
3417 Error("llEmail", "User account has not registered an email address.");
3418 return;
3419 }
3420
3421 address = account.Email;
3422 }
3423
3390 emailModule.SendEmail(m_host.UUID, address, subject, message); 3424 emailModule.SendEmail(m_host.UUID, address, subject, message);
3391 ScriptSleep(EMAIL_PAUSE_TIME * 1000); 3425 ScriptSleep(EMAIL_PAUSE_TIME * 1000);
3392 } 3426 }