From 3b460c49a7cbca72f367bc44ca111b2a508d0cac Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Tue, 28 Feb 2017 14:29:05 +0300 Subject: readonly mode --- .../java/com/juick/components/s2s/JuickBot.java | 32 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'juick-xmpp/src/main/java/com/juick/components') diff --git a/juick-xmpp/src/main/java/com/juick/components/s2s/JuickBot.java b/juick-xmpp/src/main/java/com/juick/components/s2s/JuickBot.java index 0fff6af3..986eaed0 100644 --- a/juick-xmpp/src/main/java/com/juick/components/s2s/JuickBot.java +++ b/juick-xmpp/src/main/java/com/juick/components/s2s/JuickBot.java @@ -33,7 +33,9 @@ public class JuickBot implements StanzaListener, AutoCloseable { public JuickBot(XMPPServer xmpp) { this.xmpp = xmpp; xmpp.addStanzaListener(this); - broadcastPresence(null); + if (!xmpp.messagesService.isReadonly()) { + broadcastPresence(null); + } } private static final String HELPTEXT = @@ -176,10 +178,14 @@ public class JuickBot implements StanzaListener, AutoCloseable { reply.setFrom(msg.getTo()); reply.setTo(msg.getFrom()); reply.setType(Message.Type.CHAT); - if (username.equals("juick")) { - reply.setBody("Для того, чтобы начать пользоваться сервисом, пожалуйста пройдите быструю регистрацию: http://juick.com/signup?type=xmpp&hash=" + signuphash + "\nЕсли у вас уже есть учетная запись на Juick, вы сможете присоединить этот JabberID к ней.\n\nTo start using Juick, 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."); + if (xmpp.messagesService.isReadonly()) { + reply.setBody("Регистрация временно недоступна\n\nRegistration temporarily unavailable"); } else { - reply.setBody("Внимание, системное сообщение!\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."); + if (username.equals("juick")) { + reply.setBody("Для того, чтобы начать пользоваться сервисом, пожалуйста пройдите быструю регистрацию: http://juick.com/signup?type=xmpp&hash=" + signuphash + "\nЕсли у вас уже есть учетная запись на Juick, вы сможете присоединить этот JabberID к ней.\n\nTo start using Juick, 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."); + } else { + reply.setBody("Внимание, системное сообщение!\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."); + } } xmpp.sendOut(ClientMessage.from(reply)); return true; @@ -203,7 +209,7 @@ public class JuickBot implements StanzaListener, AutoCloseable { } boolean success = false; - if (!xmpp.userService.isInBLAny(uid_to, user_from.getUid())) { + if (!xmpp.userService.isInBLAny(uid_to, user_from.getUid()) && !xmpp.messagesService.isReadonly()) { success = xmpp.pmQueriesService.createPM(user_from.getUid(), uid_to, msg.getBody()); } @@ -283,6 +289,8 @@ public class JuickBot implements StanzaListener, AutoCloseable { } else if (commandlen == 2 && command.equalsIgnoreCase("BL")) { commandBLShow(msg, user_from); return true; + } else if (xmpp.messagesService.isReadonly()) { + return commandMaintenance(msg.getFrom()); } return false; @@ -421,6 +429,16 @@ public class JuickBot implements StanzaListener, AutoCloseable { xmpp.sendOut(ClientMessage.from(reply)); } + private boolean commandMaintenance(Jid jidFrom) { + Message reply = new Message(); + reply.setFrom(xmpp.getJid()); + reply.setTo(jidFrom); + reply.setType(Message.Type.CHAT); + reply.setBody("Комментирование временно недоступно"); + xmpp.sendOut(ClientMessage.from(reply)); + return true; + } + @Override public void stanzaReceived(Stanza xmlValue) { if (xmlValue instanceof Presence) { @@ -454,6 +472,8 @@ public class JuickBot implements StanzaListener, AutoCloseable { @Override public void close() throws Exception { - broadcastPresence(Presence.Type.UNAVAILABLE); + if (!xmpp.messagesService.isReadonly()) { + broadcastPresence(Presence.Type.UNAVAILABLE); + } } } -- cgit v1.2.3