Index: src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/SiteBot.java =================================================================== --- src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/SiteBot.java (Revision 1754) +++ src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/SiteBot.java (Arbeitskopie) @@ -49,6 +49,7 @@ import org.drftpd.commandmanager.CommandManagerInterface; import org.drftpd.commandmanager.CommandRequestInterface; import org.drftpd.commandmanager.CommandResponseInterface; +import org.drftpd.commands.UserManagement; import org.drftpd.event.LoadPluginEvent; import org.drftpd.event.ReloadEvent; import org.drftpd.event.UnloadPluginEvent; @@ -57,6 +58,10 @@ import org.drftpd.plugins.sitebot.config.ChannelConfig; import org.drftpd.plugins.sitebot.config.ServerConfig; import org.drftpd.plugins.sitebot.config.SiteBotConfig; +import org.drftpd.plugins.sitebot.event.InviteEvent; +import org.drftpd.usermanager.NoSuchUserException; +import org.drftpd.usermanager.User; +import org.drftpd.usermanager.UserFileException; import org.drftpd.vfs.DirectoryHandle; import org.java.plugin.PluginManager; import org.java.plugin.registry.Extension; @@ -208,6 +213,7 @@ GlobalContext.getEventService().subscribe(ReloadEvent.class,this); GlobalContext.getEventService().subscribe(LoadPluginEvent.class,this); GlobalContext.getEventService().subscribe(UnloadPluginEvent.class,this); + GlobalContext.getEventService().subscribe(InviteEvent.class,this); } @@ -1182,7 +1188,28 @@ * * @see ReplyConstants */ - protected void onServerResponse(int code, String response) {} + protected void onServerResponse(int code, String response) { + if(code == RPL_WHOISUSER) { + //parse the whois for registering user + //DiSCOVERY-MAiN [Apollo] Apollo pre.bot.of.xinu * :Apollo + //botnick ircNick login host ---------- + String[] reply = response.split(" "); + String nick = reply[1]; + String ident = nick + "!" + reply[2] + "@" + reply[3]; + if(_users.containsKey(nick)) { + try { + User user = GlobalContext.getGlobalContext().getUserManager().getUserByName(_users.get(nick).getFtpUser()); + _users.get(nick).setIdent(ident); + user.getKeyedMap().setObject(UserManagement.IRCIDENT,ident); + user.commit(); + } catch (NoSuchUserException e) { + //do nothing + } catch (UserFileException ufe) { + //do nothing + } + } + } + } /** @@ -3018,6 +3045,12 @@ } } } + } else if (event instanceof InviteEvent) { + InviteEvent inviteEvent = (InviteEvent) event; + UserDetails userDetails = new UserDetails(inviteEvent.getIrcNick(), "", this); + userDetails.setFtpUser(inviteEvent.getUser().getName()); + _users.put(inviteEvent.getIrcNick(), userDetails); + sendRawLine("WHOIS " + inviteEvent.getIrcNick()); } } Index: src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/UserDetails.java =================================================================== --- src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/UserDetails.java (Revision 1754) +++ src/plugins/org.drftpd.plugins.sitebot/src/org/drftpd/plugins/sitebot/UserDetails.java (Arbeitskopie) @@ -71,6 +71,10 @@ return _ftpUser; } + protected void setFtpUser(String ftpUser) { + _ftpUser = ftpUser; + } + protected Blowfish getBlowCipher() { // If we don't have a cipher for this user then check again as they may have set // one on site since we last checked. @@ -138,10 +142,18 @@ user.commit(); } + public String getNick() { + return _nick; + } + protected void setNick(String nick) { _nick = nick; } + protected void setIdent(String ident) { + _ident = ident; + } + protected OutputWriter getOutputWriter() { return _writer; } @@ -155,8 +167,4 @@ protected synchronized void removeCommandSession(ServiceCommand session) { _commandSessions.remove(session); } - - public String getNick() { - return _nick; - } }