From 14c4d5a7127e411e647d7ec7630a0a4ceff2cf5a Mon Sep 17 00:00:00 2001 From: kkk Date: Fri, 1 May 2015 10:43:24 +0800 Subject: [PATCH 1/3] allow client input lowercast commond --- CFtpHandler.cpp | 6 +++++- CFtpHandler.h | 5 ++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CFtpHandler.cpp b/CFtpHandler.cpp index d6556ca..65e6c7e 100644 --- a/CFtpHandler.cpp +++ b/CFtpHandler.cpp @@ -129,7 +129,10 @@ bool CFtpHandler::handleRequest(char *buff) { cout<>command; - + + /* allow client input lowercast commond */ + std::transform(command.begin(), command.end(), command.begin(),::toupper); + bool isClose = false; string msg; //username @@ -282,6 +285,7 @@ bool CFtpHandler::handleRequest(char *buff) { int newFd = getDataSocket(); //send file std::ifstream file((ROOT_PATH+currentPath+fileName).c_str(),std::ifstream::in); + file.seekg(0, std::ifstream::beg); while(file.tellg() != -1) { diff --git a/CFtpHandler.h b/CFtpHandler.h index f0922d2..f3e00f2 100644 --- a/CFtpHandler.h +++ b/CFtpHandler.h @@ -9,23 +9,23 @@ #ifndef __TSFtpServer__CFtpHandler__ #define __TSFtpServer__CFtpHandler__ +#include #include #include #include #include #include +#include #include #include #include -#include #include #include /************************************** * FTP Commond List *************************************/ - #define COMMAND_PORT "PORT" #define COMMAND_PASSIVE "PASV" #define COMMAND_LIST "LIST" @@ -50,7 +50,6 @@ /************************************** * FTP Response Codes *************************************/ - #define TS_FTP_STATUS_READY "220 TS FTP Server ready...\r\n" #define TS_FTP_STATUS_OPEN_DATA_CHANNEL "150 Opening data channel for directory list." From 7a004e6206a2dde4da6a4118c6cb1270dde87c18 Mon Sep 17 00:00:00 2001 From: kkk Date: Fri, 1 May 2015 19:02:02 +0800 Subject: [PATCH 2/3] handle unrecognized command --- CFtpHandler.cpp | 5 ++++- CFtpHandler.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CFtpHandler.cpp b/CFtpHandler.cpp index 65e6c7e..2cf6b75 100644 --- a/CFtpHandler.cpp +++ b/CFtpHandler.cpp @@ -125,7 +125,7 @@ int CFtpHandler::getDataSocket() { bool CFtpHandler::handleRequest(char *buff) { stringstream recvStream; recvStream<>command; @@ -364,6 +364,9 @@ bool CFtpHandler::handleRequest(char *buff) { else if (command == COMMAND_NOOP || command == COMMAND_OPTS){ msg = TS_FTP_STATUS_OK; } + else + msg = TS_FTP_STATUS_CMD_ERROR; + sendResponse(m_connFd, msg); return isClose; diff --git a/CFtpHandler.h b/CFtpHandler.h index f3e00f2..0083261 100644 --- a/CFtpHandler.h +++ b/CFtpHandler.h @@ -71,6 +71,7 @@ #define TS_FTP_STATUS_DELETE "250 DELE command successful." #define TS_FTP_STATUS_CUR_DIR(x) "257 \""+x+"\" is current directory." #define TS_FTP_STATUS_PWD_REQ(x) "331 Password required for "+x +#define TS_FTP_STATUS_CMD_ERROR "500 Syntax error, command unrecognized." #define TS_FTP_STATUS_PWD_ERROR "530 Not logged in,password error." #define TS_FTP_STATUS_FILE_NOT_FOUND "550 File not found" #define TS_FTP_STATUS_CWD_FAILED(x) "550 CWD command failed. \"" +x+ "\": directory not found." From 958ade94efd5f3fa6ec5bbc6bdb9993f4de83f4c Mon Sep 17 00:00:00 2001 From: Veklip <492217330@qq.com> Date: Wed, 13 May 2015 10:39:14 +0800 Subject: [PATCH 3/3] conver raw time format to humman time format --- CFtpHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CFtpHandler.cpp b/CFtpHandler.cpp index 2cf6b75..96a8765 100644 --- a/CFtpHandler.cpp +++ b/CFtpHandler.cpp @@ -262,7 +262,7 @@ bool CFtpHandler::handleRequest(char *buff) { struct tm tm = *gmtime(&s.st_mtime); //list with -l param if (param == "-l") { - stream<d_name<d_name<d_name<