diff --git a/src/core.py b/src/core.py index b06d0009..06f7f1cb 100644 --- a/src/core.py +++ b/src/core.py @@ -1365,7 +1365,10 @@ class Core(object): if len(arg) > 1: return self.command_help('list') elif arg: - server = JID(arg[0]).server + try: + server = JID(arg[0]).server + except InvalidJID: + server = JID('') else: if not isinstance(self.current_tab(), tabs.MucTab): return self.information('Please provide a server', 'Error') @@ -1400,7 +1403,10 @@ class Core(object): args = common.shell_split(arg) if len(args) < 1: return self.command_help('version') - jid = JID(args[0]) + try: + jid = JID(args[0]) + except InvalidJID: + jid = JID('') if jid.resource or jid not in roster: self.xmpp.plugin['xep_0092'].get_version(jid, callback=callback) elif jid in roster: @@ -1431,7 +1437,10 @@ class Core(object): room = JID(tab.get_name()).bare nick = tab.own_nick else: - info = JID(args[0]) + try: + info = JID(args[0]) + except InvalidJID: + info = JID('') if info.resource == '': default = os.environ.get('USER') if os.environ.get('USER') else 'poezio' nick = config.get('default_nick', '') @@ -1503,7 +1512,10 @@ class Core(object): if len(txt.split()) != 2: # we are not on the 1st argument of the command line return False - jid = JID(txt.split()[1]) + try: + jid = JID(txt.split()[1]) + except InvalidJID: + jid = JID('') if jid.server: if jid.resource or jid.full.endswith('/'): # we are writing the resource: complete the node @@ -1560,7 +1572,10 @@ class Core(object): self.information('Bookmarks added and saved.', 'Info') return else: - info = JID(args[0]) + try: + info = JID(args[0]) + except InvalidJID: + return self.information('Invalid JID.', 'Error') if info.resource != '': nick = info.resource roomname = info.bare @@ -1595,7 +1610,10 @@ class Core(object): if len(args) == 1: jid = JID('') else: - jid = JID(args[1]) + try: + jid = JID(args[1]) + except InvalidJID: + jid = JID('') if len(args) > 2: return if jid.server and (jid.resource or jid.full.endswith('/')): @@ -1655,7 +1673,10 @@ class Core(object): self.information("Could not add the bookmarks.", "Info") return else: - info = JID(args[0]) + try: + info = JID(args[0]) + except InvalidJID: + return self.information('Invalid JID.', 'Error') if info.resource != '': nick = info.resource roomname = info.bare @@ -1698,7 +1719,10 @@ class Core(object): if len(args) == 1: jid = JID('') else: - jid = JID(args[1]) + try: + jid = JID(args[1]) + except InvalidJID: + jid = JID('') if len(args) == 2: return the_input.auto_completion(['true', 'false'], '') @@ -1937,7 +1961,10 @@ class Core(object): args = common.shell_split(arg) if not len(args): return - jid = JID(args[0]) + try: + jid = JID(args[0]) + except InvalidJID: + jid = JID('') if jid.bare not in self.pending_invites: return reason = args[1] if len(args) > 1 else '' diff --git a/src/tabs.py b/src/tabs.py index 7bfc23d1..1cc924b8 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -807,7 +807,10 @@ class MucTab(ChatTab): jid = JID(self.name) jid.resource = arg else: - jid = JID(arg) + try: + jid = JID(arg) + except InvalidJID: + jid = JID('') self.core.xmpp.plugin['xep_0092'].get_version(jid, callback=callback) def command_nick(self, arg): @@ -1910,8 +1913,7 @@ class RosterInfoTab(Tab): try: jid = JID(arg) except InvalidJID: - self.core.information('JID not well-formed', 'Error') - return + jid = JID('') elif isinstance(item, Contact): jid = item.bare_jid elif isinstance(item, Resource): @@ -1940,8 +1942,7 @@ class RosterInfoTab(Tab): try: jid = JID(arg) except InvalidJID: - self.core.information('JID not well-formed', 'Error') - return + jid = JID('') elif isinstance(item, Contact): jid = item.bare_jid elif isinstance(item, Resource): @@ -2061,7 +2062,10 @@ class RosterInfoTab(Tab): self.core.information('No subscription to deny') return else: - jid = JID(arg).bare + try: + jid = JID(arg).bare + except InvalidJID: + jid = JID('') if not jid in [jid for jid in roster.jids()]: self.core.information('No subscription to deny') return @@ -2075,7 +2079,10 @@ class RosterInfoTab(Tab): Add the specified JID to the roster, and set automatically accept the reverse subscription """ - jid = JID(JID(args.strip()).bare) + try: + jid = JID(JID(args.strip()).bare) + except InvalidJID: + return self.core.information('Invalid JID.', 'Error') if not jid: self.core.information(_('No JID specified'), 'Error') return @@ -2090,7 +2097,10 @@ class RosterInfoTab(Tab): args = common.shell_split(arg) if not args: return self.core.command_help('name') - jid = JID(args[0]).bare + try: + jid = JID(args[0]).bare + except InvalidJID: + jid = JID('') name = args[1] if len(args) == 2 else '' contact = roster[jid] @@ -2110,7 +2120,10 @@ class RosterInfoTab(Tab): args = common.shell_split(args) if len(args) != 2: return - jid = JID(args[0]).bare + try: + jid = JID(args[0]).bare + except InvalidJID: + jid = JID('') group = args[1] contact = roster[jid] @@ -2141,7 +2154,10 @@ class RosterInfoTab(Tab): args = common.shell_split(arg) if len(args) != 3: return self.core.command_help('groupmove') - jid = JID(args[0]).bare + try: + jid = JID(args[0]).bare + except InvalidJID: + jid = JID('') group_from = args[1] group_to = args[2] @@ -2187,7 +2203,10 @@ class RosterInfoTab(Tab): args = common.shell_split(args) if len(args) != 2: return - jid = JID(args[0]).bare + try: + jid = JID(args[0]).bare + except InvalidJID: + jid = JID('') group = args[1] contact = roster[jid] @@ -2216,7 +2235,10 @@ class RosterInfoTab(Tab): from its presence, and cancel its subscription to our. """ if args.strip(): - jid = JID(args.strip()).bare + try: + jid = JID(args.strip()).bare + except InvalidJID: + jid = JID('') else: item = self.roster_win.selected_row if isinstance(item, Contact): @@ -2373,7 +2395,10 @@ class RosterInfoTab(Tab): self.core.information('No subscription to accept') return else: - jid = JID(arg).bare + try: + jid = JID(arg).bare + except InvalidJID: + jid = JID('') contact = roster[jid] if contact is None: return diff --git a/src/windows.py b/src/windows.py index 4da0cff6..c2a77411 100644 --- a/src/windows.py +++ b/src/windows.py @@ -28,7 +28,7 @@ from contact import Contact from roster import RosterGroup from poopt import cut_text -from sleekxmpp.xmlstream.stanzabase import JID +from sleekxmpp import JID import core import wcwidth