// Bot
//
// Douglas Thrift
//
// Bot.java
/* Copyright 2011 Douglas Thrift
*
* This file is part of Big Screen Bot.
*
* Big Screen Bot is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Big Screen Bot is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Big Screen Bot. If not, see .
*/
package net.douglasthrift.bigscreenbot;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Collection;
import java.util.regex.Pattern;
import org.apache.oro.text.GlobCompiler;
import org.jibble.pircbot.PircBot;
import org.jibble.pircbot.User;
public abstract class Bot extends PircBot
{
protected boolean isNickInChannels(String nick)
{
for (String channel : getChannels())
for (User user : getUsers(channel))
if (user.equals(nick))
return true;
return false;
}
protected static Pattern compileNickMask(String mask)
{
return Pattern.compile(GlobCompiler.globToPerl5(mask.toCharArray(), GlobCompiler.DEFAULT_MASK), Pattern.CASE_INSENSITIVE);
}
protected static boolean matchNickMasks(String sender, String login, String hostname, Collection masks)
{
String nick = sender + "!" + login + "@" + hostname;
for (Pattern mask : masks)
if (mask.matcher(nick).matches())
return true;
try
{
InetAddress address = InetAddress.getByName(hostname);
String name = address.getCanonicalHostName();
if (!name.equalsIgnoreCase(hostname))
{
nick = sender + "!" + login + "@" + name;
for (Pattern mask : masks)
if (mask.matcher(nick).matches())
return true;
}
}
catch (UnknownHostException exception) {}
return false;
}
}
// vim: expandtab