| | 205 | |
| | 206 | public class Reroute : FilterItem |
| | 207 | { |
| | 208 | private String _matchPattern = ""; |
| | 209 | public String MatchPattern |
| | 210 | { |
| | 211 | get { return _matchPattern; } |
| | 212 | set { _matchPattern = value; } |
| | 213 | } |
| | 214 | |
| | 215 | private String _userMatchPattern = ""; |
| | 216 | public String UserMatchPattern |
| | 217 | { |
| | 218 | get { return _userMatchPattern; } |
| | 219 | set { _userMatchPattern = value; } |
| | 220 | } |
| | 221 | |
| | 222 | private String _channelName = ""; |
| | 223 | public String ChannelName |
| | 224 | { |
| | 225 | get { return _channelName; } |
| | 226 | set { _channelName = value; } |
| | 227 | } |
| | 228 | |
| | 229 | private Boolean _duplicate = true; |
| | 230 | public Boolean Duplicate |
| | 231 | { |
| | 232 | get { return _duplicate; } |
| | 233 | set { _duplicate = value; } |
| | 234 | } |
| | 235 | |
| | 236 | public override void Execute(FilterArgs args) |
| | 237 | { |
| | 238 | if (!String.IsNullOrEmpty(_matchPattern)) |
| | 239 | { |
| | 240 | Boolean rerouteRequired = |
| | 241 | Regex.IsMatch(args.Content, _matchPattern, RegexOptions.IgnoreCase) && |
| | 242 | ((String.IsNullOrEmpty(_userMatchPattern)) ? true : Regex.IsMatch(args.User.ScreenName, _userMatchPattern)); |
| | 243 | |
| | 244 | if (!rerouteRequired) |
| | 245 | return; |
| | 246 | |
| | 247 | IRCMessage msg; |
| | 248 | switch (args.IRCMessageType.ToUpperInvariant()) |
| | 249 | { |
| | 250 | case "NOTICE": |
| | 251 | msg = new NoticeMessage(_channelName, args.Content); |
| | 252 | break; |
| | 253 | case "PRIVMSG": |
| | 254 | default: |
| | 255 | msg = new PrivMsgMessage(_channelName, args.Content); |
| | 256 | break; |
| | 257 | } |
| | 258 | msg.SenderNick = args.User.ScreenName; |
| | 259 | msg.SenderHost = "twitter@" + Server.ServerName; |
| | 260 | args.Session.Send(msg); |
| | 261 | |
| | 262 | if (!_duplicate) |
| | 263 | args.Drop = true; |
| | 264 | } |
| | 265 | } |
| | 266 | public override string ToString() |
| | 267 | { |
| | 268 | return "Reroute:" |
| | 269 | + ((Enabled) ? "" : "[DISABLED]") |
| | 270 | + ((String.IsNullOrEmpty(_userMatchPattern)) ? "" : String.Format(" UserMatchPattern={0}", _userMatchPattern)) |
| | 271 | + ((String.IsNullOrEmpty(_matchPattern)) ? "" : String.Format(" MatchPattern={0}", _matchPattern)) |
| | 272 | + ((_duplicate) ? " Duplicate" : "") |
| | 273 | ; |
| | 274 | } |
| | 275 | } |
| | 276 | |