Search in sources :

Example 1 with Avatar

use of net.sf.kraken.avatars.Avatar in project Openfire by igniterealtime.

the class MSNListener method contactListInitCompleted.

/**
     * Contact list initialization has completed.
     */
public void contactListInitCompleted(MsnMessenger messenger) {
    for (MsnGroup msnGroup : messenger.getContactList().getGroups()) {
        Log.debug("MSN: Got group " + msnGroup);
        getSession().storeGroup(msnGroup);
    }
    for (MsnContact msnContact : messenger.getContactList().getContacts()) {
        Log.debug("MSN: Got contact " + msnContact);
        if (msnContact.isInList(MsnList.FL) && msnContact.getEmail() != null) {
            final MSNBuddy buddy = new MSNBuddy(getSession().getBuddyManager(), msnContact);
            getSession().getBuddyManager().storeBuddy(buddy);
            if (JiveGlobals.getBooleanProperty("plugin.gateway.msn.avatars", true)) {
                final MsnObject msnAvatar = msnContact.getAvatar();
                if (msnAvatar != null && (buddy.getAvatar() == null || !buddy.getAvatar().getLegacyIdentifier().equals(msnAvatar.getSha1c()))) {
                    try {
                        messenger.retrieveDisplayPicture(msnAvatar, new DisplayPictureListener() {

                            public void notifyMsnObjectRetrieval(MsnMessenger messenger, DisplayPictureRetrieveWorker worker, MsnObject msnObject, ResultStatus result, byte[] resultBytes, Object context) {
                                Log.debug("MSN: Got avatar retrieval result: " + result);
                                // Check for the value
                                if (result == ResultStatus.GOOD) {
                                    try {
                                        Log.debug("MSN: Found avatar of length " + resultBytes.length);
                                        Avatar avatar = new Avatar(buddy.getJID(), msnAvatar.getSha1c(), resultBytes);
                                        buddy.setAvatar(avatar);
                                    } catch (IllegalArgumentException e) {
                                        Log.debug("MSN: Got null avatar, ignoring.");
                                    }
                                }
                            }
                        });
                    } catch (Exception e) {
                        Log.debug("MSN: Unable to retrieve MSN avatar: ", e);
                    }
                } else if (buddy.getAvatar() != null && msnAvatar == null) {
                    buddy.setAvatar(null);
                }
            }
        }
    }
    getSession().syncUsers();
}
Also used : MsnObject(net.sf.jml.MsnObject) DisplayPictureRetrieveWorker(net.sf.jml.message.p2p.DisplayPictureRetrieveWorker) MsnGroup(net.sf.jml.MsnGroup) Avatar(net.sf.kraken.avatars.Avatar) UnknownMessageException(net.sf.jml.exception.UnknownMessageException) MsgNotSendException(net.sf.jml.exception.MsgNotSendException) IncorrectPasswordException(net.sf.jml.exception.IncorrectPasswordException) NotFoundException(org.jivesoftware.util.NotFoundException) UnsupportedProtocolException(net.sf.jml.exception.UnsupportedProtocolException) IOException(java.io.IOException) MsnProtocolException(net.sf.jml.exception.MsnProtocolException) LoginException(net.sf.jml.exception.LoginException) DisplayPictureListener(net.sf.jml.DisplayPictureListener) MsnMessenger(net.sf.jml.MsnMessenger) MsnObject(net.sf.jml.MsnObject) MsnContact(net.sf.jml.MsnContact)

Example 2 with Avatar

use of net.sf.kraken.avatars.Avatar in project Openfire by igniterealtime.

the class BaseTransport method vCardCreated.

/**
     * VCard was just created.
     *
     * @see org.jivesoftware.openfire.vcard.VCardListener#vCardCreated(String, Element)
     */
public void vCardCreated(String username, Element vcardElem) {
    if (vcardElem != null) {
        if (JiveGlobals.getBooleanProperty("plugin.gateway." + getType() + ".avatars", true)) {
            Element photoElem = vcardElem.element("PHOTO");
            if (photoElem != null) {
                Element typeElem = photoElem.element("TYPE");
                Element binElem = photoElem.element("BINVAL");
                if (typeElem != null && binElem != null) {
                    try {
                        MessageDigest md = MessageDigest.getInstance("SHA-1");
                        byte[] imageData = Base64.decode(binElem.getText());
                        md.update(imageData);
                        String xmppHash = StringUtils.encodeHex(md.digest());
                        try {
                            TransportSession<B> trSession = sessionManager.getSession(username);
                            if (trSession.getAvatar() == null || !trSession.getAvatar().getXmppHash().equals(xmppHash)) {
                                // Store a cache of the avatar
                                trSession.setAvatar(new Avatar(trSession.getJID(), imageData));
                                trSession.updateLegacyAvatar(typeElem.getText(), imageData);
                            }
                        } catch (NotFoundException e) {
                        // Not an active session, ignore.
                        }
                    } catch (NoSuchAlgorithmException e) {
                        Log.error("Gateway: Unable to find support for SHA algorith?");
                    }
                }
            }
        }
    }
}
Also used : Element(org.dom4j.Element) NotFoundException(org.jivesoftware.util.NotFoundException) UserNotFoundException(org.jivesoftware.openfire.user.UserNotFoundException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) MessageDigest(java.security.MessageDigest) Avatar(net.sf.kraken.avatars.Avatar)

Example 3 with Avatar

use of net.sf.kraken.avatars.Avatar in project Openfire by igniterealtime.

the class BaseTransport method vCardUpdated.

/**
     * VCard was just updated.
     *
     * @see org.jivesoftware.openfire.vcard.VCardListener#vCardUpdated(String, Element)
     */
public void vCardUpdated(String username, Element vcardElem) {
    if (vcardElem != null) {
        if (JiveGlobals.getBooleanProperty("plugin.gateway." + getType() + ".avatars", true)) {
            Element photoElem = vcardElem.element("PHOTO");
            if (photoElem != null) {
                Element typeElem = photoElem.element("TYPE");
                Element binElem = photoElem.element("BINVAL");
                if (typeElem != null && binElem != null) {
                    try {
                        MessageDigest md = MessageDigest.getInstance("SHA-1");
                        byte[] imageData = Base64.decode(binElem.getText());
                        md.update(imageData);
                        String xmppHash = StringUtils.encodeHex(md.digest());
                        try {
                            TransportSession<B> trSession = sessionManager.getSession(username);
                            if (trSession.getAvatar() == null || !trSession.getAvatar().getXmppHash().equals(xmppHash)) {
                                // Store a cache of the avatar
                                trSession.setAvatar(new Avatar(trSession.getJID(), imageData));
                                trSession.updateLegacyAvatar(typeElem.getText(), imageData);
                            }
                        } catch (NotFoundException e) {
                        // Not an active session, ignore.
                        }
                    } catch (NoSuchAlgorithmException e) {
                        Log.error("Gateway: Unable to find support for SHA algorith?");
                    }
                }
            }
        }
    }
}
Also used : Element(org.dom4j.Element) NotFoundException(org.jivesoftware.util.NotFoundException) UserNotFoundException(org.jivesoftware.openfire.user.UserNotFoundException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) MessageDigest(java.security.MessageDigest) Avatar(net.sf.kraken.avatars.Avatar)

Example 4 with Avatar

use of net.sf.kraken.avatars.Avatar in project Openfire by igniterealtime.

the class BasicFlapConnection method handleSnacPacket.

@Override
protected void handleSnacPacket(SnacPacketEvent e) {
    Log.debug("OSCAR snac packet received: " + e);
    SnacCommand cmd = e.getSnacCommand();
    if (cmd instanceof ServerReadyCmd) {
        ServerReadyCmd src = (ServerReadyCmd) cmd;
        setSnacFamilies(src.getSnacFamilies());
        Collection<SnacFamilyInfo> familyInfos = SnacFamilyInfoFactory.getDefaultFamilyInfos(src.getSnacFamilies());
        setSnacFamilyInfos(familyInfos);
        getMainSession().registerSnacFamilies(this);
        request(new ClientVersionsCmd(familyInfos));
        request(new RateInfoRequest());
    } else if (cmd instanceof RecvImIcbm) {
        RecvImIcbm icbm = (RecvImIcbm) cmd;
        String sn = icbm.getSenderInfo().getScreenname();
        InstantMessage message = icbm.getMessage();
        String msg = StringUtils.convertFromHtml(message.getMessage());
        getMainSession().getTransport().sendMessage(getMainSession().getJID(), getMainSession().getTransport().convertIDToJID(sn), msg);
    } else if (cmd instanceof OldIcbm) {
        OldIcbm oicbm = (OldIcbm) cmd;
        if (oicbm.getMessageType() == OldIcbm.MTYPE_PLAIN) {
            String uin = String.valueOf(oicbm.getSender());
            String msg = StringUtils.convertFromHtml(oicbm.getReason());
            Log.debug("Got ICBM message " + uin + " with " + msg + "\n" + oicbm);
            //                InstantMessage message = oicbm.getMessage();
            //                Log.debug("Got ICBM message "+uin+" with "+message+"\n"+oicbm);
            //                String msg = StringUtils.unescapeFromXML(OscarTools.stripHtml(message.getMessage()));
            getMainSession().getTransport().sendMessage(getMainSession().getJID(), getMainSession().getTransport().convertIDToJID(uin), msg);
        }
    } else if (cmd instanceof WarningNotification) {
        WarningNotification wn = (WarningNotification) cmd;
        MiniUserInfo warner = wn.getWarner();
        if (warner == null) {
            getMainSession().getTransport().sendMessage(getMainSession().getJID(), getMainSession().getTransport().getJID(), LocaleUtils.getLocalizedString("gateway.aim.warninganon", "kraken", Arrays.asList(wn.getNewLevel().toString())), Message.Type.headline);
        } else {
            Log.debug("*** " + warner.getScreenname() + " warned you up to " + wn.getNewLevel() + "%");
            getMainSession().getTransport().sendMessage(getMainSession().getJID(), getMainSession().getTransport().getJID(), LocaleUtils.getLocalizedString("gateway.aim.warningdirect", "kraken", Arrays.asList(warner.getScreenname(), wn.getNewLevel().toString())), Message.Type.headline);
        }
    } else if (cmd instanceof ExtraInfoAck) {
        ExtraInfoAck eia = (ExtraInfoAck) cmd;
        List<ExtraInfoBlock> extraInfo = eia.getExtraInfos();
        if (extraInfo != null) {
            for (ExtraInfoBlock i : extraInfo) {
                ExtraInfoData data = i.getExtraData();
                final byte[] pendingAvatar = getMainSession().getSsiHierarchy().getPendingAvatarData();
                if (JiveGlobals.getBooleanProperty("plugin.gateway." + getMainSession().getTransport().getType() + ".avatars", true) && (data.getFlags() & ExtraInfoData.FLAG_UPLOAD_ICON) != 0 && pendingAvatar != null) {
                    Log.debug("OSCAR: Server has indicated that it wants our icon.");
                    request(new UploadIconCmd(ByteBlock.wrap(pendingAvatar)), new SnacRequestAdapter() {

                        @Override
                        public void handleResponse(SnacResponseEvent e) {
                            SnacCommand cmd = e.getSnacCommand();
                            if (cmd instanceof UploadIconAck && pendingAvatar != null) {
                                UploadIconAck iconAck = (UploadIconAck) cmd;
                                if (iconAck.getCode() == UploadIconAck.CODE_DEFAULT || iconAck.getCode() == UploadIconAck.CODE_SUCCESS) {
                                    ExtraInfoBlock iconInfo = iconAck.getIconInfo();
                                    if (iconInfo == null) {
                                        Log.debug("OSCAR: Got icon ack with no iconInfo: " + iconAck);
                                    }
                                    Log.debug("OSCAR: Successfully set icon.");
                                    try {
                                        MessageDigest md = MessageDigest.getInstance("MD5");
                                        md.update(pendingAvatar);
                                        getMainSession().getAvatar().setLegacyIdentifier(org.jivesoftware.util.StringUtils.encodeHex(md.digest()));
                                    } catch (NoSuchAlgorithmException ee) {
                                        Log.error("No algorithm found for MD5!", ee);
                                    }
                                } else if (iconAck.getCode() == UploadIconAck.CODE_BAD_FORMAT) {
                                    Log.debug("OSCAR: Uploaded icon was not in an unaccepted format.");
                                } else if (iconAck.getCode() == UploadIconAck.CODE_TOO_LARGE) {
                                    Log.debug("OSCAR: Uploaded icon was too large to be accepted.");
                                } else {
                                    Log.debug("OSCAR: Got unknown code from UploadIconAck: " + iconAck.getCode());
                                }
                            } else if (cmd instanceof SnacError) {
                                Log.debug("Got SnacError while setting icon: " + cmd);
                            }
                            // Clear the pending binary data from Krakens memory.
                            getMainSession().getSsiHierarchy().clearPendingAvatar();
                        }
                    });
                }
            }
        }
    } else if (cmd instanceof BuddyStatusCmd) {
        BuddyStatusCmd bsc = (BuddyStatusCmd) cmd;
        FullUserInfo info = bsc.getUserInfo();
        PresenceType pType = PresenceType.available;
        String vStatus = "";
        if (info.getAwayStatus()) {
            pType = PresenceType.away;
        }
        if ((info.getFlags() & FullUserInfo.MASK_WIRELESS) != 0) {
            pType = PresenceType.xa;
            vStatus = "Mobile: ";
        }
        if (getMainSession().getTransport().getType().equals(TransportType.icq) && info.getScreenname().matches("/^\\d+$/")) {
            pType = ((OSCARTransport) getMainSession().getTransport()).convertICQStatusToXMPP(info.getIcqStatus());
        }
        List<ExtraInfoBlock> extraInfo = info.getExtraInfoBlocks();
        if (extraInfo != null) {
            for (ExtraInfoBlock i : extraInfo) {
                ExtraInfoData data = i.getExtraData();
                if (i.getType() == ExtraInfoBlock.TYPE_AVAILMSG) {
                    ByteBlock msgBlock = data.getData();
                    int len = BinaryTools.getUShort(msgBlock, 0);
                    if (len >= 0) {
                        byte[] msgBytes = msgBlock.subBlock(2, len).toByteArray();
                        String msg;
                        try {
                            msg = new String(msgBytes, "UTF-8");
                        } catch (UnsupportedEncodingException e1) {
                            continue;
                        }
                        if (msg.length() > 0) {
                            vStatus = vStatus + msg;
                        }
                    }
                } else if (i.getType() == ExtraInfoBlock.TYPE_ICONHASH && JiveGlobals.getBooleanProperty("plugin.gateway." + getMainSession().getTransport().getType() + ".avatars", true)) {
                    try {
                        OSCARBuddy oscarBuddy = getMainSession().getBuddyManager().getBuddy(getMainSession().getTransport().convertIDToJID(info.getScreenname()));
                        Avatar curAvatar = oscarBuddy.getAvatar();
                        if (curAvatar == null || !curAvatar.getLegacyIdentifier().equals(org.jivesoftware.util.StringUtils.encodeHex(i.getExtraData().getData().toByteArray()))) {
                            IconRequest req = new IconRequest(info.getScreenname(), i.getExtraData());
                            request(req, new SnacRequestAdapter() {

                                @Override
                                public void handleResponse(SnacResponseEvent e) {
                                    SnacCommand cmd = e.getSnacCommand();
                                    if (cmd instanceof IconDataCmd) {
                                        IconDataCmd idc = (IconDataCmd) cmd;
                                        if (idc.getIconData().getLength() > 0 && idc.getIconData().getLength() != 90) {
                                            Log.debug("Got icon data: " + idc);
                                            if (getMainSession().getBuddyManager().isActivated()) {
                                                try {
                                                    OSCARBuddy oscarBuddy = getMainSession().getBuddyManager().getBuddy(getMainSession().getTransport().convertIDToJID(idc.getScreenname()));
                                                    oscarBuddy.setAvatar(new Avatar(getMainSession().getTransport().convertIDToJID(idc.getScreenname()), org.jivesoftware.util.StringUtils.encodeHex(idc.getIconInfo().getExtraData().getData().toByteArray()), idc.getIconData().toByteArray()));
                                                } catch (NotFoundException ee) {
                                                // Apparently we don't care about this contact.
                                                } catch (IllegalArgumentException ee) {
                                                    Log.debug("OSCAR: Got null avatar, ignoring.");
                                                }
                                            }
                                        }
                                    }
                                }

                                @Override
                                public void handleTimeout(SnacRequestTimeoutEvent e) {
                                    Log.debug("Time out while waiting for icon data.");
                                }
                            });
                        }
                    } catch (NotFoundException ee) {
                    // Apparently we don't care about this contact.
                    }
                }
            }
        }
        if (getMainSession().getBuddyManager().isActivated()) {
            try {
                OSCARBuddy oscarBuddy = getMainSession().getBuddyManager().getBuddy(getMainSession().getTransport().convertIDToJID(info.getScreenname()));
                oscarBuddy.setPresenceAndStatus(pType, vStatus);
            } catch (NotFoundException ee) {
                // Apparently we don't care about this contact.
                Log.debug("OSCAR: Received presense notification for contact we don't care about: " + info.getScreenname());
            }
        } else {
            getMainSession().getBuddyManager().storePendingStatus(getMainSession().getTransport().convertIDToJID(info.getScreenname()), pType, vStatus);
        }
    } else if (cmd instanceof BuddyOfflineCmd) {
        BuddyOfflineCmd boc = (BuddyOfflineCmd) cmd;
        if (getMainSession().getBuddyManager().isActivated()) {
            try {
                OSCARBuddy oscarBuddy = getMainSession().getBuddyManager().getBuddy(getMainSession().getTransport().convertIDToJID(boc.getScreenname()));
                oscarBuddy.setPresence(PresenceType.unavailable);
            } catch (NotFoundException ee) {
            // Apparently we don't care about this contact.
            }
        } else {
            getMainSession().getBuddyManager().storePendingStatus(getMainSession().getTransport().convertIDToJID(boc.getScreenname()), PresenceType.unavailable, null);
        }
    } else if (cmd instanceof TypingCmd) {
        TypingCmd tc = (TypingCmd) cmd;
        String sn = tc.getScreenname();
        final ChatStateEventSource chatStateEventSource = getMainSession().getTransport().getChatStateEventSource();
        final JID receiver = getMainSession().getJID();
        final JID sender = getMainSession().getTransport().convertIDToJID(sn);
        if (tc.getTypingState() == TypingCmd.STATE_TYPING) {
            chatStateEventSource.isComposing(sender, receiver);
        } else if (tc.getTypingState() == TypingCmd.STATE_PAUSED) {
            chatStateEventSource.sendIsPaused(sender, receiver);
        } else if (tc.getTypingState() == TypingCmd.STATE_NO_TEXT) {
            chatStateEventSource.isInactive(sender, receiver);
        }
    }
}
Also used : SnacRequestAdapter(net.kano.joscar.snac.SnacRequestAdapter) PresenceType(net.sf.kraken.type.PresenceType) NotFoundException(org.jivesoftware.util.NotFoundException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) FullUserInfo(net.kano.joscar.snaccmd.FullUserInfo) WarningNotification(net.kano.joscar.snaccmd.conn.WarningNotification) ExtraInfoData(net.kano.joscar.snaccmd.ExtraInfoData) SnacRequestTimeoutEvent(net.kano.joscar.snac.SnacRequestTimeoutEvent) ServerReadyCmd(net.kano.joscar.snaccmd.conn.ServerReadyCmd) ChatStateEventSource(net.sf.kraken.util.chatstate.ChatStateEventSource) ByteBlock(net.kano.joscar.ByteBlock) BuddyOfflineCmd(net.kano.joscar.snaccmd.buddy.BuddyOfflineCmd) List(java.util.List) RateInfoRequest(net.kano.joscar.snaccmd.conn.RateInfoRequest) MessageDigest(java.security.MessageDigest) IconDataCmd(net.kano.joscar.snaccmd.icon.IconDataCmd) RecvImIcbm(net.kano.joscar.snaccmd.icbm.RecvImIcbm) IconRequest(net.kano.joscar.snaccmd.icon.IconRequest) TypingCmd(net.kano.joscar.snaccmd.icbm.TypingCmd) JID(org.xmpp.packet.JID) ClientVersionsCmd(net.kano.joscar.snaccmd.conn.ClientVersionsCmd) InstantMessage(net.kano.joscar.snaccmd.icbm.InstantMessage) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Avatar(net.sf.kraken.avatars.Avatar) BuddyStatusCmd(net.kano.joscar.snaccmd.buddy.BuddyStatusCmd) SnacFamilyInfo(net.kano.joscar.snaccmd.conn.SnacFamilyInfo) ExtraInfoBlock(net.kano.joscar.snaccmd.ExtraInfoBlock) SnacError(net.kano.joscar.snaccmd.error.SnacError) UploadIconCmd(net.kano.joscar.snaccmd.icon.UploadIconCmd) OldIcbm(net.kano.joscar.snaccmd.icbm.OldIcbm) SnacResponseEvent(net.kano.joscar.snac.SnacResponseEvent) UploadIconAck(net.kano.joscar.snaccmd.icon.UploadIconAck) SnacCommand(net.kano.joscar.flapcmd.SnacCommand) MiniUserInfo(net.kano.joscar.snaccmd.MiniUserInfo) ExtraInfoAck(net.kano.joscar.snaccmd.conn.ExtraInfoAck)

Example 5 with Avatar

use of net.sf.kraken.avatars.Avatar in project Openfire by igniterealtime.

the class XMPPSession method logIn.

/**
     * @see net.sf.kraken.session.TransportSession#logIn(net.sf.kraken.type.PresenceType, String)
     */
@Override
public void logIn(PresenceType presenceType, String verboseStatus) {
    final org.jivesoftware.smack.packet.Presence presence = new org.jivesoftware.smack.packet.Presence(org.jivesoftware.smack.packet.Presence.Type.available);
    if (JiveGlobals.getBooleanProperty("plugin.gateway." + getTransport().getType() + ".avatars", true) && getAvatar() != null) {
        Avatar avatar = getAvatar();
        // Same thing in this case, so lets go ahead and set them.
        avatar.setLegacyIdentifier(avatar.getXmppHash());
        VCardUpdateExtension ext = new VCardUpdateExtension();
        ext.setPhotoHash(avatar.getLegacyIdentifier());
        presence.addExtension(ext);
    }
    final Presence.Mode pMode = ((XMPPTransport) getTransport()).convertGatewayStatusToXMPP(presenceType);
    if (pMode != null) {
        presence.setMode(pMode);
    }
    if (verboseStatus != null && verboseStatus.trim().length() > 0) {
        presence.setStatus(verboseStatus);
    }
    setPendingPresenceAndStatus(presenceType, verboseStatus);
    if (!this.isLoggedIn()) {
        listener = new XMPPListener(this);
        presenceHandler = new XMPPPresenceHandler(this);
        runThread = new Thread() {

            @Override
            public void run() {
                String userName = generateUsername(registration.getUsername());
                conn = new XMPPConnection(config);
                try {
                    conn.getSASLAuthentication().registerSASLMechanism("DIGEST-MD5", MySASLDigestMD5Mechanism.class);
                    if (getTransport().getType().equals(TransportType.facebook) && registration.getUsername().equals("{PLATFORM}")) {
                        conn.getSASLAuthentication().registerSASLMechanism("X-FACEBOOK-PLATFORM", FacebookConnectSASLMechanism.class);
                        conn.getSASLAuthentication().supportSASLMechanism("X-FACEBOOK-PLATFORM", 0);
                    }
                    Roster.setDefaultSubscriptionMode(SubscriptionMode.manual);
                    conn.connect();
                    conn.addConnectionListener(listener);
                    try {
                        conn.addPacketListener(presenceHandler, new PacketTypeFilter(org.jivesoftware.smack.packet.Presence.class));
                        // Use this to filter out anything we don't care about
                        conn.addPacketListener(listener, new OrFilter(new PacketTypeFilter(GoogleMailBoxPacket.class), new PacketExtensionFilter(GoogleNewMailExtension.ELEMENT_NAME, GoogleNewMailExtension.NAMESPACE)));
                        conn.login(userName, registration.getPassword(), xmppResource);
                        // send initial presence.
                        conn.sendPacket(presence);
                        conn.getChatManager().addChatListener(listener);
                        conn.getRoster().addRosterListener(listener);
                        if (JiveGlobals.getBooleanProperty("plugin.gateway." + getTransport().getType() + ".avatars", !TransportType.facebook.equals(getTransport().getType())) && getAvatar() != null) {
                            new Thread() {

                                @Override
                                public void run() {
                                    Avatar avatar = getAvatar();
                                    VCard vCard = new VCard();
                                    try {
                                        vCard.load(conn);
                                        vCard.setAvatar(Base64.decode(avatar.getImageData()), avatar.getMimeType());
                                        vCard.save(conn);
                                    } catch (XMPPException e) {
                                        Log.debug("XMPP: Error while updating vcard for avatar change.", e);
                                    } catch (NotFoundException e) {
                                        Log.debug("XMPP: Unable to find avatar while setting initial.", e);
                                    }
                                }
                            }.start();
                        }
                        setLoginStatus(TransportLoginStatus.LOGGED_IN);
                        syncUsers();
                        if (getTransport().getType().equals(TransportType.gtalk) && JiveGlobals.getBooleanProperty("plugin.gateway.gtalk.mailnotifications", true)) {
                            conn.sendPacket(new IQWithPacketExtension(generateFullJID(getRegistration().getUsername()), new GoogleUserSettingExtension(null, true, null), IQ.Type.SET));
                            conn.sendPacket(new IQWithPacketExtension(generateFullJID(getRegistration().getUsername()), new GoogleMailNotifyExtension()));
                            mailCheck = new MailCheck();
                            timer.schedule(mailCheck, timerInterval, timerInterval);
                        }
                    } catch (XMPPException e) {
                        Log.debug(getTransport().getType() + " user's login/password does not appear to be correct: " + getRegistration().getUsername(), e);
                        setFailureStatus(ConnectionFailureReason.USERNAME_OR_PASSWORD_INCORRECT);
                        sessionDisconnectedNoReconnect(LocaleUtils.getLocalizedString("gateway.xmpp.passwordincorrect", "kraken"));
                    }
                } catch (XMPPException e) {
                    Log.debug(getTransport().getType() + " user is not able to connect: " + getRegistration().getUsername(), e);
                    setFailureStatus(ConnectionFailureReason.CAN_NOT_CONNECT);
                    sessionDisconnected(LocaleUtils.getLocalizedString("gateway.xmpp.connectionfailed", "kraken"));
                }
            }
        };
        runThread.start();
    }
}
Also used : FacebookConnectSASLMechanism(net.sf.kraken.protocols.xmpp.mechanisms.FacebookConnectSASLMechanism) NotFoundException(org.jivesoftware.util.NotFoundException) UserNotFoundException(org.jivesoftware.openfire.user.UserNotFoundException) GoogleMailBoxPacket(net.sf.kraken.protocols.xmpp.packet.GoogleMailBoxPacket) VCardUpdateExtension(net.sf.kraken.protocols.xmpp.packet.VCardUpdateExtension) Presence(org.jivesoftware.smack.packet.Presence) VCard(org.jivesoftware.smackx.packet.VCard) GoogleUserSettingExtension(net.sf.kraken.protocols.xmpp.packet.GoogleUserSettingExtension) MySASLDigestMD5Mechanism(net.sf.kraken.protocols.xmpp.mechanisms.MySASLDigestMD5Mechanism) GoogleMailNotifyExtension(net.sf.kraken.protocols.xmpp.packet.GoogleMailNotifyExtension) Presence(org.jivesoftware.smack.packet.Presence) org.jivesoftware.smack(org.jivesoftware.smack) IQWithPacketExtension(net.sf.kraken.protocols.xmpp.packet.IQWithPacketExtension) PacketTypeFilter(org.jivesoftware.smack.filter.PacketTypeFilter) OrFilter(org.jivesoftware.smack.filter.OrFilter) Avatar(net.sf.kraken.avatars.Avatar) PacketExtensionFilter(org.jivesoftware.smack.filter.PacketExtensionFilter)

Aggregations

Avatar (net.sf.kraken.avatars.Avatar)8 NotFoundException (org.jivesoftware.util.NotFoundException)7 MessageDigest (java.security.MessageDigest)3 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)3 UserNotFoundException (org.jivesoftware.openfire.user.UserNotFoundException)3 IOException (java.io.IOException)2 DisplayPictureListener (net.sf.jml.DisplayPictureListener)2 MsnMessenger (net.sf.jml.MsnMessenger)2 VCardUpdateExtension (net.sf.kraken.protocols.xmpp.packet.VCardUpdateExtension)2 org.jivesoftware.smack (org.jivesoftware.smack)2 Presence (org.jivesoftware.smack.packet.Presence)2 VCard (org.jivesoftware.smackx.packet.VCard)2 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 List (java.util.List)1 ByteBlock (net.kano.joscar.ByteBlock)1 SnacCommand (net.kano.joscar.flapcmd.SnacCommand)1 SnacRequestAdapter (net.kano.joscar.snac.SnacRequestAdapter)1 SnacRequestTimeoutEvent (net.kano.joscar.snac.SnacRequestTimeoutEvent)1 SnacResponseEvent (net.kano.joscar.snac.SnacResponseEvent)1 ExtraInfoBlock (net.kano.joscar.snaccmd.ExtraInfoBlock)1