コード例 #1
0
ファイル: ftp_login.py プロジェクト: XorgX304/portScanner-2
    def connect(self, host, port, tls, timeout):

        if tls == '0':
            fp = FTP(timeout=int(timeout))
        else:
            fp = FTP_TLS(timeout=int(timeout))

        banner = fp.connect(host, int(port))

        if tls != '0':
            fp.auth()

        return TCP_Connection(fp, banner)
コード例 #2
0
    def login(self):

        if self.service == 'ftp':
            ftp = FTP()
        else:
            #print('doing FTP SSL')
            ftp = FTP_TLS()

        try:
            ftp.connect(host=self.address, port=self.port, timeout=3)
        except socket.timeout:
            return ReturnCode.CONN_TIMEOUT

        if self.service == 'ftps':
            logging.info('Securing SSL/TLS connection...')
            print('Securing SSL/TLS connection...')
            try:
                print(ftp.auth())
                print(ftp.prot_p())
                #print(ftp.prot_p())
            except error_perm as e:
                logging.info(e)  #'Error during SSL/TLS setup.')
                print(e)
                #if str(e).startswith('500'):
                #logging.info('Maybe the server doesn\'t supports FTPS')
                return ReturnCode.TLS_ERROR

        try:
            #print(self.service)
            #ftp.connect(host=self.address, port=self.port, timeout=3)
            #if self.service == 'ftps':
            ftp.login(user=self.username, passwd=self.password)
            return ReturnCode.AUTH_OK
        except ConnectionRefusedError:
            return ReturnCode.CONN_REFUSED
        except error_perm as e:
            print(e)
            return ReturnCode.AUTH_FAILED
        except Exception:
            return ReturnCode.GENERIC_ERROR
コード例 #3
0
ファイル: processors.py プロジェクト: cove9988/AutoAnt
class ProcessorFTP(BaseProcessorRemoteCP):
    ftp = None

    def __init__(self, **kwargs):
        super(ProcessorFTP, self).__init__(**kwargs)

    def __repr__(self):
        return "{0}@{1}:{2}".format(self.username, self.remote_host,
                                    self.remote_dir)

    def connect(self):
        try:
            if self.is_ssl_auth or self.is_ssl_data:
                log.debug("{0}: FTP with SSL/TLS".format(self.name))
                self.ftp = FTP_TLS()
            else:
                log.debug("{0}: FTP no SSL".format(self.name))
                self.ftp = FTP()
            self.ftp.set_debuglevel(self.debug_level)
            self.ftp.connect(self.remote_host,
                             self.remote_port,
                             timeout=self.timeout)
            if self.is_ssl_auth:
                self.ftp.auth()
            self.ftp.login(user=self.username, passwd=self.password)
            if self.is_ssl_data:
                self.ftp.prot_p()
        except Exception as e:
            log.error("{0}: Connect error to {1} {2}".format(
                self.name, self.remote_host, e))
            return False
        log.info("{0}: FTP Connected to {1} with {2}".format(
            self.name, self.remote_host, self.username))
        return True

    def disconnect(self):
        try:
            self.ftp.close()
        except Exception as e:
            log.error("{0}: Disconnect error to {1} {2}".format(
                self.name, self.remote_host, e))
            return False
        log.info("{0}: FTP Disconnected from {1} with {2}".format(
            self.name, self.remote_host, self.username))

    def create_path(self, remotepath):
        parts = remotepath.split('/')
        for n in range(2, len(parts)):
            path = '/'.join(parts[:n])
            try:
                self.ftp.mkd(path)
            except:
                pass

    def run(self, file_item):
        super(ProcessorFTP, self).run(file_item)
        try:
            assert_file_locked(file_item)
            rel_path = file_item.get_relative_path()
            remote_path = self.remote_dir + rel_path + file_item.name
            self.create_path(remote_path)
            fd = open(file_item.full_path, 'r')
            self.ftp.storbinary("STOR " + remote_path, fd)
            fd.close()
            log.info("{0}: FTP Put file {1}".format(self.name, file_item))
        except Exception as e:
            log.error("{0}: FTP Put error to {1} file {2} :{3}".format(
                self.name, self.remote_host, file_item, e))
            return False
        log.debug("End Processing {0}".format(file_item))
        return True