diff --git a/ftp/includes/ftp_server.h b/ftp/includes/ftp_server.h index b7264524..47e12ad6 100644 --- a/ftp/includes/ftp_server.h +++ b/ftp/includes/ftp_server.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/11/01 15:56:59 by jhalford #+# #+# */ -/* Updated: 2017/11/01 19:23:02 by jhalford ### ########.fr */ +/* Updated: 2017/11/01 20:44:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,10 @@ # include "ftp.h" # define FTP_SERVER_USAGE "%s " +# define ftp_ret(ftp, ...) ftp_send(ftp->cmd_sock, ##__VA_ARGS__) +# define ftp_data(ftp, ...) ftp_sendto(ftp->data_sock, \ + (struct sockaddr*)&ftp->data_sin, sizeof(ftp->data_sock), ##__VA_ARGS__) + typedef struct s_ftp t_ftp; typedef struct s_ftp_cmd t_ftp_cmd; @@ -46,7 +50,8 @@ extern char **g_av; extern int g_debug; extern char g_rootdir[PATH_MAX]; -int ftp_send(t_ftp *ftp, char *msg, ...); +int ftp_send(int sock, char *msg, ...); +int ftp_sendto(int sock, struct sockaddr *s, size_t size, char *msg, ...); int ftp_recv(t_ftp *ftp, char **msg); int console_msg(int level, char *str, ...); diff --git a/ftp/srcs/crlf.c b/ftp/srcs/crlf.c index 10296b0b..a50a5494 100644 --- a/ftp/srcs/crlf.c +++ b/ftp/srcs/crlf.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/10/08 12:04:11 by jhalford #+# #+# */ -/* Updated: 2017/11/01 19:30:16 by jhalford ### ########.fr */ +/* Updated: 2017/11/01 21:05:34 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,8 +37,25 @@ int ftp_recv(t_ftp *ftp, char **msg) return (0); } -#define ftp_ret(ftp, ...) ftp_send(ftp->cmd_sock, ##VA_ARGS) -#define ftp_data(ftp, ...) ftp_send(ftp->data_sock, ##VA_ARGS) +int ftp_sendto(int sock, struct sockaddr *s, size_t size, char *msg, ...) +{ + int err; + char *crlf_tmp; + char *crlf_msg; + va_list ap; + + va_start(ap, msg); + ft_vasprintf(&crlf_tmp, msg, ap); + crlf_msg = ft_strjoin(crlf_tmp, "\r\n"); + if ((err = sendto(sock, crlf_msg, ft_strlen(crlf_msg), 0, s, size)) < 0) + { + return (err); + } + console_msg(1, "%-5i---> %s", getpid(), crlf_tmp); + ft_strdel(&crlf_tmp); + ft_strdel(&crlf_msg); + return (ft_atoi(msg)); +} int ftp_send(int sock, char *msg, ...) { @@ -50,7 +67,7 @@ int ftp_send(int sock, char *msg, ...) va_start(ap, msg); ft_vasprintf(&crlf_tmp, msg, ap); crlf_msg = ft_strjoin(crlf_tmp, "\r\n"); - if ((err = send(ftp->cmd_sock, crlf_msg, ft_strlen(crlf_msg), 0)) < 0) + if ((err = send(sock, crlf_msg, ft_strlen(crlf_msg), 0)) < 0) { return (err); } diff --git a/ftp/srcs/login.c b/ftp/srcs/login.c index 0dbb58c6..58a405a4 100644 --- a/ftp/srcs/login.c +++ b/ftp/srcs/login.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/11/01 17:15:12 by jhalford #+# #+# */ -/* Updated: 2017/11/01 19:11:08 by jhalford ### ########.fr */ +/* Updated: 2017/11/01 21:06:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,19 +17,18 @@ int ftp_login(t_ftp *ftp) char *msg; chdir("data"); - if (ftp_send(ftp, "220 ready for user")) - console_msg(0, "send failed !"); + ftp_ret(ftp, "220 ready for user"); ftp_recv(ftp, &msg); - ftp_send(ftp, "230 user logged in, proceed"); + ftp_ret(ftp, "230 user logged in, proceed"); return (0); if (ft_strncmp(msg, "USER ", 5) != 0) console_msg(0, "expected USER"); if (ft_strncmp(msg + 5, "jack", 4) != 0) - ftp_send(ftp, "530 user not logged in"); + ftp_ret(ftp, "530 user not logged in"); else - ftp_send(ftp, "331 user name ok, send passwd"); + ftp_ret(ftp, "331 user name ok, send passwd"); ftp_recv(ftp, &msg); return (0); }