Add ability to silence IRC relay of region joins and quits from certain users
This is useful for admins who wish to remain hidden, or service bots.
Thanks RemedyTomm
arthursv
Justin Clark-Casey (justincc) 2009-08-17 19:48:32 +01:00
parent 95bb22f883
commit eb78ac343e
3 changed files with 32 additions and 13 deletions

View File

@ -83,6 +83,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
internal string _accessPassword = String.Empty;
internal Regex AccessPasswordRegex = null;
internal List<string> ExcludeList = new List<string>();
internal string AccessPassword
{
get { return _accessPassword; }
@ -210,8 +211,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
m_log.DebugFormat("[IRC-Channel-{0}] PingDelay : <{1}>", cs.idn, cs.PingDelay);
cs.AccessPassword = Substitute(rs, config.GetString("access_password", cs.AccessPassword));
m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword);
string[] excludes = config.GetString("exclude_list", "").Trim().Split(new Char[] { ',' });
cs.ExcludeList = new List<string>(excludes.Length);
foreach(string name in excludes)
{
cs.ExcludeList.Add(name.Trim().ToLower());
}
// Fail if fundamental information is still missing
if (cs.Server == null || cs.IrcChannel == null || cs.BaseNickname == null || cs.User == null)

View File

@ -145,7 +145,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting))
{
m_log.InfoFormat("[IRC-Region {0}]: {1} has left", Region, client.Name);
cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", client.Name));
//Check if this person is excluded from IRC
if (!cs.ExcludeList.Contains(client.Name.ToLower()))
{
cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", client.Name));
}
}
client.OnLogout -= OnClientLoggedOut;
client.OnConnectionClosed -= OnClientLoggedOut;
@ -209,7 +213,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
{
string clientName = String.Format("{0} {1}", presence.Firstname, presence.Lastname);
m_log.DebugFormat("[IRC-Region {0}] {1} has arrived", Region, clientName);
cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has arrived", clientName));
//Check if this person is excluded from IRC
if (!cs.ExcludeList.Contains(clientName.ToLower()))
{
cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has arrived", clientName));
}
}
}
}

View File

@ -679,16 +679,21 @@
;relay_chat = true
;access_password = foobar
;fallback_region = name of "default" region
;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
; must start with "PRIVMSG {0} : " or irc server will get upset
;for <bot>:<user in region> :<message>
;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
;for <bot>:<message> - <user of region> :
msgformat = "PRIVMSG {0} : {3} - {1} of {2}"
;for <bot>:<message> - from <user> :
;msgformat = "PRIVMSG {0} : {3} - from {1}"
;;fallback_region = name of "default" region
;;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
;; must start with "PRIVMSG {0} : " or irc server will get upset
;;for <bot>:<user in region> :<message>
;;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
;;for <bot>:<message> - <user of region> :
;msgformat = "PRIVMSG {0} : {3} - {1} of {2}"
;;for <bot>:<message> - from <user> :
;;msgformat = "PRIVMSG {0} : {3} - from {1}"
;; exclude_list allows you to stop the IRC connector from announcing the
;;arrival and departure of certain users. For example: admins, bots.
;exclude_list=User 1,User 2,User 3
;[CMS]
;enabled = true