I'm trying to set up an fpt server on my esp32 using this library.
My Filezilla is using unsecure with max 1 connection as per various instructions for this type of connection.
My code is as follows
#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <WiFi.h>
#include "FS.h"
#include "ESP-FTP-Server-Lib.h"
#include "FTPFilesystem.h"
#define FTP_USER "ftp"
#define FTP_PASSWORD "ftp"
FTPServer ftp;
void WiFiSetup();
void SDCardSetup();
void wifiReconnect();
void ftpSetup();
// Wi-Fi Credentials
const char* ssid = "The Internet";
const char* password = "password";
// SC Card
const int chipSelect = 5; // SPI SS Pin (5 is default on esp32)
void setup()
{
Serial.begin(115200);
WiFiSetup();
SDCardSetup();
ftpSetup();
Serial.println("\n***Setup Complete***\n");
}
//=================================================================================================
void loop()
{
ftp.handle();
}
//=================================================================================================
void WiFiSetup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi..");
delay(2000);
if ((WiFi.status() == WL_CONNECTED))
{
Serial.println("...Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
delay(500);
}
else
{
Serial.println("...Can't connect to WiFi!");
}
}
//-------------------------------------------------------------------------------------------------
void SDCardSetup()
{
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect))
{
Serial.println("initialization failed!");
while (1)
;
}
Serial.println("initialization complete.");
}
//-------------------------------------------------------------------------------------------------
void ftpSetup()
{
ftp.addUser(FTP_USER, FTP_PASSWORD);
ftp.addFilesystem("SD", &SD);
if (ftp.begin())
{
Serial.println("FTP Setup Complete");
}
else
{
Serial.println("FTP Setup failed");
}
}
//-------------------------------------------------------------------------------------------------
The code compiles fine and runs. When I'm trying to connect I get the following message in Filezilla.
Status: Connecting to 192.168.0.104:21...
Status: Connection established, waiting for welcome message...
Status: Plain FTP is insecure. Please switch to FTP over TLS.
Status: Server does not support non-ASCII characters.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is your current directory
Command: TYPE I
Response: 200 TYPE is now 8-bit binary
Command: PASV
Response: 500 Unknown command
Command: PORT 192,168,0,46,252,195
Response: 200 PORT command successful
Command: MLSD
Response: 425 No data connection
Error: Failed to retrieve directory listing
and this is what gets printed to the serial..
Connecting to WiFi.....Connected!
IP Address: 192.168.0.104
Initializing SD card...initialization complete.
FTP Setup Complete
***Setup Complete***
New Connection from 192.168.0.46:64706
USER ftp
PASS ftp
PWD
TYPE I
PASV
500 Unknown command
PORT 192,168,0,46,252,195
MLSD
This is the example code
#if defined(ESP32)
#include <SPIFFS.h>
#include <SD.h>
#include <WiFi.h>
#elif defined(ESP8266)
#include <FS.h>
#include <ESP8266WiFi.h>
#endif
#include "ESP-FTP-Server-Lib.h"
#include "FTPFilesystem.h"
#define WIFI_SSID "SSID"
#define WIFI_PASSWORD "PASSWORD"
#define FTP_USER "ftp"
#define FTP_PASSWORD "ftp"
#ifndef UNIT_TEST
FTPServer ftp;
void setup()
{
Serial.begin(115200);
#if defined(ESP32)
SPIFFS.begin(true);
SPI.begin(14, 2, 15);
if(!SD.begin(13))
{
Serial.println("SD Card Mount Failed");
}
#elif defined(ESP8266)
SPIFFS.begin();
#endif
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(WIFI_SSID);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
ftp.addUser(FTP_USER, FTP_PASSWORD);
#if defined(ESP32)
ftp.addFilesystem("SD", &SD);
#endif
ftp.addFilesystem("SPIFFS", &SPIFFS);
ftp.begin();
Serial.println("...---'''---...---'''---...---'''---...");
}
void loop()
{
ftp.handle();
}
#endif
Any help or pointers to get this working would be appreciated.
Thanks