def run_server(self): # Run server in separate process signal.signal(signal.SIGINT, lambda x, y: None) address = self.server_info['address'] port = self.server_info.get('port', DEFAULT_PORT) self.path = self.server_info.setdefault('path', '/') server = TftpServer(self.path) logfile = self.server_info.get('logfile', None) if logfile: ftp_logger = logging.getLogger('tftpy') ftp_logger.setLevel(logging.DEBUG) ftp_logger.propagate = False ftp_handler = logging.FileHandler(logfile) ftp_logger.addHandler(ftp_handler) # Port is only allocated after server is running, so start a thread # to retrieve threading.Thread(target=self.get_port, args=(server, )).start() server.listen(address, port)
def __init__(self, ip_address=None, port=0, verbose=False): super(InternalTftp, self).__init__() self.daemon = True self.tftp_dir = temp_dir() self.verbose = verbose self.server = TftpServer(tftproot=self.tftp_dir) self.ip_address = ip_address self.port = port self.start() # Get the port we actually hosted on if port == 0: deadline = datetime.now() + timedelta(seconds=10) while datetime.now() < deadline: try: self.port = self.server.sock.getsockname()[1] break except (AttributeError, socket.error): pass else: # don't catch the error on our last attempt self.port = self.server.sock.getsockname()[1]
def __init__(self, tftp_ip_addr, tftp_folder, tftp_log_level): self.tftp_ip_addr = tftp_ip_addr self.tftp_folder = tftp_folder self.tftp_server = TftpServer(self.tftp_folder) self.tftp_log_level = tftp_log_level