from __future__ import print_function
+import codecs
import ftplib
-from m_lib.net.ftp.ftpparse import ftpparse
+import sys
+from .ftpparse import ftpparse
class FtpScanError(Exception): pass
class ReconnectingFTPWrapper:
ReconnectingFTPCallWrapperClass = ReconnectingFTPCallWrapper
- def __init__(self, ftp, ftp_server, ftp_port=None, login=None, password=None, ftp_dir='/', tree=None):
+ def __init__(self, ftp, ftp_server, ftp_port=0, login=None, password=None, ftp_dir='/', tree=None):
self._ftp = ftp
self._ftp_server = ftp_server
self._ftp_port = ftp_port
ftp.cwd("..")
-def ftpscan1(ftp_server, ftp_port=None, login=None, password=None,
+def ftpscan1(ftp_server, ftp_port=0, login=None, password=None,
ftp_dir='/', passive=None, FTPClass=ftplib.FTP, reconnect=False,
ReconnectingFTPWrapperClass=ReconnectingFTPWrapper):
"""Recursive FTP scan using one-by-one directory traversing. It is slow
return tree
-def ftpscanrecursive(ftp_server, ftp_port=None, login=None, password=None,
+def ftpscanrecursive(ftp_server, ftp_port=0, login=None, password=None,
ftp_dir='/', passive=None, FTPClass=ftplib.FTP, reconnect=False):
"""
Recursive FTP scan using fast LIST -R command. Not all servers supports
# The server does not implement LIST -R and
# treats -R as a name of a directory (-:
ftp.quit()
- raise FtpScanError, "the server does not implement recursive listing"
+ raise FtpScanError("the server does not implement recursive listing")
ftp.quit()
tree = []
tree.append((current_dir, files))
if len(tree) == 1:
- raise FtpScanError, "the server ignores -R in LIST"
+ raise FtpScanError("the server ignores -R in LIST")
return tree
-def ftpscan(ftp_server, ftp_port=None, login=None, password=None,
+def ftpscan(ftp_server, ftp_port=0, login=None, password=None,
ftp_dir='/', passive=None, FTPClass=ftplib.FTP):
try:
return ftpscanrecursive(ftp_server, ftp_port, login, password, ftp_dir, passive, FTPClass)
print(stop_time - start_time)
logfname = "%s.list" % ftp_server
- log = open(logfname, 'w')
+ if sys.version_info[0] >= 3:
+ log = codecs.open(logfname, 'w', encoding='utf-8')
+ else:
+ log = open(logfname, 'w')
for ftp_dir, files in tree:
if ftp_dir == ftpscan_error_mark: