forked from p15670423/monkey
Agent: Remove disused transport.http.HTTPServer
This commit is contained in:
parent
c93835245c
commit
86c18b556f
|
@ -11,33 +11,12 @@ from infection_monkey.model import DOWNLOAD_TIMEOUT
|
||||||
from infection_monkey.network.firewall import app as firewall
|
from infection_monkey.network.firewall import app as firewall
|
||||||
from infection_monkey.network.info import get_free_tcp_port
|
from infection_monkey.network.info import get_free_tcp_port
|
||||||
from infection_monkey.network.tools import get_interface_to_target
|
from infection_monkey.network.tools import get_interface_to_target
|
||||||
from infection_monkey.transport import HTTPServer, LockedHTTPServer
|
from infection_monkey.transport import LockedHTTPServer
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class HTTPTools(object):
|
class HTTPTools(object):
|
||||||
@staticmethod
|
|
||||||
def create_transfer(host, src_path, local_ip=None, local_port=None):
|
|
||||||
if not local_port:
|
|
||||||
local_port = get_free_tcp_port()
|
|
||||||
|
|
||||||
if not local_ip:
|
|
||||||
local_ip = get_interface_to_target(host.ip_addr)
|
|
||||||
|
|
||||||
if not firewall.listen_allowed():
|
|
||||||
return None, None
|
|
||||||
|
|
||||||
httpd = HTTPServer(local_ip, local_port, src_path)
|
|
||||||
httpd.daemon = True
|
|
||||||
httpd.start()
|
|
||||||
|
|
||||||
return (
|
|
||||||
"http://%s:%s/%s"
|
|
||||||
% (local_ip, local_port, urllib.parse.quote(os.path.basename(src_path))),
|
|
||||||
httpd,
|
|
||||||
)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def try_create_locked_transfer(host, src_path, local_ip=None, local_port=None):
|
def try_create_locked_transfer(host, src_path, local_ip=None, local_port=None):
|
||||||
http_path, http_thread = HTTPTools.create_locked_transfer(
|
http_path, http_thread = HTTPTools.create_locked_transfer(
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
from infection_monkey.transport.http import HTTPServer
|
|
||||||
from infection_monkey.transport.http import LockedHTTPServer
|
from infection_monkey.transport.http import LockedHTTPServer
|
||||||
|
|
|
@ -157,50 +157,6 @@ class HTTPConnectProxyHandler(http.server.BaseHTTPRequestHandler):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class HTTPServer(threading.Thread):
|
|
||||||
def __init__(self, local_ip, local_port, filename, max_downloads=1):
|
|
||||||
self._local_ip = local_ip
|
|
||||||
self._local_port = local_port
|
|
||||||
self._filename = filename
|
|
||||||
self.max_downloads = max_downloads
|
|
||||||
self.downloads = 0
|
|
||||||
self._stopped = False
|
|
||||||
threading.Thread.__init__(self)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
class TempHandler(FileServHTTPRequestHandler):
|
|
||||||
from common.utils.attack_utils import ScanStatus
|
|
||||||
from infection_monkey.telemetry.attack.t1105_telem import T1105Telem
|
|
||||||
|
|
||||||
filename = self._filename
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def report_download(dest=None):
|
|
||||||
logger.info("File downloaded from (%s,%s)" % (dest[0], dest[1]))
|
|
||||||
TempHandler.T1105Telem(
|
|
||||||
TempHandler.ScanStatus.USED,
|
|
||||||
get_interface_to_target(dest[0]),
|
|
||||||
dest[0],
|
|
||||||
self._filename,
|
|
||||||
).send()
|
|
||||||
self.downloads += 1
|
|
||||||
if not self.downloads < self.max_downloads:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
httpd = http.server.HTTPServer((self._local_ip, self._local_port), TempHandler)
|
|
||||||
httpd.timeout = 0.5 # this is irrelevant?
|
|
||||||
|
|
||||||
while not self._stopped and self.downloads < self.max_downloads:
|
|
||||||
httpd.handle_request()
|
|
||||||
|
|
||||||
self._stopped = True
|
|
||||||
|
|
||||||
def stop(self, timeout=60):
|
|
||||||
self._stopped = True
|
|
||||||
self.join(timeout)
|
|
||||||
|
|
||||||
|
|
||||||
class LockedHTTPServer(threading.Thread):
|
class LockedHTTPServer(threading.Thread):
|
||||||
"""
|
"""
|
||||||
Same as HTTPServer used for file downloads just with locks to avoid racing conditions.
|
Same as HTTPServer used for file downloads just with locks to avoid racing conditions.
|
||||||
|
|
Loading…
Reference in New Issue