void FTP::execute(string message){ vector<string> params = StringUtils::splitByDelimiter(message, ' '); string command = params[0]; transform(command.begin(), command.end(), command.begin(), ::toupper); if ( command.compare("PWD") == 0 ){ cout << this->pi.commandPrintWorkingDirectory(); } else if ( command.compare("DELE") == 0 ){ cout << this->pi.commandDeleteFile(params[1]); } else if ( command.compare("RMD") == 0 ){ cout << this->pi.commandDeleteDir(params[1]); } else if ( command.compare("MKD") == 0 ){ cout << this->pi.commandMakeDir(params[1]); } else if ( command.compare("HELP") == 0 ){ cout << this->pi.commandHelp(); } else if ( command.compare("CWD") == 0 ){ cout << this->pi.commandChangeWorkingDir(params[1]); } else if ( command.compare("REST") == 0 ){ cout << this->pi.commandRestart(); } else if ( command.compare("NOOP") == 0 ){ cout << this->pi.commandNoop(); } else if ( command.compare("LIST") == 0 ){ DTP dtp; enterPassiveMode(&dtp); cout << this->pi.commandList(); cout << dtp.receiveList(); } else if ( command.compare("RETR") == 0 ){ DTP dtp; enterPassiveMode(&dtp); cout << this->pi.commandRetrieve(params[1]); dtp.receiveFile("shared/" + params[1]); } else if ( command.compare("STOR") == 0 ){ DTP dtp; enterPassiveMode(&dtp); this->pi.commandStore(params[1]); dtp.storeFile("shared/" + params[1]); cout << pi.receiveMessage(); cout << pi.receiveMessage(); } else if ( command.compare("LS") == 0 ){ cout << " Shared directory content:" << endl; system("ls shared/ -l"); cout << endl; } }
int main(int argc, char *argv[]){ if(argc==2) { int correctSyntax=checkSyntax(argv[1]); if(correctSyntax){ printf("Sintaxe correcta\n"); char *user,*password,*host,*urlpath,*ip; int ret,sock1fd,pasvPort,sock2fd; user=ALLOCSTRING; password=ALLOCSTRING; host=ALLOCSTRING; urlpath=ALLOCSTRING; ip=ALLOCSTRING; ret = parseParams(argv[1],user,password,host,urlpath); getIP(host,ip); sock1fd=createSocket(ip,FTPPORT); if(ret == 0) loginUserPass(sock1fd,user,password); else if(ret == 1) loginUser(sock1fd,user); else if(ret == 2) loginUserPass(sock1fd,"anonymous","foo"); pasvPort = enterPassiveMode(sock1fd); sock2fd = createSocket(ip,pasvPort); download(sock1fd,sock2fd,urlpath); close(sock1fd); close(sock2fd); } else printf("Sintaxe errada!\n"); } else return -1; return 0; }