package uc.protocols.hub;
import helpers.GH;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Set;
import java.util.regex.Pattern;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import uc.IUser;
import uc.IUserChangedListener.UserChange;
import uc.IUserChangedListener.UserChangeEvent;
import uc.user.User;
public class UserIP extends AbstractNMDCHubProtocolCommand {
private static Logger logger = LoggerFactory.make();
@Override
public void handle(Hub hub,String command) throws IOException {
logger.debug("USERIP: "+command);
String[] b = command.split(" ", 2)[1].split(Pattern.quote("$$"));
for (String userIPString : b) {
userIPString = userIPString.trim();
if (!GH.isEmpty(userIPString)) {
String a[] = userIPString.split(" ");
String nick = a[0];
User usr;
if (nick.equals(hub.getSelf().getNick())) {
usr = hub.getSelf();
} else {
usr = hub.getUserByNick(nick);
}
if (usr != null && a.length > 1) {
usr.setIp(InetAddress.getByName(a[1].trim()));
usr.notifyUserChanged(UserChange.CHANGED,UserChangeEvent.INF);
}
}
}
}
public static void sendUserIPRequest(Hub hub,IUser usr) {
if (supportsUserIp(hub)) {
String userip = "$UserIP "+usr.getNick()+"|";
hub.sendUnmodifiedRaw(userip);
}
}
public static boolean supportsUserIp(Hub hub) {
Set<String> osup = hub.getOthersSupports();
return osup.contains("UserIP") || osup.contains("UserIP2");
}
}