diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2021-06-06 01:37:50 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2021-06-06 01:37:50 +0300 |
commit | 7c1494cd502e1a99f96f27b12ddf23a84de188b5 (patch) | |
tree | 0a236d75fa14ed9176d8013a0b4c00d8ea64cb86 /lib/worker.py | |
parent | fe07ea26f41be1eda6f8cccc591a5165dd3fb135 (diff) |
refactor code, add manual-scan script
Diffstat (limited to 'lib/worker.py')
-rw-r--r-- | lib/worker.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/worker.py b/lib/worker.py new file mode 100644 index 0000000..f8d6c55 --- /dev/null +++ b/lib/worker.py @@ -0,0 +1,38 @@ +import logging + +from threading import Thread +from lib.scanner import TCPScanner + +logger = logging.getLogger(__name__) + + +class Worker(Thread): + def __init__(self, name, host, opened=None, concurrency=None, timeout=None): + Thread.__init__(self) + + assert concurrency is not None + + self.done = False + self.name = name + self.concurrency = concurrency + self.opened = opened + + scanner_kw = {} + if timeout is not None: + scanner_kw['timeout'] = timeout + self.scanner = TCPScanner(host, range(0, 65535), **scanner_kw) + + def run(self): + logger.info(f'starting {self.name} ({self.concurrency} threads)') + self.scanner.scan(num_threads=self.concurrency) + self.done = not self.scanner.failed + logger.info(f'finished {self.name}') + + def get_results(self): + return self.scanner.results + + def is_expected(self, port): + return (self.opened is not None) and (port in self.opened) + + def get_host(self): + return self.scanner.host |