From 5f09015a4ee543a55a73b327f62e48698cf6c3da Mon Sep 17 00:00:00 2001 From: maxxir_w Date: Fri, 15 Feb 2019 13:33:58 +0400 Subject: [PATCH] Add FTPD authentication abilities to [18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD] --- .../Internet/FTPServer_avr/ftpd.c | 28 +++++++++++++++++++++- .../globals.c | 6 +++++ .../globals.h | 8 +++++++ .../main.c | 4 +++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c index 21fb1d4..4d6490f 100644 --- a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c +++ b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c @@ -1205,7 +1205,32 @@ char ftplogin(char * pass) { char sendbuf[100]; int slen = 0; - +#ifdef FTPD_AUTH_EN + if (!strcmp(ftp.username, ftpd_user)) + { + if (!strcmp(pass, ftpd_pass)) + { + + #if defined(_FTP_DEBUG_) + PRINTF("%s logged in OK\r\n", ftp.username); + #endif + //fsprintf(CTRL_SOCK, logged); + slen = SPRINTF(sendbuf, "230 Logged on\r\n"); + send(CTRL_SOCK, (uint8_t *)sendbuf, slen); + ftp.state = FTPS_LOGIN; + return 1; + } + + } + #if defined(_FTP_DEBUG_) + PRINTF("%s logged in ERROR\r\n", ftp.username); + #endif + //fsprintf(CTRL_SOCK, logged); + slen = SPRINTF(sendbuf, "530 Login authentication failed\r\n"); + send(CTRL_SOCK, (uint8_t *)sendbuf, slen); + ftp.state = FTPS_NOT_LOGIN; + return 0; +#else //memset(sendbuf, 0, DATA_BUF_SIZE); #if defined(_FTP_DEBUG_) @@ -1217,6 +1242,7 @@ char ftplogin(char * pass) ftp.state = FTPS_LOGIN; return 1; +#endif } int pport(char * arg) diff --git a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c index 6b51aa0..e7d91ae 100644 --- a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c +++ b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c @@ -24,3 +24,9 @@ wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef}, // Mac add .dhcp = NETINFO_STATIC}; //Static IP configuration #endif +//FTPD user-pass +#ifdef FTPD_AUTH_EN +const char ftpd_user[] = "user1234"; +const char ftpd_pass[] = "open_sesame"; +#endif + diff --git a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h index bc8fed5..f734531 100644 --- a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h +++ b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h @@ -54,6 +54,14 @@ FATFS Fatfs; //File system object for each logical drive. >= 2 //Disable Bootloader debug message //#undef BOOT_DEBUG +//Enabled FTPD authorize +#define FTPD_AUTH_EN + +#ifdef FTPD_AUTH_EN +extern const char ftpd_user[]; +extern const char ftpd_pass[]; +#endif + #define PRINTF_EN 1 #if PRINTF_EN #define PRINTF(FORMAT,args...) printf_P(PSTR(FORMAT),##args) diff --git a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c index 1b19ed0..97ee22c 100644 --- a/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c +++ b/18_m644p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c @@ -26,6 +26,8 @@ uint8_t gFTPBUF[_MAX_SS_FTPD]; //512 bytes /* * (18) Base template minimal for FTPD bootloaded application with TCP/IP loopback demo (m644p) + * TODO: + * OK (v1.1) Add FTPD authentication abilities * (17) Combine together (16) + abilities to enter BootLoader (reset with WDT), * when occur event upload via FTPD to SD file with name <1284BOOT.BIN> (see STOR_CMD into ) * TODO: @@ -140,7 +142,7 @@ volatile unsigned char sig_reset_board; // Flag to reset board //*********Program metrics const char compile_date[] PROGMEM = __DATE__; // Mmm dd yyyy - Дата компиляции const char compile_time[] PROGMEM = __TIME__; // hh:mm:ss - Время компиляции -const char str_prog_name[] PROGMEM = "\r\nAtMega644p v1.0 BootLoaded LOOPBACK and FTPD server && FATFS SDCARD WIZNET_5500 ETHERNET 13/02/2019\r\n"; // Program name +const char str_prog_name[] PROGMEM = "\r\nAtMega644p v1.1 BootLoaded LOOPBACK and FTPD server && FATFS SDCARD WIZNET_5500 ETHERNET 15/02/2019\r\n"; // Program name #if defined(__AVR_ATmega128__) const char PROGMEM str_mcu[] = "ATmega128"; //CPU is m128