Moved http.py to http_server.py to avoid import clashes with Python's http library.
Report plugins can take a list of targets and create reports based on the scans and files.
Added optional check() function for plugins to check pre-requisites, etc. after plugins are fully loaded and options have been parsed.
Fixed bug in recent commit.
Added ability to add an additional plugins directory instead of overriding the original. Useful for plugin dev.
Also added a new non-default port scan which guesses services based on open ports.
Changed keyboard control to some custom code which should work with all systems. Unfortunately occasionally it will not register inputs. Unsure why. Good enough for now.
Added IPv6 support.
If a hostname has an IPv4 address, that will be used.
Plugins can either rely on nmap_extra for IPv6 compatibility, or access service.target.type to see if the target address is IPv4 or IPv6.
Added exception handling for required modules.
Added ability to disable keyboard controls.
Added separate keyboard control module for SSH/Docker (running as root).
Updated global option parsing to allow default None values by removing the "default=" setting.
Added a match_service() function to ServiceScan plugins to match combinations of protocol/port/name.
Fixed bug in status times.
Removed defaul from global.domain.
Added new WinRM detection plugin.
Previously, add_list_option() used argparse's "append" type. Now it uses nargs='+' to allow multiple options (space separated) that also override defaults rather than appending.
Added a stream readlines() function to read all lines into a list.
Added fformat() function, giving plugin authors more access to variables.
Fixed "Curl Robots" plugin (suggestion by Alh4zr3d) so it only saves the robots.txt file if it finds one.
Fixed bug where commands were double formatted when being written to _commands.txt
Fixed bug where plugin warnings would print multiple times per plugin.
Added --create-port-dirs option which will create port directories (e.g. tcp80, udp53) in the scans directory and put all relevant scans there.
Now most command line options can be set in the config.toml file as well.
The manual commands function will now merge command arrays instead of replacing them, while removing duplicate commands and preserving order.
Added a default option to get_global / get_global_option function in case user deletes global options.
Updated several plugins that use global options.