使用 ejabberd 攻击 UserSearchManager
smack UserSearchManager with ejabberd
我正在尝试使用 ejabberd (15.11) 和 smack (4.1.5) 在 android 上建立聊天。
在发送订阅节之前,我想通过检查 jid 是否已在使用来检查此用户是否存在于我的服务器上:
UserSearchManager userSearchManager = new UserSearchManager(connection);
Form searchForm = userSearchManager.getSearchForm("vjud." + connection.getServiceName());
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("user", userName + "@" + connection.getServiceName());
ReportedData data = userSearchManager.getSearchResults(answerForm, "vjud." + connection.getServiceName());
我从我的服务器获得了多列,但没有行 - 意味着没有数据。
不管我只取 userName 还是 Jid。
除了用密码注册用户外,我什么也没做,所以没有设置名字或类似的东西。
谁能告诉我哪里做错了,或者哪里是查找设置的 Answer 参数的最佳位置?我搜索了很多但找不到任何帮助。
Jabber 用户目录基于 Vcard。没有 Vcard 的用户将无法通过用户目录进行搜索。这意味着确实,注册用户不足以使其出现在 Jabber 搜索目录中。
我正在尝试使用 ejabberd (15.11) 和 smack (4.1.5) 在 android 上建立聊天。
在发送订阅节之前,我想通过检查 jid 是否已在使用来检查此用户是否存在于我的服务器上:
UserSearchManager userSearchManager = new UserSearchManager(connection);
Form searchForm = userSearchManager.getSearchForm("vjud." + connection.getServiceName());
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("user", userName + "@" + connection.getServiceName());
ReportedData data = userSearchManager.getSearchResults(answerForm, "vjud." + connection.getServiceName());
我从我的服务器获得了多列,但没有行 - 意味着没有数据。 不管我只取 userName 还是 Jid。
除了用密码注册用户外,我什么也没做,所以没有设置名字或类似的东西。
谁能告诉我哪里做错了,或者哪里是查找设置的 Answer 参数的最佳位置?我搜索了很多但找不到任何帮助。
Jabber 用户目录基于 Vcard。没有 Vcard 的用户将无法通过用户目录进行搜索。这意味着确实,注册用户不足以使其出现在 Jabber 搜索目录中。