Commit a248808a by fwkz

command "exit"

parent 8c8662ef
......@@ -87,8 +87,7 @@ class BaseInterpreter(object):
except RoutersploitException as err:
utils.print_error(err)
except KeyboardInterrupt:
print()
utils.print_status("routersploit stopped")
utils.print_status("\nroutersploit stopped")
break
def complete(self, text, state):
......@@ -259,9 +258,9 @@ class RoutersploitInterpreter(BaseInterpreter):
:return: list of most accurate command suggestions
"""
if self.current_module:
return ['run', 'back', 'set ', 'show ', 'check', 'debug']
return ['run', 'back', 'set ', 'show ', 'check', 'debug', 'exit']
else:
return ['use ', 'debug']
return ['use ', 'debug', 'exit']
def command_back(self, *args, **kwargs):
self.current_module = None
......@@ -382,3 +381,5 @@ class RoutersploitInterpreter(BaseInterpreter):
utils.print_info(key)
utils.print_error(value, '\n')
def command_exit(self, *args, **kwargs):
raise KeyboardInterrupt
\ No newline at end of file
......@@ -22,7 +22,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
def assertPrompt(self, *args):
value = ''.join(args)
self.rsf.expect_exact(value, timeout=0.5)
self.rsf.expect_exact(value, timeout=1)
def set_module(self):
self.rsf.send("use creds/ftp_bruteforce\r\n")
......@@ -30,7 +30,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
def test_raw_commands_no_module(self):
self.rsf.send("\t\t")
self.assertPrompt('debug use \r\n', self.raw_prompt)
self.assertPrompt('debug exit use \r\n', self.raw_prompt)
def test_complete_use_raw(self):
self.rsf.send("u\t\t")
......@@ -87,7 +87,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
self.set_module()
self.rsf.send("\t\t")
self.assertPrompt(
'back check debug run set show \r\n',
'back check debug exit run set show \r\n',
self.module_prompt('FTP Bruteforce')
)
......
......@@ -197,14 +197,14 @@ class RoutersploitInterpreterTest(unittest.TestCase):
def test_suggested_commands_with_loaded_module(self):
self.assertEqual(
self.interpreter.suggested_commands(),
['run', 'back', 'set ', 'show ', 'check', 'debug'] # Extra space at the end because of following param
['run', 'back', 'set ', 'show ', 'check', 'debug', 'exit'] # Extra space at the end because of following param
)
def test_suggested_commands_without_loaded_module(self):
self.interpreter.current_module = None
self.assertEqual(
self.interpreter.suggested_commands(), # Extra space at the end because of following param
['use ', 'debug']
['use ', 'debug', 'exit']
)
@mock.patch('importlib.import_module')
......@@ -567,5 +567,9 @@ class RoutersploitInterpreterTest(unittest.TestCase):
]
)
def test_command_exit(self):
with self.assertRaises(KeyboardInterrupt):
self.interpreter.command_exit()
if __name__ == '__main__':
unittest.main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment