diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 55eedbce0b89f71612e2c3029bac9067c3dc9c93..b2d8dd7ad743e28e7b593696922840399bca460e 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -2263,6 +2263,30 @@ char* vpath(int lib, int dir, char* str) return(str); } +void ftp_printfile(SOCKET sock, const char* name, unsigned code) +{ + char path[MAX_PATH+1]; + char buf[512]; + FILE* fp; + unsigned i; + + SAFEPRINTF2(path,"%sftp%s.txt",scfg.text_dir,name); + if((fp=fopen(path,"rb"))!=NULL) { + i=0; + while(!feof(fp)) { + if(!fgets(buf,sizeof(buf),fp)) + break; + truncsp(buf); + if(!i) + sockprintf(sock,"%u-%s",code,buf); + else + sockprintf(sock," %s",buf); + i++; + } + fclose(fp); + } +} + static BOOL badlogin(SOCKET sock, ulong* login_attempts) { mswait(5000); /* As recommended by RFC2577 */ @@ -2270,6 +2294,7 @@ static BOOL badlogin(SOCKET sock, ulong* login_attempts) sockprintf(sock,"421 Too many failed login attempts."); return(TRUE); } + ftp_printfile(sock,"badlogin",530); sockprintf(sock,"530 Invalid login."); return(FALSE); } @@ -2556,21 +2581,7 @@ static void ctrl_thread(void* arg) continue; } if(!stricmp(cmd, "QUIT")) { - sprintf(str,"%sftpbye.txt",scfg.text_dir); - if((fp=fopen(str,"rb"))!=NULL) { - i=0; - while(!feof(fp)) { - if(!fgets(buf,sizeof(buf),fp)) - break; - truncsp(buf); - if(!i) - sockprintf(sock,"221-%s",buf); - else - sockprintf(sock," %s",buf); - i++; - } - fclose(fp); - } + ftp_printfile(sock,"bye",221); sockprintf(sock,"221 Goodbye. Closing control connection."); break; } @@ -2603,8 +2614,6 @@ static void ctrl_thread(void* arg) lprintf(LOG_WARNING,"%04d !UNKNOWN USER: %s, Password: %s",sock,user.alias,p); else lprintf(LOG_WARNING,"%04d !UNKNOWN USER: %s",sock,user.alias); - if(stricmp(user.alias,"anonymous")==0) - sockprintf(sock,"530-Anonymous logins not allowed. You must login with a valid user account."); if(badlogin(sock,&login_attempts)) break; continue; @@ -2690,21 +2699,7 @@ static void ctrl_thread(void* arg) lprintf(LOG_INFO,"%04d %s logged in",sock,user.alias); logintime=time(NULL); timeleft=gettimeleft(&scfg,&user,logintime); - sprintf(str,"%sftphello.txt",scfg.text_dir); - if((fp=fopen(str,"rb"))!=NULL) { - i=0; - while(!feof(fp)) { - if(!fgets(buf,sizeof(buf),fp)) - break; - truncsp(buf); - if(!i) - sockprintf(sock,"230-%s",buf); - else - sockprintf(sock," %s",buf); - i++; - } - fclose(fp); - } + ftp_printfile(sock,"hello",230); #ifdef JAVASCRIPT #ifdef JS_CX_PER_SESSION