package de.skuzzle.polly.core.eventhandler; import de.skuzzle.polly.core.internal.users.UserManagerImpl; import de.skuzzle.polly.sdk.IrcManager; import de.skuzzle.polly.sdk.eventlistener.MessageEvent; import de.skuzzle.polly.sdk.eventlistener.MessageType; import de.skuzzle.polly.sdk.exceptions.AlreadySignedOnException; import de.skuzzle.polly.sdk.exceptions.UnknownUserException; public class EuIrcAutoLoginProvider implements AutoLoginProvider { @Override public boolean supportsNetwork(String server) { return server.toLowerCase().contains("euirc.net"); //$NON-NLS-1$ } @Override public void requestAuthentification(String forUser, IrcManager irc) { irc.sendRawCommand("NICKSERV STATUS " + forUser); //$NON-NLS-1$ } @Override public boolean processMessageEvent(MessageEvent e, UserManagerImpl users) throws AlreadySignedOnException, UnknownUserException { if (e.getType() != MessageType.NOTICE) { return false; } if (!e.getUser().getNickName().equalsIgnoreCase("nickserv")) { //$NON-NLS-1$ return false; } final String[] parts = e.getMessage().split(" "); //$NON-NLS-1$ if (parts.length != 3 || !parts[0].equalsIgnoreCase("status") || //$NON-NLS-1$ !parts[2].equals("3")) { //$NON-NLS-1$ return false; } final String forUser = parts[1]; users.logonWithoutPassword(forUser); return true; } @Override public String toString() { return "EuIRCAutoLoginProvider"; //$NON-NLS-1$ } }