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

Commit 6c54efa

Browse files
authored
Update client.py again(1)
1 parent fe801cd commit 6c54efa

File tree

1 file changed

+45
-10
lines changed

1 file changed

+45
-10
lines changed

proyecto/client.py

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,47 @@ def ftp_client(argvs):
3737
username = argvs.username
3838
password = argvs.password
3939
command = argvs.command
40-
argument = argvs.argument
40+
argument1 = argvs.argument1
41+
argument2 = argvs.argument2
4142
use_tls = argvs.use_tls # Nuevo argumento para usar o no TLS
4243

44+
# Diccionario de delegados para los comandos FTP
45+
command_delegates = {
46+
"USER": lambda: f"USER {argument1}\r\n",
47+
"PASS": lambda: f"PASS {argument1}\r\n",
48+
"ACCT": lambda: f"ACCT {argument1}\r\n",
49+
"CWD": lambda: f"CWD {argument1}\r\n",
50+
"CDUP": lambda: f"CDUP\r\n",
51+
"SMNT": lambda: f"SMNT {argument1}\r\n",
52+
"REIN": lambda: f"REIN\r\n",
53+
"QUIT": lambda: f"QUIT\r\n",
54+
"PORT": lambda: f"PORT {argument1}\r\n",
55+
"PASV": lambda: f"PASV\r\n",
56+
"TYPE": lambda: f"TYPE {argument1}\r\n",
57+
"STRU": lambda: f"STRU {argument1}\r\n",
58+
"MODE": lambda: f"MODE {argument1}\r\n",
59+
"RETR": lambda: f"RETR {argument1}\r\n",
60+
"STOR": lambda: f"STOR {argument1} {argument2}\r\n",
61+
"STOU": lambda: f"STOU\r\n",
62+
"APPE": lambda: f"APPE {argument1}\r\n",
63+
"ALLO": lambda: f"ALLO {argument1}\r\n",
64+
"REST": lambda: f"REST {argument1}\r\n",
65+
"RNFR": lambda: f"RNFR {argument1}\r\n",
66+
"RNTO": lambda: f"RNTO {argument2}\r\n",
67+
"ABOR": lambda: f"ABOR\r\n",
68+
"DELE": lambda: f"DELE {argument1}\r\n",
69+
"RMD": lambda: f"RMD {argument1}\r\n",
70+
"MKD": lambda: f"MKD {argument1}\r\n",
71+
"PWD": lambda: f"PWD\r\n",
72+
"LIST": lambda: f"LIST {argument1}\r\n",
73+
"NLST": lambda: f"NLST {argument1}\r\n",
74+
"SITE": lambda: f"SITE {argument1}\r\n",
75+
"SYST": lambda: f"SYST\r\n",
76+
"STAT": lambda: f"STAT {argument1}\r\n",
77+
"HELP": lambda: f"HELP {argument1}\r\n",
78+
"NOOP": lambda: f"NOOP\r\n",
79+
}
80+
4381
try:
4482
# Conecta al servidor
4583
client_socket = connect_to_server(server, port, use_tls)
@@ -59,12 +97,8 @@ def ftp_client(argvs):
5997
# Verifica si la autenticación fue exitosa
6098
if "230" in pass_response: # Código 230: Usuario autenticado
6199
# Ejecuta el comando solicitado
62-
if command == "DELE":
63-
command_response = send_command(client_socket, f"DELE {argument}\r\n")
64-
elif command == "MKD":
65-
command_response = send_command(client_socket, f"MKD {argument}\r\n")
66-
elif command == "RMD":
67-
command_response = send_command(client_socket, f"RMD {argument}\r\n")
100+
if command in command_delegates:
101+
command_response = send_command(client_socket, command_delegates[command]())
68102
else:
69103
command_response = json.dumps({"status": "500", "message": "Comando no soportado"}, indent=4)
70104

@@ -81,12 +115,13 @@ def ftp_client(argvs):
81115
if __name__ == "__main__":
82116
# Configura el parser de argumentos
83117
parser = argparse.ArgumentParser(description="Cliente FTP en Python")
118+
parser.add_argument("-p", "--port", type=int, default=21, help="Puerto del servidor FTP")
84119
parser.add_argument("-H", "--host", required=True, help="Dirección del servidor FTP")
85-
parser.add_argument("-P", "--port", type=int, default=21, help="Puerto del servidor FTP")
86120
parser.add_argument("-u", "--username", required=True, help="Nombre de usuario")
87121
parser.add_argument("-w", "--password", required=True, help="Contraseña")
88-
parser.add_argument("-c", "--command", required=True, help="Comando a ejecutar (DELE, MKD, RMD)")
89-
parser.add_argument("-a", "--argument", required=True, help="Argumento del comando")
122+
parser.add_argument("-c", "--command", required=True, help="Comando a ejecutar")
123+
parser.add_argument("-a", "--argument1", required=False, help="Primer argumento del comando")
124+
parser.add_argument("-b", "--argument2", required=False, help="Segundo argumento del comando")
90125
parser.add_argument("--use_tls", action="store_true", help="Usar TLS/SSL para la conexión")
91126

92127
# Parsea los argumentos

0 commit comments

Comments
 (0)