⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectorthread.java

📁 JBother是纯Java开发的Jabber(即时消息开源软件)客户端。支持群组聊天
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            connectCount = 0;            if( result == JOptionPane.YES_OPTION )            {                run();                return;            }            cancelled = true;            return;        }        if (password == null) {            PasswordDialog dialog = new PasswordDialog(BuddyList.getInstance().getContainerFrame(),resources                    .getString("jabberPassword"));            password = dialog.getText();        }        if (gnupgSecretKey != null && !JBotherLoader.isGPGEnabled()) {            int result = JOptionPane                    .showConfirmDialog(                            null,                            "Warning: There is a GnuPG secrety key ID in your profile,\nbut it appears as though GnuPG is not installed on this system.\nWould you still like to connect to the server?",                            "GnuPG", JOptionPane.YES_NO_OPTION);            if (result != JOptionPane.YES_OPTION) {                BuddyList.getInstance().getStatusMenu()                        .stopBlinkTimer();                BuddyList.getInstance().init(null);                return;            }        }        else if ((gnupgSecretKey != null && JBotherLoader.isGPGEnabled())                && (BuddyList.getInstance().getGnuPGPassword() == null)) {            GnuPG gnupg = new GnuPG();            while (true) {                PasswordDialog dialog = new PasswordDialog(BuddyList.getInstance().getContainerFrame(),resources                        .getString("gnupgKeyPassword"));                gnupgTempPass = dialog.getText();                if ((gnupgTempPass != null)                        && (gnupg.sign("1", gnupgSecretKey, gnupgTempPass))) {                    BuddyList.getInstance().setGnuPGPassword(gnupgTempPass);                    break;                } else {                    BuddyList.getInstance().getStatusMenu()                            .stopBlinkTimer();                    Standard                            .warningMessage(null, "GnuPG Error",                                    "Wrong GnuPG passphrase! Please, try connecting again.");                    BuddyList.getInstance().init(null);                    BuddyList.getInstance().setGnuPGPassword(null);                    return;                }            }        }        if (cancelled) {            BuddyList.getInstance().getStatusMenu()                    .stopBlinkTimer();            cancelled = false;            connectCount = 0;            return;        }        try {            XMPPConnection.DEBUG_ENABLED = true;            if (com.valhalla.settings.Arguments.getInstance().getProperty("smackdebug") != null) {            }else {                System.setProperty("smack.debuggerClass", "com.valhalla.jbother.jabber.Debugger");            }            int port = this.port;            if (port == 0 && ssl) {                port = 5223;            } else if (port == 0 && !ssl) {                port = 5222;            }            connection = null;            // for google talk            if(server.toLowerCase().equals("talk.google.com")){                port = 5222;                String service = "gmail.com";                int b = 0;                if( ( b = username.indexOf("@") ) != -1){                    service = username.substring(b);                    username = username.substring(0, b);                }                ssl = false;                connection = new XMPPConnection(server, port, "gmail.com");            }else if(proxy){                connection = new XMPPConnection(server, port, server, new ProxySocketFactory(proxyhost, proxyport));            }else if (ssl){                connection = new SSLXMPPConnection(server, port);            }else{                connection = new XMPPConnection(server, port);            }            BuddyList.getInstance().init(connection);            BuddyList.getInstance().clearTree();        }catch(Exception ex){            errorMessage = ex.getMessage();        }        if(cancelled){            BuddyList.getInstance().getStatusMenu().stopBlinkTimer();            cancelled = false;            return;        }        // get the resource from the login box        String tmp = resource;        if (tmp == null || tmp.equals("")) {            tmp = "JBother";        }        final String resource = tmp;        if (errorMessage == null && connection != null) {            PacketFilter anyFilter = new PacketFilter() {                public boolean accept(Packet packet) {                    return true;                }            };            // sets up the various packet listeners            PacketFilter filter = new PacketTypeFilter(Presence.class);            connection.addPacketListener(new PresencePacketListener(), filter);            filter = new PacketTypeFilter(Message.class);            connection.addPacketListener(messageListener, filter);            connection.addConnectionListener(conListener);            filter = new PacketTypeFilter(Version.class);            connection.addPacketListener(new VersionListener(), filter);            filter = new PacketTypeFilter(com.valhalla.jbother.jabber.smack.LastActivity.class);            connection.addPacketListener(new LastActivityListener(), filter);            filter = new PacketTypeFilter(Time.class);            connection.addPacketListener(new TimeListener(), filter);            ft = new FileTransferManager(connection);                        boolean preferIBB = Settings.getInstance().getBoolean("preferIBB");            if(preferIBB) ft.setPreferredType(FileTransferManager.TYPE_IBB);                        ft.setTimeout(300000);                        String[] proxies = DataTransferPreferencesPanel.getProxies();            for(int i = 0; i < proxies.length; i++)            {                ft.addStreamHost(proxies[i]);            }                        ft.addFileReceiveListener(new FTReceiveListener());            exchangeManager = new RosterExchangeManager(connection);            exchangeManager.addRosterListener(new ExchangeListener());            // this filter will listen to three types of messages:            // <si>, <streamhost> and <streamhost-used>            /*filter = new OrFilter(new PacketTypeFilter(Streamhost.class),                    new PacketTypeFilter(StreamhostUsed.class));            OrFilter filter2 = new OrFilter(new PacketTypeFilter(                    StreamInitiation.class), filter);            connection.addPacketListener( new StreamInitiationListener(),             filter2 );*/            // attempts to connect            try {                connection.login(username, password, resource);                //SmackConfiguration.setPacketReplyTimeout(5000);                roster = connection.getRoster();                roster.setSubscriptionMode(                        Roster.SUBSCRIPTION_MANUAL);                roster.addRosterListener( rosterListener );                eventManager = new MessageEventManager(connection);                eventManager                        .addMessageEventNotificationListener(new EventNotificationListener());                eventManager                        .addMessageEventRequestListener(new EventRequestListener());                MultiUserChat.addInvitationListener(connection,                        new InvitationPacketListener());            } catch (XMPPException e) {                errorMessage = e.getMessage();                if (e.getXMPPError() != null) {                    errorMessage = resources.getString("xmppError"                            + e.getXMPPError().getCode());                }            }        }        // if there was an error, display it, and then redisplay a LoginDialog        if (errorMessage != null || connection == null) {            resetCredentials();            SwingUtilities.invokeLater( new Runnable()                {                    public void run()                    {                        BuddyList.getInstance().getStatusMenu()                                .setModeChecked(null);                    }                } );            if (connection != null) {                connection.removeConnectionListener(conListener);            }            if (persistent) {                try {                    Thread.sleep(connectCount*5000);                } catch (InterruptedException ex) {                    com.valhalla.Logger.logException(ex);                }                com.valhalla.Logger.debug("Connection error was: "                        + errorMessage);                errorMessage = null;                if (cancelled) {                    cancelled = false;                    BuddyList.getInstance().getStatusMenu()                            .stopBlinkTimer();                    connectCount = 0;                    return;                }                messageListener.resetQueue();                com.valhalla.Logger.debug( "Retrying, attempt #" + connectCount );                connectCount++;                run();                return;            }            password = Settings.getInstance().getProperty("password");            BuddyList.getInstance().getStatusMenu()                    .stopBlinkTimer();            if (errorMessage == null) {                errorMessage = resources.getString("connectionError");            }            if (errorMessage.equals("Unauthorized")) {                errorMessage = new String(resources                        .getString("invalidPassword"));            }            Standard.warningMessage(null, resources                    .getString("couldNotConnect"), errorMessage);            BuddyList.getInstance().init(null);            return;        }        SwingUtilities.invokeLater( new Runnable() {                public void run()                {                    BuddyList.getInstance().getStatusMenu().stopBlinkTimer();                    BuddyList.getInstance().getBuddiesMenu().logOn();                    // otherwise, set up and display the buddy list                    com.valhalla.Logger.debug("Connected");                    BuddyList.getInstance().resetAwayTimer();                    BuddyList.getInstance().getStatusMenu().setModeChecked(                            connectMode);                    BuddyList.getInstance().initBuddies();                    // display the buddies                    BuddyList.getInstance().setStatus(connectMode, statusString, false);                    messageListener.startTimer();                    if (away) {                        BuddyList.getInstance().getAwayHandler().actionPerformed(                                new ActionEvent(BuddyList.getInstance(), 1, "away"));                    }                }        } );        return;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -