new sendport() interface; add test() program call
This commit is contained in:
parent
28e99fe96f
commit
221ec0b97a
|
@ -198,10 +198,8 @@ class FTP:
|
||||||
self.voidresp()
|
self.voidresp()
|
||||||
|
|
||||||
# Send a PORT command with the current host and the given port number
|
# Send a PORT command with the current host and the given port number
|
||||||
def sendport(self, port):
|
def sendport(self, host, port):
|
||||||
hostname = socket.gethostname()
|
hbytes = string.splitfields(host, '.')
|
||||||
hostaddr = socket.gethostbyname(hostname)
|
|
||||||
hbytes = string.splitfields(hostaddr, '.')
|
|
||||||
pbytes = [`port/256`, `port%256`]
|
pbytes = [`port/256`, `port%256`]
|
||||||
bytes = hbytes + pbytes
|
bytes = hbytes + pbytes
|
||||||
cmd = 'PORT ' + string.joinfields(bytes, ',')
|
cmd = 'PORT ' + string.joinfields(bytes, ',')
|
||||||
|
@ -213,8 +211,9 @@ class FTP:
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
sock.bind(('', 0))
|
sock.bind(('', 0))
|
||||||
sock.listen(1)
|
sock.listen(1)
|
||||||
host, port = sock.getsockname()
|
dummyhost, port = sock.getsockname() # Get proper port
|
||||||
resp = self.sendport(port)
|
host, dummyport = self.sock.getsockname() # Get proper host
|
||||||
|
resp = self.sendport(host, port)
|
||||||
return sock
|
return sock
|
||||||
|
|
||||||
# Send a port command and a transfer command, accept the connection
|
# Send a port command and a transfer command, accept the connection
|
||||||
|
@ -439,3 +438,7 @@ def test():
|
||||||
ftp.retrbinary('RETR ' + file, \
|
ftp.retrbinary('RETR ' + file, \
|
||||||
sys.stdout.write, 1024)
|
sys.stdout.write, 1024)
|
||||||
ftp.quit()
|
ftp.quit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
test()
|
||||||
|
|
Loading…
Reference in New Issue