Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit a8a27ff

Browse files
committed
cmd_PASV bugfix
1 parent b5157fd commit a8a27ff

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

client/client.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -452,31 +452,25 @@ def cmd_PORT(socket, *args):
452452

453453
def cmd_PASV(socket, *args):
454454
"""Envía el comando PASV al servidor FTP para establecer el modo pasivo (el servidor escucha conexiones y el cliente la inicia)."""
455-
args_len = len(args)
456-
response = argument_handler(0,0,args_len)
457-
if response == "200":
458-
try:
459-
response = send(socket, 'PASV')
460-
# Extraer la dirección IP y el puerto del servidor
461-
print(response)
462-
match = re.search(r'(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)', response)
463-
if match:
464-
ip_parts = [int(x) for x in match.groups()[:4]]
465-
port = int(match.group(5)) * 256 + int(match.group(6))
466-
data_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
467-
data_socket.connect((socket.inet_ntoa(bytes(ip_parts)), port))
468-
print('225: Conexión establecida, sin transferencia en proceso.')
469-
PASV_MODE = 1
470-
return data_socket
471-
else:
472-
print('425: No se ha podido establecer una conexión de transferencia de datos con el Host.')
473-
return None
474-
except Exception as e:
475-
print(f'No se pudo establecer el modo pasivo: {e}')
476-
return None
477-
else:
455+
try:
456+
response = send(socket, 'PASV')
457+
# Extraer la dirección IP y el puerto del servidor
478458
print(response)
479-
return None
459+
match = re.search(r'(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)', response)
460+
if match:
461+
ip_parts = [int(x) for x in match.groups()[:4]]
462+
port = int(match.group(5)) * 256 + int(match.group(6))
463+
data_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
464+
data_socket.connect((socket.inet_ntoa(bytes(ip_parts)), port))
465+
print('225: Conexión establecida, sin transferencia en proceso.')
466+
PASV_MODE = 1
467+
return data_socket
468+
else:
469+
print('425: No se ha podido establecer una conexión de transferencia de datos con el Host.')
470+
return None
471+
except Exception as e:
472+
print(f'No se pudo establecer el modo pasivo: {e}')
473+
return None
480474

481475
# Información del sistema:
482476
def cmd_SYST(socket, *args):

0 commit comments

Comments
 (0)