OpenSIPS / opensips-cli

OpenSIPS CLI tool - an interactive command line tool that can be used to control and monitor OpenSIPS servers.
GNU General Public License v3.0
84 stars 46 forks source link

mi ul_rm_contact crashes opensips-cli #107

Open andycol opened 11 months ago

andycol commented 11 months ago

Version: opensips-cli-0.1.20230512.161b5ea-1.noarch OS: centos7

When i run a command example mi ul_rm_contact "sip:ikr22kje@83p973613760.invalid

opensips-cli crashes with

  File "/usr/lib64/python3.6/cmd.py", line 214, in onecmd
    func = getattr(self, 'do_' + cmd)
AttributeError: 'OpenSIPSCLI' object has no attribute 'do_mi'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/opensipscli/cli.py", line 413, in default
    aux = shlex.split(line)
  File "/usr/lib64/python3.6/shlex.py", line 305, in split
    return list(lex)
  File "/usr/lib64/python3.6/shlex.py", line 295, in __next__
    token = self.get_token()
  File "/usr/lib64/python3.6/shlex.py", line 105, in get_token
    raw = self.read_token()
  File "/usr/lib64/python3.6/shlex.py", line 187, in read_token
    raise ValueError("No closing quotation")
ValueError: No closing quotation

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/opensips-cli", line 9, in <module>
    run_console()
  File "/usr/bin/opensips-cli", line 6, in run_console
    main.main()
  File "/usr/lib/python3.6/site-packages/opensipscli/main.py", line 78, in main
    sys.exit(shell.cmdloop())
  File "/usr/lib/python3.6/site-packages/opensipscli/cli.py", line 258, in cmdloop
    super(OpenSIPSCLI, self).cmdloop(intro='')
  File "/usr/lib64/python3.6/cmd.py", line 138, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib64/python3.6/cmd.py", line 216, in onecmd
    return self.default(line)
  File "/usr/lib/python3.6/site-packages/opensipscli/cli.py", line 417, in default
    aux = shlex.split(line)
  File "/usr/lib64/python3.6/shlex.py", line 305, in split
    return list(lex)
  File "/usr/lib64/python3.6/shlex.py", line 295, in __next__
    token = self.get_token()
  File "/usr/lib64/python3.6/shlex.py", line 105, in get_token
    raw = self.read_token()
  File "/usr/lib64/python3.6/shlex.py", line 187, in read_token
    raise ValueError("No closing quotation")
ValueError: No closing quotation
liviuchircu commented 9 months ago

Hey @andycol! Brilliant!

Initially, I had a hard time wrapping my head around this, as it was apparently working for me:

opensips-cli (master) 19:45:11$ opensips-cli -x mi ul_rm_contact \"sip:ikr22kje@83p973613760.invalid
ERROR: command 'ul_rm_contact' returned: -32602: Invalid params (Too few or too many parameters)
opensips-cli (master) 19:45:15$ opensips-cli -x mi ul_rm_contact x y \"sip:ikr22kje@83p973613760.invalid
ERROR: command 'ul_rm_contact' returned: 404: Table not found
opensips-cli (master) 19:45:18$ opensips-cli -x mi ul_rm_contact location y \"sip:ikr22kje@83p973613760.invalid
ERROR: command 'ul_rm_contact' returned: 404: AOR not found
opensips-cli (master) 19:45:20$ opensips-cli -x mi ul_rm_contact location liviu \"sip:ikr22kje@83p973613760.invalid
ERROR: command 'ul_rm_contact' returned: 404: Contact not found

However, I then realized to enter CLI mode first! Needless to say, it was an instant reproduce:

opensips-cli (master) 19:46:26$ opensips-cli 
Welcome to OpenSIPS Command Line Interface!
(opensips-cli): mi ul_rm_contact "sip:ikr22kje@83p973613760.invalid
Traceback (most recent call last):
  File "/usr/lib/python3.8/cmd.py", line 214, in onecmd
    func = getattr(self, 'do_' + cmd)
AttributeError: 'OpenSIPSCLI' object has no attribute 'do_mi'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/liviu/src/opensips-cli/opensipscli/cli.py", line 413, in default
    aux = shlex.split(line)
  File "/usr/lib/python3.8/shlex.py", line 311, in split
    return list(lex)
  File "/usr/lib/python3.8/shlex.py", line 300, in __next__
    token = self.get_token()
  File "/usr/lib/python3.8/shlex.py", line 109, in get_token
    raw = self.read_token()
  File "/usr/lib/python3.8/shlex.py", line 191, in read_token
    raise ValueError("No closing quotation")
ValueError: No closing quotation
andycol commented 9 months ago

Glad you could reproduce it