From cd99c04ca5413fdcd1870e508f74880ef73164ff Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Mon, 30 Oct 2017 00:27:41 +0100 Subject: [PATCH] stuff --- ftp/includes/ft_p.h | 5 +++++ ftp/libft/includes/error.h | 2 +- ftp/srcs/read_req.c | 34 +++++++++++++++++++++++++++------- ftp/srcs/server.c | 29 +++++++++++++++++++++++------ 4 files changed, 56 insertions(+), 14 deletions(-) diff --git a/ftp/includes/ft_p.h b/ftp/includes/ft_p.h index b5f55ebc..d344ae79 100644 --- a/ftp/includes/ft_p.h +++ b/ftp/includes/ft_p.h @@ -27,6 +27,8 @@ # include # include +# include + typedef struct s_cmd_map t_cmd_map; struct s_cmd_map @@ -67,6 +69,9 @@ int ftp_daemon(int sock); int ftp_spawn(int sock); int ftp_cmd(int sock, int req); +int ftp_send(int sock, char *msg, size_t size); +int ftp_recv(int sock, char buf[], size_t size); + int serv_do_get(int sock); int serv_do_put(int sock); int serv_do_sh(int sock); diff --git a/ftp/libft/includes/error.h b/ftp/libft/includes/error.h index 3780ad8f..7532026c 100644 --- a/ftp/libft/includes/error.h +++ b/ftp/libft/includes/error.h @@ -21,7 +21,7 @@ */ # define DG_MSG "{inv}{ran}%5i{yel}%21s {bol}{blu}%-3d{eoc}" # define DG_ARGS getpid(), getpid(), ft_path_notdir(__FILE__), __LINE__ -# define DG(s, ...) ft_dprintf(STDBUG,DG_MSG s "{eoc}\n",DG_ARGS,##__VA_ARGS__) +# define DG(s, ...) ft_dprintf(STDERR,DG_MSG s "{eoc}\n",DG_ARGS,##__VA_ARGS__) /* ** DEBUG with no malloc diff --git a/ftp/srcs/read_req.c b/ftp/srcs/read_req.c index 36f57cc6..bb5c6c26 100644 --- a/ftp/srcs/read_req.c +++ b/ftp/srcs/read_req.c @@ -14,11 +14,31 @@ int read_req(int sock) { - int req; - - if (read(sock, (char*)&req, sizeof(req)) < 0) - return (0); - req = ntohs(req); - console_msg(0, "%i RECEIVED", req); - return (req); + (void)sock; + return (0); +} + +int ftp_recv(int sock, char buf[], size_t size) +{ + int ret; + + if ((ret = recv(sock, buf, size, 0)) < 0) + return (0); + if (ret >= 2) + buf[ret - 2] = 0; + else + buf[ret] = 0; + /* req = ntohs(req); */ + console_msg(0, "%-5i<--- %s (%i)", getpid(), buf, ret); + return (0); +} + +int ftp_send(int sock, char *msg, size_t size) +{ + int err; + if ((err = send(sock, msg, size, 0)) < 0) + return (err); + msg[ft_strlen(msg) - 1] = 0; + console_msg(0, "%-5i---> %s", getpid(), msg); + return (0); } diff --git a/ftp/srcs/server.c b/ftp/srcs/server.c index 520d4267..827a1e58 100644 --- a/ftp/srcs/server.c +++ b/ftp/srcs/server.c @@ -50,18 +50,35 @@ int ftp_cmd(int sock, int req) return (1); } +int ftp_login(int sock) +{ + char buf[100]; + + ftp_send(sock, "220 \r\n", 6); + ftp_recv(sock, buf, sizeof(buf)); + if (ft_strncmp(buf, "USER ", 5) != 0) + console_msg(0, "expected USER"); + if (ft_strncmp(buf + 5, "jack", 4) != 0) + console_msg(0, "wrong user"); + DG("sending 331"); + ftp_send(sock, "331 \r\n", 6); + ftp_recv(sock, buf, sizeof(buf)); + return (0); +} + int ftp_spawn(int sock) { int req; - DG("new connection"); - while ((req = read_req(sock))) + ftp_login(sock); + while (1) { - DG("==== %i NEW REQUEST ====", req); - ftp_cmd(sock, req); - DG("==== DONE ===="); + break ; + (void)req; + /* DG("==== %i NEW REQUEST ====", req); */ + /* ftp_cmd(sock, req); */ + /* DG("==== DONE ===="); */ } - DG("end of connection"); close(sock); return (0); }