This PR adds the ability to reload pwncat modules at runtime. This is facilitated through the addition of a new flag for the Manager.load_modules method, which now takes a force keyword argument, which forces reloading of previously loaded modules. Further, there is now a new Manager.reload_module method which accepts either a module instance or a module name to be reloaded specifically. Both load_modules and reload_module methods will also attempt to fix the current module context if a module is being reloaded, and reset any module configurations, which could fail if the module arguments have changed during reload. If a module-specific configuration fails to apply after reloading the module (likely because the module arguments changed on disk), a warning is printed and that configuration is lost.
Lastly, this PR adds new arguments to two pwncat commands: load and run. First, the load command now as either --force/-f or --reload/-r arguments. These are synonyms which force a reload of modules during loading (through the force argument of Manager.load_modules). Second, the run command now accepts a --reload/-r argument which forces the selected module to be reloaded via Manager.reload_module prior to execution, which should be useful when debugging a new module (or a misbehaving old module).
Fixes #241.
Please note any noqa: comments needed to appease flake8.
Major Changes Implemented:
Added force argument to Manager.load_modules to enable reloading modules.
Added the Manager.reload_module method to reload a specific module.
Added --force/-f and --reload/-r arguments to the load command (#241).
Added the --reload/-r argument to the run command to reload modules prior to executing.
Pre-Merge Tasks
[x] Formatted all modified files w/ python-black
[x] Sorted imports for modified files w/ isort
[x] Ran flake8 on repo, and fixed any new problems w/ modified files
[x] Ran pytest test cases
[x] Added brief summary of updates to CHANGELOG (under [Unreleased])
For issues with pre-merge tasks, see CONTRIBUTING.md
Description of Changes
This PR adds the ability to reload pwncat modules at runtime. This is facilitated through the addition of a new flag for the
Manager.load_modules
method, which now takes aforce
keyword argument, which forces reloading of previously loaded modules. Further, there is now a newManager.reload_module
method which accepts either a module instance or a module name to be reloaded specifically. Bothload_modules
andreload_module
methods will also attempt to fix the current module context if a module is being reloaded, and reset any module configurations, which could fail if the module arguments have changed during reload. If a module-specific configuration fails to apply after reloading the module (likely because the module arguments changed on disk), a warning is printed and that configuration is lost.Lastly, this PR adds new arguments to two pwncat commands:
load
andrun
. First, theload
command now as either--force/-f
or--reload/-r
arguments. These are synonyms which force a reload of modules during loading (through the force argument ofManager.load_modules
). Second, therun
command now accepts a--reload/-r
argument which forces the selected module to be reloaded viaManager.reload_module
prior to execution, which should be useful when debugging a new module (or a misbehaving old module).Fixes #241.
Please note any
noqa:
comments needed to appease flake8.Major Changes Implemented:
force
argument toManager.load_modules
to enable reloading modules.Manager.reload_module
method to reload a specific module.--force/-f
and--reload/-r
arguments to theload
command (#241).--reload/-r
argument to therun
command to reload modules prior to executing.Pre-Merge Tasks
python-black
isort
flake8
on repo, and fixed any new problems w/ modified filespytest
test cases[Unreleased]
)For issues with pre-merge tasks, see CONTRIBUTING.md