Only server-cycle on exact server matches (#3412)

This commit is contained in:
mathieui 2019-02-24 15:47:51 +01:00
parent d6952f675b
commit cc104f1080
No known key found for this signature in database
GPG key ID: C59F84CEEFD616E3

View file

@ -9,6 +9,7 @@ log = logging.getLogger(__name__)
import asyncio import asyncio
from xml.etree import cElementTree as ET from xml.etree import cElementTree as ET
from slixmpp import JID, InvalidJID
from slixmpp.exceptions import XMPPError from slixmpp.exceptions import XMPPError
from slixmpp.xmlstream.xmlstream import NotConnectedError from slixmpp.xmlstream.xmlstream import NotConnectedError
from slixmpp.xmlstream.stanzabase import StanzaBase from slixmpp.xmlstream.stanzabase import StanzaBase
@ -632,12 +633,18 @@ class CommandCore:
def server_cycle(self, args): def server_cycle(self, args):
""" """
Do a /cycle on each room of the given server. Do a /cycle on each room of the given server.
If none, do it on the current tab If none, do it on the server of the current tab
""" """
tab = self.core.tabs.current_tab tab = self.core.tabs.current_tab
message = "" message = ""
if args: if args:
domain = args[0] try:
domain = JID(args[0]).domain
except InvalidJID:
return self.core.information(
"Invalid server domain: %s" % args[0],
"Error"
)
if len(args) == 2: if len(args) == 2:
message = args[1] message = args[1]
else: else:
@ -646,7 +653,7 @@ class CommandCore:
else: else:
return self.core.information("No server specified", "Error") return self.core.information("No server specified", "Error")
for tab in self.core.get_tabs(tabs.MucTab): for tab in self.core.get_tabs(tabs.MucTab):
if tab.name.endswith(domain): if JID(tab.name).domain == domain:
tab.leave_room(message) tab.leave_room(message)
tab.join() tab.join()