aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/xmpp/s2s/JuickBot.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/juick/xmpp/s2s/JuickBot.java')
-rw-r--r--src/main/java/com/juick/xmpp/s2s/JuickBot.java106
1 files changed, 55 insertions, 51 deletions
diff --git a/src/main/java/com/juick/xmpp/s2s/JuickBot.java b/src/main/java/com/juick/xmpp/s2s/JuickBot.java
index 357b070f..18e7580d 100644
--- a/src/main/java/com/juick/xmpp/s2s/JuickBot.java
+++ b/src/main/java/com/juick/xmpp/s2s/JuickBot.java
@@ -19,6 +19,10 @@ import java.util.regex.Pattern;
* @author ugnich
*/
public class JuickBot {
+ XMPPComponent xmpp;
+ public JuickBot(XMPPComponent xmpp) {
+ this.xmpp = xmpp;
+ }
public static final JID JuickJID = new JID("juick", "juick.com", "Juick");
private static final String HELPTEXT =
@@ -55,7 +59,7 @@ public class JuickBot {
+ "\n"
+ "Read more: http://juick.com/help/";
- public static boolean incomingPresence(Presence p) throws Exception {
+ public boolean incomingPresence(Presence p) throws Exception {
final String username = p.to.Username.toLowerCase();
final boolean toJuick = username.equals("juick");
@@ -64,12 +68,12 @@ public class JuickBot {
reply.from = new JID(p.to.Username, p.to.Host, null);
reply.to = new JID(p.from.Username, p.from.Host, null);
reply.type = Presence.Type.unsubscribe;
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
} else if (p.type.equals(Presence.Type.probe)) {
int uid_to = 0;
if (!toJuick) {
- uid_to = UserQueries.getUIDbyName(XMPPComponent.sql, username);
+ uid_to = UserQueries.getUIDbyName(xmpp.sql, username);
}
if (toJuick || uid_to > 0) {
@@ -78,12 +82,12 @@ public class JuickBot {
reply.from.Resource = "Juick";
reply.to = p.from;
reply.priority = 10;
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
} else {
Presence reply = new Presence(p.to, p.from, Presence.Type.error);
reply.id = p.id;
reply.addChild(new Error(Error.Type.cancel, "item-not-found"));
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
}
return true;
@@ -92,46 +96,46 @@ public class JuickBot {
if (toJuick) {
canSubscribe = true;
} else {
- int uid_to = UserQueries.getUIDbyName(XMPPComponent.sql, username);
+ int uid_to = UserQueries.getUIDbyName(xmpp.sql, username);
if (uid_to > 0) {
- PMQueries.addPMinRoster(XMPPComponent.sql, uid_to, p.from.Bare());
+ PMQueries.addPMinRoster(xmpp.sql, uid_to, p.from.Bare());
canSubscribe = true;
}
}
if (canSubscribe) {
Presence reply = new Presence(p.to, p.from, Presence.Type.subscribed);
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
reply.from.Resource = "Juick";
reply.priority = 10;
reply.type = null;
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
} else {
Presence reply = new Presence(p.to, p.from, Presence.Type.error);
reply.id = p.id;
reply.addChild(new Error(Error.Type.cancel, "item-not-found"));
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
}
} else if (p.type.equals(Presence.Type.unsubscribe)) {
if (!toJuick) {
- int uid_to = UserQueries.getUIDbyName(XMPPComponent.sql, username);
+ int uid_to = UserQueries.getUIDbyName(xmpp.sql, username);
if (uid_to > 0) {
- PMQueries.removePMinRoster(XMPPComponent.sql, uid_to, p.from.Bare());
+ PMQueries.removePMinRoster(xmpp.sql, uid_to, p.from.Bare());
}
}
Presence reply = new Presence(p.to, p.from, Presence.Type.unsubscribed);
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
return false;
}
- public static boolean incomingMessage(Message msg) throws Exception {
+ public boolean incomingMessage(Message msg) throws Exception {
if (msg.body == null || msg.body.isEmpty()) {
return true;
}
@@ -140,9 +144,9 @@ public class JuickBot {
User user_from = null;
String signuphash = "";
- user_from = UserQueries.getUserByJID(XMPPComponent.sql, msg.from.Bare());
+ user_from = UserQueries.getUserByJID(xmpp.sql, msg.from.Bare());
if (user_from == null) {
- signuphash = UserQueries.getSignUpHashByJID(XMPPComponent.sql, msg.from.Bare());
+ signuphash = UserQueries.getSignUpHashByJID(xmpp.sql, msg.from.Bare());
}
if (user_from == null) {
@@ -152,7 +156,7 @@ public class JuickBot {
} else {
reply.body = "Внимание, системное сообщение!\nВаш JabberID не обнаружен в списке доверенных. Для того, чтобы отправить сообщение пользователю " + username + "@juick.com, пожалуйста зарегистрируйте свой JabberID в системе: http://juick.com/signup?type=xmpp&hash=" + signuphash + "\nЕсли у вас уже есть учетная запись на Juick, вы сможете присоединить этот JabberID к ней.\n\nWarning, system message!\nYour JabberID is not found in our server's white list. To send a message to " + username + "@juick.com, please sign up: http://juick.com/signup?type=xmpp&hash=" + signuphash + "\nIf you already have an account on Juick, you will be proposed to attach this JabberID to your existing account.";
}
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
}
@@ -160,19 +164,19 @@ public class JuickBot {
return incomingMessageJuick(user_from, msg);
}
- int uid_to = UserQueries.getUIDbyName(XMPPComponent.sql, username);
+ int uid_to = UserQueries.getUIDbyName(xmpp.sql, username);
if (uid_to == 0) {
Message reply = new Message(msg.to, msg.from, Message.Type.error);
reply.id = msg.id;
reply.addChild(new Error(Error.Type.cancel, "item-not-found"));
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
return true;
}
boolean success = false;
- if (!UserQueries.isInBLAny(XMPPComponent.sql, uid_to, user_from.getUID())) {
- success = PMQueries.createPM(XMPPComponent.sql, user_from.getUID(), uid_to, msg.body);
+ if (!UserQueries.isInBLAny(xmpp.sql, uid_to, user_from.getUID())) {
+ success = PMQueries.createPM(xmpp.sql, user_from.getUID(), uid_to, msg.body);
}
if (success) {
@@ -183,19 +187,19 @@ public class JuickBot {
jmsg.setUser(user_from);
jmsg.setText(msg.body);
m.childs.add(jmsg);
- XMPPComponent.connRouter.router.send(m.toString());
+ xmpp.connRouter.router.send(m.toString());
m.to.Host = "ws.juick.com";
- XMPPComponent.connRouter.router.send(m.toString());
+ xmpp.connRouter.router.send(m.toString());
List<String> jids;
boolean inroster = false;
- jids = UserQueries.getJIDsbyUID(XMPPComponent.sql, uid_to);
+ jids = UserQueries.getJIDsbyUID(xmpp.sql, uid_to);
for (String jid : jids) {
Message mm = new Message();
mm.to = new JID(jid);
mm.type = Message.Type.chat;
- inroster = PMQueries.havePMinRoster(XMPPComponent.sql, user_from.getUID(), jid);
+ inroster = PMQueries.havePMinRoster(xmpp.sql, user_from.getUID(), jid);
if (inroster) {
mm.from = new JID(jmsg.getUser().getUName(), "juick.com", "Juick");
mm.body = msg.body;
@@ -203,20 +207,20 @@ public class JuickBot {
mm.from = new JID("juick", "juick.com", "Juick");
mm.body = "Private message from @" + jmsg.getUser().getUName() + ":\n" + msg.body;
}
- XMPPComponent.sendOut(mm);
+ xmpp.sendOut(mm);
}
} else {
Message reply = new Message(msg.to, msg.from, Message.Type.error);
reply.id = msg.id;
reply.addChild(new Error(Error.Type.cancel, "not-allowed"));
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
return true;
}
private static Pattern regexPM = Pattern.compile("^\\@(\\S+)\\s+([\\s\\S]+)$");
- public static boolean incomingMessageJuick(User user_from, Message msg) throws Exception {
+ public boolean incomingMessageJuick(User user_from, Message msg) throws Exception {
String command = msg.body.trim();
int commandlen = command.length();
@@ -253,29 +257,29 @@ public class JuickBot {
return false;
}
- private static void commandPing(Message m) throws Exception {
+ private void commandPing(Message m) throws Exception {
Presence p = new Presence(JuickJID, m.from);
p.priority = 10;
- XMPPComponent.sendOut(p);
+ xmpp.sendOut(p);
Message reply = new Message(JuickJID, m.from, Message.Type.chat);
reply.body = "PONG";
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
- private static void commandHelp(Message m) throws Exception {
+ private void commandHelp(Message m) throws Exception {
Message reply = new Message(JuickJID, m.from, Message.Type.chat);
reply.body = HELPTEXT;
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
- private static void commandLogin(Message m, User user_from) throws Exception {
+ private void commandLogin(Message m, User user_from) throws Exception {
Message reply = new Message(JuickJID, m.from, Message.Type.chat);
- reply.body = "http://juick.com/login?" + UserQueries.getHashByUID(XMPPComponent.sql, user_from.getUID());
- XMPPComponent.sendOut(reply);
+ reply.body = "http://juick.com/login?" + UserQueries.getHashByUID(xmpp.sql, user_from.getUID());
+ xmpp.sendOut(reply);
}
- private static void commandPM(Message m, User user_from, String user_to, String body) throws Exception {
+ private void commandPM(Message m, User user_from, String user_to, String body) throws Exception {
int ret = 0;
int uid_to = 0;
@@ -283,15 +287,15 @@ public class JuickBot {
boolean haveInRoster = false;
if (user_to.indexOf('@') > 0) {
- uid_to = UserQueries.getUIDbyJID(XMPPComponent.sql, user_to);
+ uid_to = UserQueries.getUIDbyJID(xmpp.sql, user_to);
} else {
- uid_to = UserQueries.getUIDbyName(XMPPComponent.sql, user_to);
+ uid_to = UserQueries.getUIDbyName(xmpp.sql, user_to);
}
if (uid_to > 0) {
- if (!UserQueries.isInBLAny(XMPPComponent.sql, uid_to, user_from.getUID())) {
- if (PMQueries.createPM(XMPPComponent.sql, user_from.getUID(), uid_to, body)) {
- jids_to = UserQueries.getJIDsbyUID(XMPPComponent.sql, uid_to);
+ if (!UserQueries.isInBLAny(xmpp.sql, uid_to, user_from.getUID())) {
+ if (PMQueries.createPM(xmpp.sql, user_from.getUID(), uid_to, body)) {
+ jids_to = UserQueries.getJIDsbyUID(xmpp.sql, uid_to);
ret = 200;
} else {
ret = 500;
@@ -311,16 +315,16 @@ public class JuickBot {
jmsg.setUser(user_from);
jmsg.setText(body);
msg.childs.add(jmsg);
- XMPPComponent.connRouter.router.send(msg.toString());
+ xmpp.connRouter.router.send(msg.toString());
msg.to.Host = "ws.juick.com";
- XMPPComponent.connRouter.router.send(msg.toString());
+ xmpp.connRouter.router.send(msg.toString());
for (String jid : jids_to) {
Message mm = new Message();
mm.to = new JID(jid);
mm.type = Message.Type.chat;
- haveInRoster = PMQueries.havePMinRoster(XMPPComponent.sql, user_from.getUID(), jid);
+ haveInRoster = PMQueries.havePMinRoster(xmpp.sql, user_from.getUID(), jid);
if (haveInRoster) {
mm.from = new JID(user_from.getUName(), "juick.com", "Juick");
mm.body = body;
@@ -328,7 +332,7 @@ public class JuickBot {
mm.from = new JID("juick", "juick.com", "Juick");
mm.body = "Private message from @" + user_from.getUName() + ":\n" + body;
}
- XMPPComponent.sendOut(mm);
+ xmpp.sendOut(mm);
}
}
@@ -340,12 +344,12 @@ public class JuickBot {
reply.type = Message.Type.error;
reply.body = "Error " + ret;
}
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
- private static void commandBLShow(Message m, User user_from) throws Exception {
- List<User> blusers = UserQueries.getUserBLUsers(XMPPComponent.sql, user_from.getUID());
- List<String> bltags = TagQueries.getUserBLTags(XMPPComponent.sql, user_from.getUID());
+ private void commandBLShow(Message m, User user_from) throws Exception {
+ List<User> blusers = UserQueries.getUserBLUsers(xmpp.sql, user_from.getUID());
+ List<String> bltags = TagQueries.getUserBLTags(xmpp.sql, user_from.getUID());
String txt = "";
if (bltags.size() > 0) {
@@ -368,6 +372,6 @@ public class JuickBot {
Message reply = new Message(JuickJID, m.from, Message.Type.chat);
reply.body = txt;
- XMPPComponent.sendOut(reply);
+ xmpp.sendOut(reply);
}
}