update ftpserver
This commit is contained in:
parent
4295885cee
commit
1f57b5e6b8
|
@ -65,10 +65,7 @@ int CheckPassword(int it) {
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
void StartDataConnection(int data_fd,struct sockaddr_in client_addr)
|
||||
{
|
||||
|
||||
}
|
||||
void *CreateDataSockt(void *arg) {
|
||||
|
||||
int *data = arg;
|
||||
|
@ -102,7 +99,6 @@ void *CreateDataSockt(void *arg) {
|
|||
|
||||
fd_map[cmd_fd] = data_fd;
|
||||
|
||||
StartDataConnection(data_fd, client_addr);
|
||||
|
||||
}
|
||||
close(fd);
|
||||
|
@ -113,6 +109,7 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) {
|
|||
char * cmd = malloc(100);
|
||||
char * data = malloc(100);
|
||||
char* respond = malloc(100);
|
||||
//debug
|
||||
printf("%s\n", buf);
|
||||
sscanf(buf, "%s %s", cmd, data);
|
||||
if(strcmp(cmd,"USER")==0){
|
||||
|
@ -157,18 +154,20 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) {
|
|||
sprintf(respond, "550 failed to open file\n");
|
||||
}
|
||||
|
||||
fseek(file, 0, SEEK_END);
|
||||
long file_size = ftell(file);
|
||||
fseek(file, 0, SEEK_SET);
|
||||
long file_size = 5000;
|
||||
|
||||
char* start = "150 starting data transfer\n";
|
||||
write(cmd_fd, start, strlen(start));
|
||||
char* buff = (char*)malloc(file_size);
|
||||
|
||||
fread(buf, 1, file_size, file);
|
||||
fread(buff, 1, file_size, file);
|
||||
int size = write(fd_map[cmd_fd], buff, strlen(buff));
|
||||
if (size < 0) {
|
||||
printf("failed to send message\n");
|
||||
}
|
||||
|
||||
char* end = "226 Operation successfull";
|
||||
write(cmd_fd, end, strlen(end));
|
||||
|
||||
fclose(file);
|
||||
free(buff);
|
||||
free(dir);
|
||||
|
@ -180,13 +179,16 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) {
|
|||
if (file == NULL) {
|
||||
sprintf(respond, "550 failed to open file\n");
|
||||
}
|
||||
|
||||
char* start = "150 starting data transfer\n";
|
||||
write(cmd_fd, start, strlen(start));
|
||||
char* buff = (char*)malloc(5000);
|
||||
|
||||
int size = read(fd_map[cmd_fd], buff, 5000);
|
||||
while (size < 0) {
|
||||
size = read(fd_map[cmd_fd], buff, 5000);
|
||||
}
|
||||
char* end = "226 Operation successfull";
|
||||
write(cmd_fd, end, strlen(end));
|
||||
fwrite(buff, 1, strlen(buff), file);
|
||||
|
||||
fclose(file);
|
||||
|
@ -197,6 +199,9 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) {
|
|||
sprintf(respond, "221 connection close");
|
||||
*ret = 221;
|
||||
}
|
||||
else if (strcmp(cmd, "TYPE") == 0) {
|
||||
sprintf(respond, "200 Type set to I");
|
||||
}
|
||||
else {
|
||||
respond = "500 syntax error\n";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue