diff options
author | Justin Clark-Casey (justincc) | 2009-08-17 19:48:32 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2009-08-17 19:48:32 +0100 |
commit | eb78ac343e68d36a84fdc7fec47797233699cccc (patch) | |
tree | 93e29213d4e32167566569186ea88b4c44fe20ae | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-eb78ac343e68d36a84fdc7fec47797233699cccc.zip opensim-SC_OLD-eb78ac343e68d36a84fdc7fec47797233699cccc.tar.gz opensim-SC_OLD-eb78ac343e68d36a84fdc7fec47797233699cccc.tar.bz2 opensim-SC_OLD-eb78ac343e68d36a84fdc7fec47797233699cccc.tar.xz |
Apply http://opensimulator.org/mantis/view.php?id=3538
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
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs | 12 | ||||
-rw-r--r-- | bin/OpenSim.ini.example | 25 |
3 files changed, 33 insertions, 14 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs index f03e5fc..b61959f 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs | |||
@@ -83,6 +83,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
83 | 83 | ||
84 | internal string _accessPassword = String.Empty; | 84 | internal string _accessPassword = String.Empty; |
85 | internal Regex AccessPasswordRegex = null; | 85 | internal Regex AccessPasswordRegex = null; |
86 | internal List<string> ExcludeList = new List<string>(); | ||
86 | internal string AccessPassword | 87 | internal string AccessPassword |
87 | { | 88 | { |
88 | get { return _accessPassword; } | 89 | get { return _accessPassword; } |
@@ -210,8 +211,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
210 | m_log.DebugFormat("[IRC-Channel-{0}] PingDelay : <{1}>", cs.idn, cs.PingDelay); | 211 | m_log.DebugFormat("[IRC-Channel-{0}] PingDelay : <{1}>", cs.idn, cs.PingDelay); |
211 | cs.AccessPassword = Substitute(rs, config.GetString("access_password", cs.AccessPassword)); | 212 | cs.AccessPassword = Substitute(rs, config.GetString("access_password", cs.AccessPassword)); |
212 | m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword); | 213 | m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword); |
213 | 214 | string[] excludes = config.GetString("exclude_list", "").Trim().Split(new Char[] { ',' }); | |
214 | 215 | cs.ExcludeList = new List<string>(excludes.Length); | |
216 | foreach(string name in excludes) | ||
217 | { | ||
218 | cs.ExcludeList.Add(name.Trim().ToLower()); | ||
219 | } | ||
220 | |||
215 | // Fail if fundamental information is still missing | 221 | // Fail if fundamental information is still missing |
216 | 222 | ||
217 | if (cs.Server == null || cs.IrcChannel == null || cs.BaseNickname == null || cs.User == null) | 223 | if (cs.Server == null || cs.IrcChannel == null || cs.BaseNickname == null || cs.User == null) |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs index 203948e..c49d942 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs | |||
@@ -145,7 +145,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
145 | if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting)) | 145 | if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting)) |
146 | { | 146 | { |
147 | m_log.InfoFormat("[IRC-Region {0}]: {1} has left", Region, client.Name); | 147 | m_log.InfoFormat("[IRC-Region {0}]: {1} has left", Region, client.Name); |
148 | cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", client.Name)); | 148 | //Check if this person is excluded from IRC |
149 | if (!cs.ExcludeList.Contains(client.Name.ToLower())) | ||
150 | { | ||
151 | cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", client.Name)); | ||
152 | } | ||
149 | } | 153 | } |
150 | client.OnLogout -= OnClientLoggedOut; | 154 | client.OnLogout -= OnClientLoggedOut; |
151 | client.OnConnectionClosed -= OnClientLoggedOut; | 155 | client.OnConnectionClosed -= OnClientLoggedOut; |
@@ -209,7 +213,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
209 | { | 213 | { |
210 | string clientName = String.Format("{0} {1}", presence.Firstname, presence.Lastname); | 214 | string clientName = String.Format("{0} {1}", presence.Firstname, presence.Lastname); |
211 | m_log.DebugFormat("[IRC-Region {0}] {1} has arrived", Region, clientName); | 215 | m_log.DebugFormat("[IRC-Region {0}] {1} has arrived", Region, clientName); |
212 | cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has arrived", clientName)); | 216 | //Check if this person is excluded from IRC |
217 | if (!cs.ExcludeList.Contains(clientName.ToLower())) | ||
218 | { | ||
219 | cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has arrived", clientName)); | ||
220 | } | ||
213 | } | 221 | } |
214 | } | 222 | } |
215 | } | 223 | } |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 166f2c6..9a17c58 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -679,16 +679,21 @@ | |||
679 | ;relay_chat = true | 679 | ;relay_chat = true |
680 | ;access_password = foobar | 680 | ;access_password = foobar |
681 | 681 | ||
682 | ;fallback_region = name of "default" region | 682 | ;;fallback_region = name of "default" region |
683 | ;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message | 683 | ;;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message |
684 | ; must start with "PRIVMSG {0} : " or irc server will get upset | 684 | ;; must start with "PRIVMSG {0} : " or irc server will get upset |
685 | ;for <bot>:<user in region> :<message> | 685 | ;;for <bot>:<user in region> :<message> |
686 | ;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}" | 686 | ;;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}" |
687 | ;for <bot>:<message> - <user of region> : | 687 | ;;for <bot>:<message> - <user of region> : |
688 | msgformat = "PRIVMSG {0} : {3} - {1} of {2}" | 688 | ;msgformat = "PRIVMSG {0} : {3} - {1} of {2}" |
689 | ;for <bot>:<message> - from <user> : | 689 | ;;for <bot>:<message> - from <user> : |
690 | ;msgformat = "PRIVMSG {0} : {3} - from {1}" | 690 | ;;msgformat = "PRIVMSG {0} : {3} - from {1}" |
691 | 691 | ||
692 | ;; exclude_list allows you to stop the IRC connector from announcing the | ||
693 | ;;arrival and departure of certain users. For example: admins, bots. | ||
694 | |||
695 | ;exclude_list=User 1,User 2,User 3 | ||
696 | |||
692 | 697 | ||
693 | ;[CMS] | 698 | ;[CMS] |
694 | ;enabled = true | 699 | ;enabled = true |