Added and reworked a few methods in the WEBServer and FTPServer class
This commit is contained in:
parent
8e655ed8fe
commit
59be94afb9
@ -16,18 +16,18 @@ class FTPServer : public TCPServer<T>
|
||||
enum FTPClientDataTransfer {NONE = 0, LIST_DF, NLST_DF, RETR_DF, STOR_DF, APPE_DF};
|
||||
enum FileTransferStatus {OK, NOT_FOUND, NO_FILE_NAME, MALLOC_ERROR};
|
||||
enum BinaryFlag {OFF = 0, ON};
|
||||
enum FTPMsgCode {_150, _200, _215, _220, _221, _230, _226, _227, _250, _257, _331, _350, _451, _5_502, _504, _530, _550 };
|
||||
enum FTPMsgCode {_150, _200, _215, _220, _221, _230, _226, _227, _250, _257, _331, _350, _451, _502, _504, _530, _550 };
|
||||
|
||||
FTPServer(uint16_t port = 21, SDClass *sdClass = NULL, const char *login = NULL, const char *password = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientCommandDataBufferSize = 255) : TCPServer<T>(port, maxClient, clientCommandDataBufferSize),
|
||||
FTPServer(uint16_t port = 21, SDClass *sdClass = NULL, const char *username = NULL, const char *password = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientCommandDataBufferSize = 255) : TCPServer<T>(port, maxClient, clientCommandDataBufferSize),
|
||||
_dataServer(_dataPort),
|
||||
_sdClass(sdClass)
|
||||
{
|
||||
if (login != NULL)
|
||||
if (username != NULL)
|
||||
{
|
||||
if (strlen(login))
|
||||
if (strlen(username))
|
||||
{
|
||||
_login = (char *)malloc((sizeof(char) * strlen(login)) + 1);
|
||||
strcpy(_login, login);
|
||||
_username = (char *)malloc((sizeof(char) * strlen(username)) + 1);
|
||||
strcpy(_username, username);
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ class FTPServer : public TCPServer<T>
|
||||
virtual ~FTPServer()
|
||||
{
|
||||
_dataServer.stop();
|
||||
free(_login); free(_password); free(_FTPDir);
|
||||
free(_username); free(_password); free(_FTPDir);
|
||||
}
|
||||
|
||||
virtual void stop()
|
||||
@ -68,9 +68,53 @@ class FTPServer : public TCPServer<T>
|
||||
{
|
||||
free(_FTPDir);
|
||||
_FTPDir = (char *)malloc((strlen(FTPDir) * sizeof(char)) + 1);
|
||||
if(_FTPDir)
|
||||
{
|
||||
strcpy(_FTPDir, FTPDir);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
free(_FTPDir);
|
||||
_FTPDir = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void setUsername(const char *username)
|
||||
{
|
||||
if(username)
|
||||
{
|
||||
free(_username);
|
||||
_username = (char *)malloc((strlen(username) * sizeof(char)) + 1);
|
||||
if(_username)
|
||||
{
|
||||
strcpy(_username, username);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
free(_username);
|
||||
_username = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void setPassword(const char *password)
|
||||
{
|
||||
if(password)
|
||||
{
|
||||
free(_password);
|
||||
_password = (char *)malloc((strlen(password) * sizeof(char)) + 1);
|
||||
if(_password)
|
||||
{
|
||||
strcpy(_password, password);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
free(_password);
|
||||
_password = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual T* createNewClient(WiFiClient wc)
|
||||
@ -334,7 +378,7 @@ class FTPServer : public TCPServer<T>
|
||||
if (strcmp(client->_ftpCommand, "USER") == 0)
|
||||
{
|
||||
//We check if we set a login and a password :
|
||||
if (_login != NULL && _password != NULL)
|
||||
if (_username != NULL && _password != NULL)
|
||||
{
|
||||
if (client->_cmdParameters->count() > 0)
|
||||
{
|
||||
@ -355,7 +399,7 @@ class FTPServer : public TCPServer<T>
|
||||
//We now check if the username and password correspond
|
||||
if (client->_cmdParameters->count() > 0)
|
||||
{
|
||||
if (strcmp(_login, client->_username) == 0 && strcmp(_password, client->_cmdParameters->getAt(0)->getString()) == 0)
|
||||
if (strcmp(_username, client->_username) == 0 && strcmp(_password, client->_cmdParameters->getAt(0)->getString()) == 0)
|
||||
{
|
||||
client->_loggedIn = true;
|
||||
client->_client.println("230 User logged in, proceed.");
|
||||
@ -792,7 +836,7 @@ class FTPServer : public TCPServer<T>
|
||||
}*/
|
||||
else
|
||||
{
|
||||
client->_client.println("502 Command not implemented.");
|
||||
sendInfoResponse(_502, client);
|
||||
#ifdef DEBUG_FTPS
|
||||
Serial.println("Command not implemented");
|
||||
#endif
|
||||
@ -1015,7 +1059,10 @@ class FTPServer : public TCPServer<T>
|
||||
client->_client.printf_P(PSTR("200 Command okay. %s\r\n"), msg);
|
||||
break;
|
||||
case _221:
|
||||
client->_client.printf_P(PSTR("221 Service closing control connection. %s\r\n"));
|
||||
client->_client.printf_P(PSTR("221 Service closing control connection. %s\r\n"), msg);
|
||||
break;
|
||||
case _502:
|
||||
client->_client.printf_P(PSTR("502 Command not implemented. %s\r\n"), msg);
|
||||
break;
|
||||
case _530:
|
||||
client->_client.printf_P(PSTR("530 Password required. %s\r\n"), msg);
|
||||
@ -1028,7 +1075,7 @@ class FTPServer : public TCPServer<T>
|
||||
}
|
||||
}
|
||||
|
||||
char *_login = nullptr;
|
||||
char *_username = nullptr;
|
||||
char *_password = nullptr;
|
||||
char *_FTPDir = nullptr;
|
||||
uint16_t _dataPort = 1024;
|
||||
|
@ -80,12 +80,17 @@ class WEBServer : public TCPServer<T>, public HttpConstants
|
||||
|
||||
void setWWWDir(const char *WWWDir)
|
||||
{
|
||||
if(WWWDir != nullptr)
|
||||
if(WWWDir)
|
||||
{
|
||||
free(_WWWDir);
|
||||
_WWWDir = (char *)malloc((strlen(WWWDir) * sizeof(char)) + 1);
|
||||
strcpy(_WWWDir, WWWDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(_WWWDir);
|
||||
_WWWDir = nullptr;
|
||||
}
|
||||
}
|
||||
protected:
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user