norme
This commit is contained in:
parent
c3069f5743
commit
a20a644697
20 changed files with 208 additions and 79 deletions
14
ftp/Makefile
14
ftp/Makefile
|
|
@ -34,21 +34,21 @@ SERVER_OBJ = $(OBJ_DIR)server.o
|
||||||
CLIENT_OBJ = $(OBJ_DIR)client.o $(OBJ_DIR)cli_do_help.o
|
CLIENT_OBJ = $(OBJ_DIR)client.o $(OBJ_DIR)cli_do_help.o
|
||||||
|
|
||||||
SRC_BASE = \
|
SRC_BASE = \
|
||||||
client.c\
|
|
||||||
cli_do_sh.c\
|
|
||||||
cli_do_cd.c\
|
cli_do_cd.c\
|
||||||
cli_do_get.c\
|
|
||||||
cli_do_put.c\
|
|
||||||
cli_do_help.c\
|
|
||||||
cli_do_debug.c\
|
cli_do_debug.c\
|
||||||
|
cli_do_get.c\
|
||||||
|
cli_do_help.c\
|
||||||
cli_do_local.c\
|
cli_do_local.c\
|
||||||
read_req.c\
|
cli_do_put.c\
|
||||||
|
cli_do_sh.c\
|
||||||
|
client.c\
|
||||||
console_msg.c\
|
console_msg.c\
|
||||||
|
read_req.c\
|
||||||
req_init.c\
|
req_init.c\
|
||||||
|
serv_do_cd.c\
|
||||||
serv_do_get.c\
|
serv_do_get.c\
|
||||||
serv_do_put.c\
|
serv_do_put.c\
|
||||||
serv_do_sh.c\
|
serv_do_sh.c\
|
||||||
serv_do_cd.c\
|
|
||||||
server.c
|
server.c
|
||||||
|
|
||||||
SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE))
|
SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE))
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,2 @@
|
||||||
# ftp
|
# ftp
|
||||||
:open_file_folder: ftp server and client
|
:open_file_folder: ftp-like server and client
|
||||||
|
|
||||||
:warning: This client/server doesn't conform to any RFC. please email me a tutorial if you have one because that RFC pdf is chinese to me.
|
|
||||||
|
|
||||||
# todo
|
|
||||||
|
|
||||||
conform to this https://www.rfc-editor.org/rfc/pdfrfc/rfc959.txt.pdf
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit dd612f58c973b6fe9d825557bfa0f62df1e237ef
|
Subproject commit d57369fd0a0bf6d5c2a78bad1961e4cd56e1c9e4
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_cd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:02:04 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:02:04 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_cd(int sock, char **av)
|
int cli_do_cd(int sock, char **av)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_debug.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:02:43 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:02:44 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int g_debug;
|
int g_debug;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_get.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:02:48 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:03:12 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_get(int sock, char **av)
|
int cli_do_get(int sock, char **av)
|
||||||
|
|
@ -10,22 +22,17 @@ int cli_do_get(int sock, char **av)
|
||||||
if (req_init(sock, REQUEST_FILE))
|
if (req_init(sock, REQUEST_FILE))
|
||||||
return (1);
|
return (1);
|
||||||
write(sock, av[1], ft_strlen(av[1]));
|
write(sock, av[1], ft_strlen(av[1]));
|
||||||
|
|
||||||
rep = read_req(sock);
|
rep = read_req(sock);
|
||||||
if (rep != FILENAME_OK)
|
if (rep != FILENAME_OK)
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
rep = htons(TRANSFER_START);
|
rep = htons(TRANSFER_START);
|
||||||
if ((fd = open_new(av[1], O_WRONLY | O_TRUNC | O_APPEND)) < 0)
|
if ((fd = open_new(av[1], O_WRONLY | O_TRUNC | O_APPEND)) < 0)
|
||||||
rep = htons(ABORT);
|
rep = htons(ABORT);
|
||||||
write(sock, (char*)&rep, sizeof(rep));
|
write(sock, (char*)&rep, sizeof(rep));
|
||||||
|
|
||||||
if (rep != htons(TRANSFER_START))
|
if (rep != htons(TRANSFER_START))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
console_msg(1, "TRANSFER_START");
|
console_msg(1, "TRANSFER_START");
|
||||||
net_get_large(sock, fd);
|
net_get_large(sock, fd);
|
||||||
console_msg(1, "TRANSFER DONE");
|
console_msg(1, "TRANSFER DONE");
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_help.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:02:38 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:02:39 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_help(int sock, char **av)
|
int cli_do_help(int sock, char **av)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,16 @@
|
||||||
#include "ft_p.h"
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_local.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:02:12 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:02:35 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
char **environ;
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_local(int sock, char **av)
|
int cli_do_local(int sock, char **av)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_put.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:04:23 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:05:21 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_put(int sock, char **av)
|
int cli_do_put(int sock, char **av)
|
||||||
|
|
@ -16,16 +28,12 @@ int cli_do_put(int sock, char **av)
|
||||||
else if ((file = mmap(NULL, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0))
|
else if ((file = mmap(NULL, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0))
|
||||||
== MAP_FAILED)
|
== MAP_FAILED)
|
||||||
return (console_msg(-1, "mmap error"));
|
return (console_msg(-1, "mmap error"));
|
||||||
|
|
||||||
if (req_init(sock, REQUEST_PUT))
|
if (req_init(sock, REQUEST_PUT))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
write(sock, av[1], ft_strlen(av[1]));
|
write(sock, av[1], ft_strlen(av[1]));
|
||||||
|
|
||||||
req = read_req(sock);
|
req = read_req(sock);
|
||||||
if (req != TRANSFER_START)
|
if (req != TRANSFER_START)
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
net_send_large(sock, file, stat.st_size);
|
net_send_large(sock, file, stat.st_size);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* cli_do_sh.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:05:34 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:06:32 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int cli_do_sh(int sock, char **av)
|
int cli_do_sh(int sock, char **av)
|
||||||
|
|
@ -7,13 +19,10 @@ int cli_do_sh(int sock, char **av)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
command = ft_strsepjoin(av, ' ');
|
command = ft_strsepjoin(av, ' ');
|
||||||
|
|
||||||
if (req_init(sock, REQUEST_SH))
|
if (req_init(sock, REQUEST_SH))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
console_msg(1, "sending '%s' to server", command);
|
console_msg(1, "sending '%s' to server", command);
|
||||||
write(sock, command, ft_strlen(command));
|
write(sock, command, ft_strlen(command));
|
||||||
|
|
||||||
while ((ret = read(sock, &buf, MAXLINE)))
|
while ((ret = read(sock, &buf, MAXLINE)))
|
||||||
{
|
{
|
||||||
buf[ret] = 0;
|
buf[ret] = 0;
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
#include "ft_p.h"
|
|
||||||
|
|
||||||
int read_req()
|
|
||||||
{
|
|
||||||
int req;
|
|
||||||
|
|
||||||
if (read(sock, (char*)&req, sizeof(req)) < 0)
|
|
||||||
return(1);
|
|
||||||
console_msg(0, "%i RECEIVED", req);
|
|
||||||
return (req);
|
|
||||||
}
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/04/02 19:18:31 by jhalford #+# #+# */
|
/* Created: 2017/04/02 19:18:31 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/04/03 18:43:40 by jhalford ### ########.fr */
|
/* Updated: 2017/10/08 12:25:25 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* console_msg.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:05:23 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:05:24 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int g_debug;
|
int g_debug;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* read_req.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:04:11 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:06:53 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int read_req(int sock)
|
int read_req(int sock)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* req_init.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:07:00 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:07:01 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int req_init(int sock, int req)
|
int req_init(int sock, int req)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* serv_do_cd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:08:05 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:08:41 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
char g_rootdir[PATH_MAX];
|
char g_rootdir[PATH_MAX];
|
||||||
|
|
@ -12,22 +24,16 @@ int serv_do_cd(int sock)
|
||||||
if ((ret = read(sock, path, MAXLINE)) < 0)
|
if ((ret = read(sock, path, MAXLINE)) < 0)
|
||||||
return (CMD_FAIL);
|
return (CMD_FAIL);
|
||||||
path[ret] = 0;
|
path[ret] = 0;
|
||||||
|
|
||||||
DG("received 'cd %s' command", path);
|
DG("received 'cd %s' command", path);
|
||||||
|
|
||||||
ok = NULL;
|
ok = NULL;
|
||||||
if (!(abspath = realpath(path, ok)))
|
if (!(abspath = realpath(path, ok)))
|
||||||
return (CD_DIR_NOT_FOUND);
|
return (CD_DIR_NOT_FOUND);
|
||||||
|
|
||||||
ft_strcpy(path, abspath);
|
ft_strcpy(path, abspath);
|
||||||
if (!*abspath)
|
if (!*abspath)
|
||||||
return (CD_DIR_NOT_FOUND);
|
return (CD_DIR_NOT_FOUND);
|
||||||
|
|
||||||
ft_strdel(&abspath);
|
ft_strdel(&abspath);
|
||||||
|
|
||||||
DG("absolute path is '%s'", path);
|
DG("absolute path is '%s'", path);
|
||||||
DG("root dir is '%s'", g_rootdir);
|
DG("root dir is '%s'", g_rootdir);
|
||||||
|
|
||||||
if (!ft_strstr(path, g_rootdir))
|
if (!ft_strstr(path, g_rootdir))
|
||||||
return (CD_RESTRICTED_DIR);
|
return (CD_RESTRICTED_DIR);
|
||||||
return (chdir(path) ? CMD_FAIL : CMD_SUCCESS);
|
return (chdir(path) ? CMD_FAIL : CMD_SUCCESS);
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,53 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* serv_do_get.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:09:37 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:25:05 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int serv_do_get(int sock)
|
int serv_get_fname(int sock, char **file, struct stat *stat)
|
||||||
{
|
{
|
||||||
char fname[MAXLINE];
|
|
||||||
int req;
|
|
||||||
int rep;
|
int rep;
|
||||||
int fd;
|
int fd;
|
||||||
struct stat stat;
|
char fname[MAXLINE];
|
||||||
char *file;
|
|
||||||
|
|
||||||
ft_bzero(&fname, MAXLINE);
|
ft_bzero(&fname, MAXLINE);
|
||||||
rep = htons(FILENAME_OK);
|
rep = htons(FILENAME_OK);
|
||||||
file = NULL;
|
|
||||||
if (read(sock, fname, MAXLINE) < 0)
|
if (read(sock, fname, MAXLINE) < 0)
|
||||||
rep = htons(ERR_READ);
|
rep = htons(ERR_READ);
|
||||||
else if ((fd = open(fname, O_RDONLY)) < 0)
|
else if ((fd = open(fname, O_RDONLY)) < 0)
|
||||||
rep = htons(NO_SUCH_FILE);
|
rep = htons(NO_SUCH_FILE);
|
||||||
else if ((fstat(fd, &stat)) < 0)
|
else if ((fstat(fd, stat)) < 0)
|
||||||
rep = htons(ERR_STAT);
|
rep = htons(ERR_STAT);
|
||||||
else if ((file = mmap(NULL, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0))
|
else if ((*file = mmap(NULL, stat->st_size, PROT_READ, MAP_PRIVATE, fd, 0))
|
||||||
== MAP_FAILED)
|
== MAP_FAILED)
|
||||||
rep = htons(ERR_MMAP);
|
rep = htons(ERR_MMAP);
|
||||||
write(sock, (char*)&rep, sizeof(rep));
|
write(sock, (char*)&rep, sizeof(rep));
|
||||||
|
return (rep);
|
||||||
|
}
|
||||||
|
|
||||||
if (ntohs(rep) != FILENAME_OK)
|
int serv_do_get(int sock)
|
||||||
|
{
|
||||||
|
int req;
|
||||||
|
struct stat stat;
|
||||||
|
char *file;
|
||||||
|
|
||||||
|
file = NULL;
|
||||||
|
if (serv_get_fname(sock, &file, &stat))
|
||||||
return (CMD_FAIL);
|
return (CMD_FAIL);
|
||||||
|
|
||||||
DG("GOING TO READ_REQ");
|
DG("GOING TO READ_REQ");
|
||||||
req = read_req(sock);
|
req = read_req(sock);
|
||||||
if (req != TRANSFER_START)
|
if (req != TRANSFER_START)
|
||||||
return (CMD_FAIL);
|
return (CMD_FAIL);
|
||||||
|
|
||||||
net_send_large(sock, file, stat.st_size);
|
net_send_large(sock, file, stat.st_size);
|
||||||
|
if (file)
|
||||||
if (file && munmap(file, stat.st_size) < 0)
|
munmap(file, stat.st_size);
|
||||||
rep = htons(ERR_MMAP);
|
|
||||||
return (CMD_SUCCESS);
|
return (CMD_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* serv_do_put.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:07:11 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:07:55 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int serv_do_put(int sock)
|
int serv_do_put(int sock)
|
||||||
|
|
@ -7,17 +19,14 @@ int serv_do_put(int sock)
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
ft_bzero(&fname, MAXLINE);
|
ft_bzero(&fname, MAXLINE);
|
||||||
|
|
||||||
rep = htons(TRANSFER_START);
|
rep = htons(TRANSFER_START);
|
||||||
if (read(sock, fname, MAXLINE) < 0)
|
if (read(sock, fname, MAXLINE) < 0)
|
||||||
rep = htons(ABORT);
|
rep = htons(ABORT);
|
||||||
else if ((fd = open_new(fname, O_WRONLY | O_TRUNC | O_APPEND)) < 0)
|
else if ((fd = open_new(fname, O_WRONLY | O_TRUNC | O_APPEND)) < 0)
|
||||||
rep = htons(ABORT);
|
rep = htons(ABORT);
|
||||||
|
|
||||||
write(sock, (char*)&rep, sizeof(rep));
|
write(sock, (char*)&rep, sizeof(rep));
|
||||||
if (rep != htons(TRANSFER_START))
|
if (rep != htons(TRANSFER_START))
|
||||||
return (CMD_FAIL);
|
return (CMD_FAIL);
|
||||||
|
|
||||||
net_get_large(sock, fd);
|
net_get_large(sock, fd);
|
||||||
return (CMD_SUCCESS);
|
return (CMD_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* serv_do_sh.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/10/08 12:08:49 by jhalford #+# #+# */
|
||||||
|
/* Updated: 2017/10/08 12:10:22 by jhalford ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "ft_p.h"
|
#include "ft_p.h"
|
||||||
|
|
||||||
int serv_do_sh(int sock)
|
int serv_do_sh(int sock)
|
||||||
|
|
@ -20,4 +32,3 @@ int serv_do_sh(int sock)
|
||||||
DG("finished waiting for command");
|
DG("finished waiting for command");
|
||||||
return (CMD_SUCCESS);
|
return (CMD_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/04/02 15:02:48 by jhalford #+# #+# */
|
/* Created: 2017/04/02 15:02:48 by jhalford #+# #+# */
|
||||||
/* Updated: 2017/04/03 16:42:49 by jhalford ### ########.fr */
|
/* Updated: 2017/10/08 12:25:44 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue