diff --git a/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c index 6727a2b..a1621d7 100644 --- a/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/Internet/FTPServer_avr/ftpd.c +++ b/17_m1284p_BTLD_WIZNET_HTTPD_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/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.c b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.c index 6b51aa0..6097df6 100644 --- a/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.c +++ b/17_m1284p_BTLD_WIZNET_HTTPD_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/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.h b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.h index 330f11b..74ed984 100644 --- a/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.h +++ b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/globals.h @@ -52,6 +52,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/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/main.c b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/main.c index 5010658..81a561a 100644 --- a/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/main.c +++ b/17_m1284p_BTLD_WIZNET_HTTPD_FTPD_FATFS_SDCARD/main.c @@ -33,6 +33,7 @@ uint8_t gFTPBUF[_MAX_SS_FTPD]; //512 bytes * OK (v1.2a) Some minor changes, added key * OK (v1.2b) Some minor changes * OK (v1.2d) Changed bootable image to 1284BOOT.BIN + * OK (v1.2e) Add FTPD authorization abilities (look FTPD_AUTH_EN in globals.h/globals.c) * Notes. * Works in pair with BootLoader project: * Also see to set correct fuses @@ -140,7 +141,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.2d BootLoaded HTTPD and FTPD servers && FATFS SDCARD WIZNET_5500 ETHERNET 07/02/2019\r\n"; // Program name +const char str_prog_name[] PROGMEM = "\r\nAtMega1284p v1.2e BootLoaded HTTPD and FTPD servers && 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