org.jivesoftware.smack.filter.PacketTypeFilter Java Examples

The following examples show how to use org.jivesoftware.smack.filter.PacketTypeFilter. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ClientManagerImpl.java    From olat with Apache License 2.0 6 votes vote down vote up
/**
 * @param username
 */
@Override
public void addMessageListener(final String username) {
    final PacketListener packetListener = new PacketListener() {
        @Override
        public void processPacket(final Packet packet) {
            final Message jabbmessage = (Message) packet;
            // TODO:gs:b see issue: http://bugs.olat.org/jira/browse/OLAT-2966
            // filter <script> msg. out - security risk of cross site scripting!
            // or may user ext.util.strip script tag method on client side
            jabbmessage.setProperty("receiveTime", new Long(new Date().getTime()));
            final GenericEventListener listener = listeners.get(username);
            if (listener != null) {
                listener.event(new InstantMessagingEvent(packet, "message"));
                if (log.isDebugEnabled()) {
                    log.debug("routing message event to controller of: " + packet.getTo());
                }
            } else {
                log.warn("could not find listener for IM message for username: " + username, null);
            }
        }
    };
    getInstantMessagingClient(username).getConnection().addPacketListener(packetListener, new PacketTypeFilter(Message.class));
}
 
Example #2
Source File: ClientManagerImpl.java    From olat with Apache License 2.0 6 votes vote down vote up
/**
 * @param username
 */
@Override
public void addMessageListener(final String username) {
    final PacketListener packetListener = new PacketListener() {
        @Override
        public void processPacket(final Packet packet) {
            final Message jabbmessage = (Message) packet;
            // TODO:gs:b see issue: http://bugs.olat.org/jira/browse/OLAT-2966
            // filter <script> msg. out - security risk of cross site scripting!
            // or may user ext.util.strip script tag method on client side
            jabbmessage.setProperty("receiveTime", new Long(new Date().getTime()));
            final GenericEventListener listener = listeners.get(username);
            if (listener != null) {
                listener.event(new InstantMessagingEvent(packet, "message"));
                if (log.isDebugEnabled()) {
                    log.debug("routing message event to controller of: " + packet.getTo());
                }
            } else {
                log.warn("could not find listener for IM message for username: " + username, null);
            }
        }
    };
    getInstantMessagingClient(username).getConnection().addPacketListener(packetListener, new PacketTypeFilter(Message.class));
}
 
Example #3
Source File: ClientManagerImpl.java    From olat with Apache License 2.0 6 votes vote down vote up
/**
 * @param username
 */
@Override
public void addPresenceListener(final String username) {
    final PacketListener packetListener = new PacketListener() {
        @Override
        public void processPacket(final Packet packet) {
            try {
                final GenericEventListener listener = listeners.get(username);
                if (listener == null) {
                    log.warn("could not route presence event as presence listener is null for user: " + username, null);
                } else {
                    listener.event(new InstantMessagingEvent(packet, "presence"));
                    final Presence presence = (Presence) packet;
                    if (log.isDebugEnabled()) {
                        log.debug("routing presence event to controller of: " + presence.getTo());
                    }
                }
            } catch (final Throwable th) {
                log.warn("Presence package", th);
            }
        }
    };
    getInstantMessagingClient(username).getConnection().addPacketListener(packetListener, new PacketTypeFilter(Presence.class));
}
 
Example #4
Source File: AccountManager.java    From AndroidPNClient with Apache License 2.0 6 votes vote down vote up
/**
 * Changes the password of the currently logged-in account. This operation can only
 * be performed after a successful login operation has been completed. Not all servers
 * support changing passwords; an XMPPException will be thrown when that is the case.
 *
 * @throws IllegalStateException if not currently logged-in to the server.
 * @throws org.jivesoftware.smack.XMPPException if an error occurs when changing the password.
 */
public void changePassword(String newPassword) throws XMPPException {
    Registration reg = new Registration();
    reg.setType(IQ.Type.SET);
    reg.setTo(connection.getServiceName());
    reg.setUsername(StringUtils.parseName(connection.getUser()));
    reg.setPassword(newPassword);
    PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()),
            new PacketTypeFilter(IQ.class));
    PacketCollector collector = connection.createPacketCollector(filter);
    connection.sendPacket(reg);
    IQ result = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (result == null) {
        throw new XMPPException("No response from server.");
    }
    else if (result.getType() == IQ.Type.ERROR) {
        throw new XMPPException(result.getError());
    }
}
 
Example #5
Source File: AccountManager.java    From AndroidPNClient with Apache License 2.0 6 votes vote down vote up
/**
 * Deletes the currently logged-in account from the server. This operation can only
 * be performed after a successful login operation has been completed. Not all servers
 * support deleting accounts; an XMPPException will be thrown when that is the case.
 *
 * @throws IllegalStateException if not currently logged-in to the server.
 * @throws org.jivesoftware.smack.XMPPException if an error occurs when deleting the account.
 */
public void deleteAccount() throws XMPPException {
    if (!connection.isAuthenticated()) {
        throw new IllegalStateException("Must be logged in to delete a account.");
    }
    Registration reg = new Registration();
    reg.setType(IQ.Type.SET);
    reg.setTo(connection.getServiceName());
    // To delete an account, we set remove to true
    reg.setRemove(true);
    PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()),
            new PacketTypeFilter(IQ.class));
    PacketCollector collector = connection.createPacketCollector(filter);
    connection.sendPacket(reg);
    IQ result = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (result == null) {
        throw new XMPPException("No response from server.");
    }
    else if (result.getType() == IQ.Type.ERROR) {
        throw new XMPPException(result.getError());
    }
}
 
Example #6
Source File: AccountManager.java    From AndroidPNClient with Apache License 2.0 6 votes vote down vote up
/**
 * Gets the account registration info from the server.
 *
 * @throws org.jivesoftware.smack.XMPPException if an error occurs.
 */
private synchronized void getRegistrationInfo() throws XMPPException {
    Registration reg = new Registration();
    reg.setTo(connection.getServiceName());
    PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()),
            new PacketTypeFilter(IQ.class));
    PacketCollector collector = connection.createPacketCollector(filter);
    connection.sendPacket(reg);
    IQ result = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (result == null) {
        throw new XMPPException("No response from server.");
    }
    else if (result.getType() == IQ.Type.ERROR) {
        throw new XMPPException(result.getError());
    }
    else {
        info = (Registration)result;
    }
}
 
Example #7
Source File: SmackGcmSenderChannel.java    From arcusplatform with Apache License 2.0 5 votes vote down vote up
/**
 * Connects to GCM Cloud Connection Server using the supplied credentials.
 *
 * @param senderId
 *            Your GCM project number
 * @param apiKey
 *            API Key of your project
 */
protected void connect(long senderId, String apiKey, int keepAliveInterval) throws XMPPException, IOException, SmackException {

    // Configure connection
    ConnectionConfiguration config = new ConnectionConfiguration(GcmServiceConstants.GCM_SERVER, GcmServiceConstants.GCM_PORT);
    config.setSecurityMode(SecurityMode.enabled);
    config.setReconnectionAllowed(true);
    config.setRosterLoadedAtLogin(false);
    config.setSendPresence(false);
    config.setSocketFactory(SSLSocketFactory.getDefault());

    // Create connection object and initiate connection
    connection = new XMPPTCPConnection(config);
    pingManager = PingManager.getInstanceFor(connection);
    pingManager.setPingInterval(keepAliveInterval);
    pingManager.registerPingFailedListener(this);
    connection.connect();

    // Register listener to log connection state events
    connection.addConnectionListener(new SmackLoggingConnectionListener());

    // Handle incoming messages (delivery receipts and Google control messages)
    connection.addPacketListener(upstreamListener, new PacketTypeFilter(Message.class));

    // Log in...
    connection.login(senderId + "@" + GcmServiceConstants.GCM_SERVER, apiKey);
}
 
Example #8
Source File: XmppManager.java    From weixin with Apache License 2.0 5 votes vote down vote up
/**
 * 注册
 * 
 * @param account 注册帐号
 * @param password 注册密码
 * @return 0、 服务器没有返回结果<br>
 *         1、注册成功 <br>
 *         2、这个帐号已经存在 <br>
 *         3、注册失败
 */
public String regist(String account, String password) {
	if (!isConnected()) {
		return "0";
	}
	Registration reg = new Registration();
	reg.setType(IQ.Type.SET);
	reg.setTo(getConnection().getServiceName());
	reg.setUsername(account);
	reg.setPassword(password);
	reg.addAttribute("android", "geolo_createUser_android");

	//数据包过滤器
	PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()), new PacketTypeFilter(IQ.class));
	PacketCollector collector = getConnection().createPacketCollector(filter);
	getConnection().sendPacket(reg);

	IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
	//停止请求result(是否成功的结果)
	collector.cancel();
	if (result == null) {
		L.e(LOGTAG, "No response from server.");
		return "0";
	} else if (result.getType() == IQ.Type.RESULT) {
		return "1";
	} else {
		if (result.getError().toString().equalsIgnoreCase("conflict(409)")) {
			L.e(LOGTAG, "IQ.Type.ERROR: " + result.getError().toString());
			return "2";
		} else {
			L.e(LOGTAG, "IQ.Type.ERROR: " + result.getError().toString());
			return "3";
		}
	}
}
 
Example #9
Source File: XmppConnection.java    From weixin with Apache License 2.0 5 votes vote down vote up
/**
 * 注册
 * 
 * @param account 注册帐号
 * @param password 注册密码
 * @return 1、注册成功 0、服务器没有返回结果2、这个账号已经存在3、注册失败
 */
public String regist(String account, String password) {
	if (getConnection() == null)
		return "0";
	Registration reg = new Registration();
	reg.setType(IQ.Type.SET);
	reg.setTo(getConnection().getServiceName());
	// 注意这里createAccount注册时,参数是UserName,不是jid,是"@"前面的部分。
	reg.setUsername(account);
	reg.setPassword(password);
	// 这边addAttribute不能为空,否则出错。所以做个标志是android手机创建的吧!!!!!
	reg.addAttribute("android", "geolo_createUser_android");
	PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()), new PacketTypeFilter(IQ.class));
	PacketCollector collector = getConnection().createPacketCollector(filter);
	getConnection().sendPacket(reg);
	IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
	// Stop queuing results停止请求results(是否成功的结果)
	collector.cancel();
	if (result == null) {
		Log.e("regist", "No response from server.");
		return "0";
	} else if (result.getType() == IQ.Type.RESULT) {
		Log.v("regist", "regist success.");
		return "1";
	} else { // if (result.getType() == IQ.Type.ERROR)
		if (result.getError().toString().equalsIgnoreCase("conflict(409)")) {
			Log.e("regist", "IQ.Type.ERROR: " + result.getError().toString());
			return "2";
		} else {
			Log.e("regist", "IQ.Type.ERROR: " + result.getError().toString());
			return "3";
		}
	}
}
 
Example #10
Source File: ClientManagerImpl.java    From olat with Apache License 2.0 5 votes vote down vote up
/**
 * @param username
 */
@Override
public void addPresenceListener(final String username) {
    final PacketListener packetListener = new PacketListener() {
        @Override
        public void processPacket(final Packet packet) {
            try {
                final GenericEventListener listener = listeners.get(username);
                if (listener == null) {
                    log.warn("could not route presence event as presence listener is null for user: " + username, null);
                } else {
                    listener.event(new InstantMessagingEvent(packet, "presence"));
                    final Presence presence = (Presence) packet;
                    if (log.isDebugEnabled()) {
                        log.debug("routing presence event to controller of: " + presence.getTo());
                    }
                }
            } catch (final Throwable th) {
                log.warn("Presence package", th);
            }
        }
    };
    getInstantMessagingClient(username).getConnection().addPacketListener(packetListener, new PacketTypeFilter(Presence.class));
}
 
Example #11
Source File: AccountManager.java    From AndroidPNClient with Apache License 2.0 5 votes vote down vote up
/**
 * Creates a new account using the specified username, password and account attributes.
 * The attributes Map must contain only String name/value pairs and must also have values
 * for all required attributes.
 *
 * @param username the username.
 * @param password the password.
 * @param attributes the account attributes.
 * @throws org.jivesoftware.smack.XMPPException if an error occurs creating the account.
 * @see #getAccountAttributes()
 */
public void createAccount(String username, String password, Map<String, String> attributes)
        throws XMPPException
{
    if (!supportsAccountCreation()) {
        throw new XMPPException("Server does not support account creation.");
    }
    Registration reg = new Registration();
    reg.setType(IQ.Type.SET);
    reg.setTo(connection.getServiceName());
    reg.setUsername(username);
    reg.setPassword(password);
    for(String s : attributes.keySet()){
    	reg.addAttribute(s, attributes.get(s));
    }
    PacketFilter filter = new AndFilter(new PacketIDFilter(reg.getPacketID()),
            new PacketTypeFilter(IQ.class));
    PacketCollector collector = connection.createPacketCollector(filter);
    connection.sendPacket(reg);
    IQ result = (IQ)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (result == null) {
        throw new XMPPException("No response from server.");
    }
    else if (result.getType() == IQ.Type.ERROR) {
        throw new XMPPException(result.getError());
    }
}
 
Example #12
Source File: XmppConnectReceiver.java    From AndroidPNClient with Apache License 2.0 5 votes vote down vote up
public boolean register(String user, String pass) {
    Log.i(LOG_TAG, "RegisterTask.run()...");

    if (xmppManager.isRegistered()) {
        Log.i(LOG_TAG, "Account registered already");
        return true;
    }

    final Registration registration = new Registration();

    PacketFilter packetFilter = new AndFilter(new PacketIDFilter(
            registration.getPacketID()), new PacketTypeFilter(
            IQ.class));

    PacketCollector collector = xmppManager.getConnection().createPacketCollector(packetFilter);
    registration.setType(IQ.Type.SET);
    registration.addAttribute("username", user);
    registration.addAttribute("password", pass);
    if (xmppManager.getConnection().isConnected()) {
        xmppManager.getConnection().sendPacket(registration);
        IQ result = (IQ) collector.nextResult(REGISTER_TIME_OUT);
        collector.cancel();
        if(result == null) {
            Log.d(LOG_TAG, "The server didn't return result after 60 seconds.");
            return false;
        } else if (result.getType() == IQ.Type.ERROR) {
            if(result.getError().toString().contains("409")) {
                return true;
            } else {
                return false;
            }
        } else if (result.getType() == IQ.Type.RESULT) {
            return true;
        }
        return false;
    } else {
        Log.d(LOG_TAG, "connection is not connected");
        return false;
    }
}
 
Example #13
Source File: XmppManager.java    From android-demo-xmpp-androidpn with Apache License 2.0 4 votes vote down vote up
public void run() {
    Log.i(LOGTAG, "RegisterTask.run()...");

    if (!xmppManager.isRegistered()) {
        final String newUsername = newRandomUUID();
        final String newPassword = newRandomUUID();
        //客户端发送到服务器注册的数据包,Packet的子类
        Registration registration = new Registration();

        /**
         * 数据包的ID和类型的过滤器
         */
        PacketFilter packetFilter = new AndFilter(new PacketIDFilter(
                registration.getPacketID()), new PacketTypeFilter(
                IQ.class));
        /**
         * 数据包的监听
         */
        PacketListener packetListener = new PacketListener() {

            public void processPacket(Packet packet) {
                Log.d("RegisterTask.PacketListener",
                        "processPacket().....");
                Log.d("RegisterTask.PacketListener", "packet="
                        + packet.toXML());
                //服务器回复客户端
                if (packet instanceof IQ) {
                    IQ response = (IQ) packet;
                    if (response.getType() == IQ.Type.ERROR) {		//注册失败
                        if (!response.getError().toString().contains(
                                "409")) {
                            Log.e(LOGTAG,
                                    "Unknown error while registering XMPP account! "
                                            + response.getError()
                                                    .getCondition());
                        }
                    } else if (response.getType() == IQ.Type.RESULT) {  //注册成功
                        xmppManager.setUsername(newUsername);
                        xmppManager.setPassword(newPassword);
                        Log.d(LOGTAG, "username=" + newUsername);
                        Log.d(LOGTAG, "password=" + newPassword);
                        //把用户名和密码保存到共享引用
                        Editor editor = sharedPrefs.edit();
                        editor.putString(Constants.XMPP_USERNAME,
                                newUsername);
                        editor.putString(Constants.XMPP_PASSWORD,
                                newPassword);
                        editor.commit();
                        Log.i(LOGTAG,
                        		"Account registered successfully");
                        xmppManager.runTask();
                    }
                }
            }
        };
        // 给注册的Packet设置Listener,因为只有等到正真注册成功后,我们才可以交流  
        connection.addPacketListener(packetListener, packetFilter);

        registration.setType(IQ.Type.SET);
        // registration.setTo(xmppHost);
        // Map<String, String> attributes = new HashMap<String, String>();
        // attributes.put("username", rUsername);
        // attributes.put("password", rPassword);
        // registration.setAttributes(attributes);
        registration.addAttribute("username", newUsername);
        registration.addAttribute("password", newPassword);
        
        registration.addAttribute("imsi", "460000001232300");
        registration.addAttribute("imei", "324234343434434");
        
        // 向服务器端,发送注册Packet包,注意其中Registration是Packet的子类 
        connection.sendPacket(registration);

    } else {
        Log.i(LOGTAG, "Account registered already");
        xmppManager.runTask();
    }
}
 
Example #14
Source File: ThrottleTestReader.java    From Openfire with Apache License 2.0 4 votes vote down vote up
/**
 * Starts the throttle test reader client.
 *
 * @param args application arguments.
 */
public static void main(String [] args) {
    if (args.length != 3) {
        System.out.println("Usage: java ThrottleTestReader [server] [username] [password]");
        System.exit(0);
    }
    String server = args[0];
    String username = args[1];
    String password = args[2];
    try {
        // Connect to the server, without TLS encryption.
        ConnectionConfiguration config = new ConnectionConfiguration(server);
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        final XMPPConnection con = new XMPPConnection(config);
        System.out.print("Connecting to " + server + "... ");
        con.connect();

        con.login(username, password, "reader");
        System.out.print("success.");
        System.out.println("");

        // Get the "real" server address.
        server = con.getServiceName();

        final String writerAddress = username + "@" + server + "/writer";
        String readerAddress = username + "@" + server + "/reader";

        System.out.println("Registered as " + readerAddress);

        // Look for the reader process.
        System.out.print("Waiting for " + writerAddress + "...");
        PacketCollector collector = con.createPacketCollector(new AndFilter(
                new FromMatchesFilter(writerAddress), new PacketTypeFilter(Time.class)));
        Time timeRequest = (Time)collector.nextResult();
        Time timeReply = new Time(Calendar.getInstance());
        timeReply.setPacketID(timeRequest.getPacketID());
        timeReply.setType(IQ.Type.RESULT);
        timeReply.setTo(timeRequest.getFrom());
        con.sendPacket(timeReply);
        System.out.println(" found writer. Now in reading mode.");

        // Track how many packets we've read.
        con.addPacketListener(new PacketListener() {

            public void processPacket(Packet packet) {
                packetCount.getAndIncrement();
            }
        }, new PacketTypeFilter(Message.class));

        while (!done) {
            Thread.sleep(5000);
            int count = packetCount.getAndSet(0);
            System.out.println("Packets per second: " + (count/5));
        }

        // Sleep while we're reading packets.
        Thread.sleep(Integer.MAX_VALUE);
    }
    catch (Exception e) {
        System.out.println("\nError: " + e.getMessage());
    }
}
 
Example #15
Source File: MPAuthenticationProvider.java    From carbon-identity with Apache License 2.0 4 votes vote down vote up
/**
 * Read the PIN number sent by the user as the reply.
 *
 * @param connection
 * @param userName
 * @return
 */
public boolean getUserResponse(XMPPConnection connection, String userName) {

    String response = null;
    Presence presence = connection.getRoster().getPresence(userName);

    if (presence.isAvailable()) {
        try {

            ChatManager chatManager = connection.getChatManager();
            Chat chat = chatManager.createChat(userName, null);
            PacketFilter filter =
                    new AndFilter(new PacketTypeFilter(Message.class), new FromContainsFilter(userName));
            XmppResponseListener chatListener = new XmppResponseListener();
            connection.addPacketListener(chatListener, filter);

            if (isPINEnabled) {

                chat.sendMessage("Please reply with your PIN Number here.");

                if (log.isInfoEnabled()) {
                    log.info("User PIN is sent to the user and awaiting for the response.");
                }

                while (!chatListener.isResponseReceived()) {
                    Thread.sleep(100);
                }

                response = chatListener.getResponse();

                if (response != null) {
                    return userPIN.contentEquals(response.trim());
                }
            } else {
                chat.sendMessage(
                        "You are about to get authenticated for your OpenID. Do you want to continue: [Yes] or [No]");

                if (log.isInfoEnabled()) {
                    log.info("User PIN is sent to the user and awaiting for the response.");
                }

                while (!chatListener.isResponseReceived()) {
                    Thread.sleep(100);
                }

                response = chatListener.getResponse();

                if (response != null) {
                    if ("YES".equalsIgnoreCase(response.trim())) {
                        return true;
                    } else if ("NO".equalsIgnoreCase(response.trim())) {
                        return false;
                    } else {
                        pinDisabledResponse = false;
                        return false;
                    }
                }
            }

        } catch (Exception e) {
            log.error("Error while getting user response", e);
        }
    } else {
        return false;
    }
    return false;

}
 
Example #16
Source File: XmppManager.java    From androidpn-client with Apache License 2.0 4 votes vote down vote up
public void run() {
    Log.i(LOGTAG, "RegisterTask.run()...");

    if (!xmppManager.isRegistered()) {
        newUsername = username;
        if (username.isEmpty()){ newUsername = newRandomUUID(); }
        newPassword = password;
        if (password.isEmpty()) { newPassword = newRandomUUID(); }

        Registration registration = new Registration();

        PacketFilter packetFilter = new AndFilter(new PacketIDFilter(
                registration.getPacketID()), new PacketTypeFilter(
                IQ.class));

        PacketListener packetListener = new PacketListener() {

            public void processPacket(Packet packet) {
                Log.d("RegisterTask.PcktLstnr",
                        "processPacket().....");
                Log.d("RegisterTask.PcktLstnr", "packet="
                        + packet.toXML());

                if (packet instanceof IQ) {
                    IQ response = (IQ) packet;
                    if (response.getType() == IQ.Type.ERROR) {
                        if (!response.getError().toString().contains(
                                "409")) {
                            Log.e(LOGTAG,
                                    "Unknown error while registering XMPP account! "
                                            + response.getError()
                                                    .getCondition());
                        }
                    } else if (response.getType() == IQ.Type.RESULT) {
                        xmppManager.setUsername(newUsername);
                        xmppManager.setPassword(newPassword);
                        Log.d(LOGTAG, "username=" + newUsername);
                        Log.d(LOGTAG, "password=" + newPassword);

                        Editor editor = sharedPrefs.edit();
                        editor.putString(Constants.XMPP_REGISTERED, "true");
                        editor.remove(Constants.XMPP_USERNAME);
                        editor.remove(Constants.XMPP_PASSWORD);
                        editor.putString(Constants.XMPP_USERNAME,
                                newUsername);
                        editor.putString(Constants.XMPP_PASSWORD,
                                newPassword);
                        editor.apply();
                        Log
                                .i(LOGTAG,
                                        "Account registered successfully");
                        xmppManager.runTask();
                    }
                }
            }
        };

        connection.addPacketListener(packetListener, packetFilter);

        registration.setType(IQ.Type.SET);
        registration.setTo(xmppHost);
        Map<String, String> attributes = new HashMap<String, String>();
        attributes.put("username", newUsername);
        attributes.put("password", newPassword);
        if (!email.isEmpty()) {
            attributes.put("email", email);
        }
        if (!name.isEmpty()) {
            attributes.put("name", name);
        }
        registration.setAttributes(attributes);
        //registration.setAttributes();

        //registration.addAttribute("username", newUsername);
        //registration.addAttribute("password", newPassword);
        connection.sendPacket(registration);

    } else {
        Log.i(LOGTAG, "Account registered already");
        xmppManager.runTask();
    }
}
 
Example #17
Source File: XSCHelper.java    From PracticeCode with Apache License 2.0 4 votes vote down vote up
/**
 * 注册。网络操作不可以在主线程中进行。多线程无法等待return,所以必须使用Handler
 *
 * @param account  登陆账户
 * @param password 登录密码
 * @param handler  处理信息的Handler
 */
public void regist(final String account, final String password, final Handler handler) {
    new Thread(){
        @Override
        public void run() {
            //如果无法连接服务器,Handle Error
            if (getConnection() == null) {
                Log.e("------->", "ERROR");
                handler.sendEmptyMessage(ERROR);
                return;
            }

            //如果已经是登录状态,Handle Failure
            if (getConnection().isAuthenticated()) {
                Log.e("------->", "hasAuthenticated");
                handler.sendEmptyMessage(FAILURE);
                return;
            }

            //如果状态正常则配置注册信息
            Registration reg = new Registration();
            reg.setType(IQ.Type.SET);
            reg.setTo(getConnection().getServiceName());
            reg.setUsername(account);
            reg.setPassword(password);
            reg.addAttribute("H-S-A-2015", "ThronBird");

            //配置Filter过滤器,注明包ID信息
            PacketFilter filter = new AndFilter(
                    new PacketIDFilter(reg.getPacketID()),
                    new PacketTypeFilter(IQ.class));

            //用Filter过滤器配置Collector接受器以便接受信息,并发送封包
            PacketCollector collector =
                    getConnection().createPacketCollector(filter);
            getConnection().sendPacket(reg);

            //等待信息,注明超时时间
            IQ result = (IQ) collector.nextResult(
                    SmackConfiguration.getPacketReplyTimeout());

            //接收到信息就可以取消掉Collector了,处理接受的信息
            collector.cancel();
            if(result == null) {
                handler.sendEmptyMessage(ERROR);
                return;
            }

            if(result.getType() == IQ.Type.RESULT) {
                handler.sendEmptyMessage(SUCCESS);
                return;
            }

            //以上是超时或者成功的情况,一下是失败的情况(已有/失败)
            if(result.getError().toString().equalsIgnoreCase("conflict(409)")) {
                handler.sendEmptyMessage(EXIST);
                return;
            }

            handler.sendEmptyMessage(FAILURE);

        }
    }.run();
}
 
Example #18
Source File: NoOp.java    From jmeter-bzm-plugins with Apache License 2.0 4 votes vote down vote up
@Override
public PacketFilter getPacketFilter() {
    return new OrFilter(PacketTypeFilter.MESSAGE, PacketTypeFilter.PRESENCE, new PacketTypeFilter(IQ.class));
}
 
Example #19
Source File: SubscriptionHandler.java    From saros with GNU General Public License v2.0 3 votes vote down vote up
private synchronized void prepareConnection(Connection connection) {

    disposeConnection();

    this.connection = connection;
    connection.addPacketListener(packetListener, new PacketTypeFilter(Presence.class));
  }