summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ESP8266FtpServer.cpp38
-rw-r--r--ESP8266FtpServer.h4
-rw-r--r--examples/FTPServerSample/FTPServerSample.ino46
-rw-r--r--library.json2
-rw-r--r--library.properties2
5 files changed, 36 insertions, 56 deletions
diff --git a/ESP8266FtpServer.cpp b/ESP8266FtpServer.cpp
index f981682..7d25e9a 100644
--- a/ESP8266FtpServer.cpp
+++ b/ESP8266FtpServer.cpp
@@ -21,10 +21,8 @@
#include "ESP8266FtpServer.h"
#ifdef ESP8266
#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
#elif defined ESP32
#include <WiFi.h>
-#include <Webserver.h>
#include "SPIFFS.h"
#endif
#include <WiFiClient.h>
@@ -155,7 +153,7 @@ void FtpServer::clientConnected()
#ifdef FTP_DEBUG
Serial.println("Client connected!");
#endif
- client.println( "220--- Welcome to FTP for ESP8266 ---");
+ client.println( "220--- Welcome to FTP for ESP8266/ESP32 ---");
client.println( "220--- By David Paiva ---");
client.println( "220 -- Version "+ String(FTP_SERVER_VERSION) +" --");
iCL = 0;
@@ -274,7 +272,7 @@ boolean FtpServer::processCommand()
if (data.connected()) data.stop();
//dataServer.begin();
//dataIp = Ethernet.localIP();
- dataIp = WiFi.localIP();
+ dataIp = client.localIP();
dataPort = FTP_DATA_PORT_PASV;
//data.connect( dataIp, dataPort );
//data = dataServer.available();
@@ -385,9 +383,9 @@ boolean FtpServer::processCommand()
uint16_t nm = 0;
#ifdef ESP8266
Dir dir=SPIFFS.openDir(cwdName);
- if( !SPIFFS.exists(cwdName))
- client.println( "550 Can't open directory " + String(cwdName) );
- else
+ // if( !SPIFFS.exists(cwdName))
+ // client.println( "550 Can't open directory " + String(cwdName) );
+ // else
{
while( dir.next())
{
@@ -518,9 +516,9 @@ boolean FtpServer::processCommand()
uint16_t nm = 0;
#ifdef ESP8266
Dir dir=SPIFFS.openDir(cwdName);
- if( !SPIFFS.exists( cwdName ))
- client.println( "550 Can't open directory " + String(parameters));
- else
+ // if( !SPIFFS.exists( cwdName ))
+ // client.println( "550 Can't open directory " + String(parameters));
+ // else
{
while( dir.next())
{
@@ -768,16 +766,18 @@ boolean FtpServer::dataConnect()
boolean FtpServer::doRetrieve()
{
- //int16_t nb = file.readBytes((uint8_t*) buf, FTP_BUF_SIZE );
+if (data.connected())
+{
int16_t nb = file.readBytes(buf, FTP_BUF_SIZE);
- if( nb > 0 )
- {
- data.write((uint8_t*) buf, nb );
- bytesTransfered += nb;
- return true;
- }
- closeTransfer();
- return false;
+ if (nb > 0)
+ {
+ data.write((uint8_t*)buf, nb);
+ bytesTransfered += nb;
+ return true;
+ }
+}
+closeTransfer();
+return false;
}
boolean FtpServer::doStore()
diff --git a/ESP8266FtpServer.h b/ESP8266FtpServer.h
index 877ad24..00a8057 100644
--- a/ESP8266FtpServer.h
+++ b/ESP8266FtpServer.h
@@ -35,7 +35,7 @@
#include <FS.h>
#include <WiFiClient.h>
-#define FTP_SERVER_VERSION "FTP-2016-01-14"
+#define FTP_SERVER_VERSION "FTP-2017-10-18"
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
@@ -44,7 +44,7 @@
#define FTP_CMD_SIZE 255 + 8 // max size of a command
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
#define FTP_FIL_SIZE 255 // max size of a file name
-// #define FTP_BUF_SIZE 1024 //512 // size of file buffer for read/write
+//#define FTP_BUF_SIZE 1024 //512 // size of file buffer for read/write
#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
class FtpServer
diff --git a/examples/FTPServerSample/FTPServerSample.ino b/examples/FTPServerSample/FTPServerSample.ino
index 06223df..b8fa5f6 100644
--- a/examples/FTPServerSample/FTPServerSample.ino
+++ b/examples/FTPServerSample/FTPServerSample.ino
@@ -1,35 +1,18 @@
+#ifdef ESP8266
#include <ESP8266WiFi.h>
-#include <WiFiClient.h>
-#include <ESP8266WebServer.h>
+#elif defined ESP32
+#include <WiFi.h>
+#include "SPIFFS.h"
+#endif
+
#include <ESP8266FtpServer.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
-ESP8266WebServer server(80);
-FtpServer ftpSrv; //set #define FTP_DEBUG in ESP8266FtpServer.h to see ftp verbose on serial
-
-
-void handleRoot() {
- server.send(200, "text/plain", "hello from esp8266!");
-
-}
+FtpServer ftpSrv; //set #define FTP_DEBUG in ESP8266FtpServer.h to see ftp verbose on serial
-void handleNotFound(){
- String message = "File Not Found\n\n";
- message += "URI: ";
- message += server.uri();
- message += "\nMethod: ";
- message += (server.method() == HTTP_GET)?"GET":"POST";
- message += "\nArguments: ";
- message += server.args();
- message += "\n";
- for (uint8_t i=0; i<server.args(); i++){
- message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
- }
- server.send(404, "text/plain", message);
-}
void setup(void){
Serial.begin(115200);
@@ -48,23 +31,20 @@ void setup(void){
Serial.println(WiFi.localIP());
- server.on("/", handleRoot);
-
- server.onNotFound(handleNotFound);
-
- server.begin();
- Serial.println("HTTP server started");
-
/////FTP Setup, ensure SPIFFS is started before ftp; /////////
+ /////FTP Setup, ensure SPIFFS is started before ftp; /////////
+#ifdef ESP32 //esp32 we send true to format spiffs if cannot mount
+ if (SPIFFS.begin(true)) {
+#elif defined ESP8266
if (SPIFFS.begin()) {
+#endif
Serial.println("SPIFFS opened!");
ftpSrv.begin("esp8266","esp8266"); //username, password for ftp. set ports in ESP8266FtpServer.h (default 21, 50009 for PASV)
}
}
-
void loop(void){
ftpSrv.handleFTP(); //make sure in loop you call handleFTP()!!
- server.handleClient();
+ // server.handleClient(); //example if running a webserver you still need to call .handleClient();
}
diff --git a/library.json b/library.json
index bb72342..ff9891f 100644
--- a/library.json
+++ b/library.json
@@ -11,7 +11,7 @@
"repository":
{
"type": "git",
- "url": "https://github.com/beegee-tokyo/esp8266FTPServer"
+ "url": "https://github.com/nailbuster/esp8266FTPServer"
},
"url": "http://nailbuster.com/",
"frameworks": "Arduino",
diff --git a/library.properties b/library.properties
index d282868..0e89838 100644
--- a/library.properties
+++ b/library.properties
@@ -6,4 +6,4 @@ sentence=Very Simple FTP server for SPIFFS on esp8266
paragraph=Very Simple FTP server for SPIFFS on esp8266
category=Communication
url=
-architectures=esp8266
+architectures=esp8266,esp32,arduino-esp32