Commit a248808a by fwkz

command "exit"

parent 8c8662ef
...@@ -87,8 +87,7 @@ class BaseInterpreter(object): ...@@ -87,8 +87,7 @@ class BaseInterpreter(object):
except RoutersploitException as err: except RoutersploitException as err:
utils.print_error(err) utils.print_error(err)
except KeyboardInterrupt: except KeyboardInterrupt:
print() utils.print_status("\nroutersploit stopped")
utils.print_status("routersploit stopped")
break break
def complete(self, text, state): def complete(self, text, state):
...@@ -259,9 +258,9 @@ class RoutersploitInterpreter(BaseInterpreter): ...@@ -259,9 +258,9 @@ class RoutersploitInterpreter(BaseInterpreter):
:return: list of most accurate command suggestions :return: list of most accurate command suggestions
""" """
if self.current_module: if self.current_module:
return ['run', 'back', 'set ', 'show ', 'check', 'debug'] return ['run', 'back', 'set ', 'show ', 'check', 'debug', 'exit']
else: else:
return ['use ', 'debug'] return ['use ', 'debug', 'exit']
def command_back(self, *args, **kwargs): def command_back(self, *args, **kwargs):
self.current_module = None self.current_module = None
...@@ -382,3 +381,5 @@ class RoutersploitInterpreter(BaseInterpreter): ...@@ -382,3 +381,5 @@ class RoutersploitInterpreter(BaseInterpreter):
utils.print_info(key) utils.print_info(key)
utils.print_error(value, '\n') 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): ...@@ -22,7 +22,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
def assertPrompt(self, *args): def assertPrompt(self, *args):
value = ''.join(args) value = ''.join(args)
self.rsf.expect_exact(value, timeout=0.5) self.rsf.expect_exact(value, timeout=1)
def set_module(self): def set_module(self):
self.rsf.send("use creds/ftp_bruteforce\r\n") self.rsf.send("use creds/ftp_bruteforce\r\n")
...@@ -30,7 +30,7 @@ class RoutersploitCompleterTest(unittest.TestCase): ...@@ -30,7 +30,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
def test_raw_commands_no_module(self): def test_raw_commands_no_module(self):
self.rsf.send("\t\t") 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): def test_complete_use_raw(self):
self.rsf.send("u\t\t") self.rsf.send("u\t\t")
...@@ -87,7 +87,7 @@ class RoutersploitCompleterTest(unittest.TestCase): ...@@ -87,7 +87,7 @@ class RoutersploitCompleterTest(unittest.TestCase):
self.set_module() self.set_module()
self.rsf.send("\t\t") self.rsf.send("\t\t")
self.assertPrompt( self.assertPrompt(
'back check debug run set show \r\n', 'back check debug exit run set show \r\n',
self.module_prompt('FTP Bruteforce') self.module_prompt('FTP Bruteforce')
) )
......
...@@ -197,14 +197,14 @@ class RoutersploitInterpreterTest(unittest.TestCase): ...@@ -197,14 +197,14 @@ class RoutersploitInterpreterTest(unittest.TestCase):
def test_suggested_commands_with_loaded_module(self): def test_suggested_commands_with_loaded_module(self):
self.assertEqual( self.assertEqual(
self.interpreter.suggested_commands(), 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): def test_suggested_commands_without_loaded_module(self):
self.interpreter.current_module = None self.interpreter.current_module = None
self.assertEqual( self.assertEqual(
self.interpreter.suggested_commands(), # Extra space at the end because of following param self.interpreter.suggested_commands(), # Extra space at the end because of following param
['use ', 'debug'] ['use ', 'debug', 'exit']
) )
@mock.patch('importlib.import_module') @mock.patch('importlib.import_module')
...@@ -567,5 +567,9 @@ class RoutersploitInterpreterTest(unittest.TestCase): ...@@ -567,5 +567,9 @@ class RoutersploitInterpreterTest(unittest.TestCase):
] ]
) )
def test_command_exit(self):
with self.assertRaises(KeyboardInterrupt):
self.interpreter.command_exit()
if __name__ == '__main__': if __name__ == '__main__':
unittest.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