Пример #1
0
    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)
Пример #2
0
    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]
Пример #3
0
 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