diff --git a/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c b/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c index 6727a2b..a1621d7 100644 --- a/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c +++ b/18_m1284p_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_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c b/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c index 6b51aa0..6097df6 100644 --- a/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c +++ b/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.c @@ -24,3 +24,8 @@ 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_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h b/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h index b8a9085..96e6021 100644 --- a/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/globals.h +++ b/18_m1284p_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_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c b/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c index 2425dc9..08df4e8 100644 --- a/18_m1284p_BTLD_WIZNET_LOOPBACK_FTPD_FATFS_SDCARD/main.c +++ b/18_m1284p_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 (m1284p) + * TODO: + * OK (v1.1) Add FTPD authorization 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\nAtMega1284p 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\nAtMega1284p 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