Update FTPClient

Dependents:   Digital_Photo_Frame_with_FTP_SD_WIZwiki-W7500 FTP_Streaming_Music_Player_WIZwiki-W7500 GIF2015 MP3Decoding_VS1002_WIZwiki-W7500

Fork of FTPClient by Midnight Cow

Committer:
Ricky_Kwon
Date:
Tue Jul 28 00:04:52 2015 +0000
Revision:
0:61da21bfd120
Child:
1:2630b5456598
FTPClient

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 0:61da21bfd120 1 #include "mbed.h"
Ricky_Kwon 0:61da21bfd120 2 #include "EthernetInterface.h"
Ricky_Kwon 0:61da21bfd120 3 #include "FTPClient.h"
Ricky_Kwon 0:61da21bfd120 4 //#define DEBUG
Ricky_Kwon 0:61da21bfd120 5 FTPClient::FTPClient(PinName mosi, PinName miso, PinName sclk, PinName ssel, const char* root) : _SDFileSystem(mosi, miso, sclk, ssel, root){
Ricky_Kwon 0:61da21bfd120 6 blogin = false;
Ricky_Kwon 0:61da21bfd120 7 bopenflag = false;
Ricky_Kwon 0:61da21bfd120 8 brfileflag = false;
Ricky_Kwon 0:61da21bfd120 9 bdirflag = false;
Ricky_Kwon 0:61da21bfd120 10 blsflag = false;
Ricky_Kwon 0:61da21bfd120 11 bfdeleteflag = false;
Ricky_Kwon 0:61da21bfd120 12 bmkdirflag = false;
Ricky_Kwon 0:61da21bfd120 13 bcdflag = false;
Ricky_Kwon 0:61da21bfd120 14 }
Ricky_Kwon 0:61da21bfd120 15 bool FTPClient::open(char* ip, int port, char* id, char* pass){
Ricky_Kwon 0:61da21bfd120 16
Ricky_Kwon 0:61da21bfd120 17 FTPClientControlSock = new TCPSocketConnection;
Ricky_Kwon 0:61da21bfd120 18 FTPClientDataSock = new TCPSocketConnection;
Ricky_Kwon 0:61da21bfd120 19
Ricky_Kwon 0:61da21bfd120 20 #if 0
Ricky_Kwon 0:61da21bfd120 21 do{
Ricky_Kwon 0:61da21bfd120 22 FTPClientControlSock->connect(ip, port);
Ricky_Kwon 0:61da21bfd120 23 }while(!FTPClientControlSock->is_connected());
Ricky_Kwon 0:61da21bfd120 24 #endif
Ricky_Kwon 0:61da21bfd120 25 #if 1
Ricky_Kwon 0:61da21bfd120 26 while (FTPClientControlSock->connect(ip, port) < 0) {
Ricky_Kwon 0:61da21bfd120 27 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 28 printf("Unable to connect to (%s) on port (%d)\r\n", ip, port);
Ricky_Kwon 0:61da21bfd120 29 #endif
Ricky_Kwon 0:61da21bfd120 30 wait(1);
Ricky_Kwon 0:61da21bfd120 31 }
Ricky_Kwon 0:61da21bfd120 32 #endif
Ricky_Kwon 0:61da21bfd120 33
Ricky_Kwon 0:61da21bfd120 34 while(!blogin){
Ricky_Kwon 0:61da21bfd120 35 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 36 if(size > 0){
Ricky_Kwon 0:61da21bfd120 37 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 38 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 39 #endif
Ricky_Kwon 0:61da21bfd120 40 if (!strncmp(rbuf, "220", 3)){
Ricky_Kwon 0:61da21bfd120 41 sprintf(sbuf, "user %s\r\n", id);
Ricky_Kwon 0:61da21bfd120 42 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 43 }
Ricky_Kwon 0:61da21bfd120 44 else if (!strncmp(rbuf, "331", 3)){
Ricky_Kwon 0:61da21bfd120 45 sprintf(sbuf, "pass %s\r\n", pass);
Ricky_Kwon 0:61da21bfd120 46 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 47 }
Ricky_Kwon 0:61da21bfd120 48 else if (!strncmp(rbuf, "230", 3)){
Ricky_Kwon 0:61da21bfd120 49 blogin = true;
Ricky_Kwon 0:61da21bfd120 50 }
Ricky_Kwon 0:61da21bfd120 51 else{
Ricky_Kwon 0:61da21bfd120 52 blogin = true;
Ricky_Kwon 0:61da21bfd120 53 }
Ricky_Kwon 0:61da21bfd120 54 }
Ricky_Kwon 0:61da21bfd120 55 }
Ricky_Kwon 0:61da21bfd120 56 return 1;
Ricky_Kwon 0:61da21bfd120 57 }
Ricky_Kwon 0:61da21bfd120 58
Ricky_Kwon 0:61da21bfd120 59 bool FTPClient::getfile(char* myfilename, char* filename){
Ricky_Kwon 0:61da21bfd120 60
Ricky_Kwon 0:61da21bfd120 61 if(blogin){
Ricky_Kwon 0:61da21bfd120 62
Ricky_Kwon 0:61da21bfd120 63 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 64 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 65
Ricky_Kwon 0:61da21bfd120 66 while(!brfileflag){
Ricky_Kwon 0:61da21bfd120 67 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 68 if(size > 0){
Ricky_Kwon 0:61da21bfd120 69 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 70 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 71 #endif
Ricky_Kwon 0:61da21bfd120 72 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 73 fp = fopen(myfilename, "w");
Ricky_Kwon 0:61da21bfd120 74 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 75 printf("myfilename : %s\r\n", myfilename);
Ricky_Kwon 0:61da21bfd120 76 #endif
Ricky_Kwon 0:61da21bfd120 77 while(true){
Ricky_Kwon 0:61da21bfd120 78 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 79 remain_datasize = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 80 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 81 printf("remain_datasize : %d\r\n", remain_datasize);
Ricky_Kwon 0:61da21bfd120 82 #endif
Ricky_Kwon 0:61da21bfd120 83 if(remain_datasize>0){
Ricky_Kwon 0:61da21bfd120 84 for (i = 0; i < remain_datasize; i++) {
Ricky_Kwon 0:61da21bfd120 85 //printf("%c", rbuf[i]);
Ricky_Kwon 0:61da21bfd120 86 fprintf(fp, "%c", rbuf[i]);
Ricky_Kwon 0:61da21bfd120 87 }
Ricky_Kwon 0:61da21bfd120 88 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 89 printf("#");
Ricky_Kwon 0:61da21bfd120 90 #endif
Ricky_Kwon 0:61da21bfd120 91 }
Ricky_Kwon 0:61da21bfd120 92 else{
Ricky_Kwon 0:61da21bfd120 93 brfileflag = true;
Ricky_Kwon 0:61da21bfd120 94 fclose(fp);
Ricky_Kwon 0:61da21bfd120 95 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 96 break;
Ricky_Kwon 0:61da21bfd120 97 }
Ricky_Kwon 0:61da21bfd120 98 }
Ricky_Kwon 0:61da21bfd120 99 }
Ricky_Kwon 0:61da21bfd120 100 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 101 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 102
Ricky_Kwon 0:61da21bfd120 103 #if 1
Ricky_Kwon 0:61da21bfd120 104 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 105 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 106 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 107 #endif
Ricky_Kwon 0:61da21bfd120 108 wait(1);
Ricky_Kwon 0:61da21bfd120 109 }
Ricky_Kwon 0:61da21bfd120 110 #endif
Ricky_Kwon 0:61da21bfd120 111
Ricky_Kwon 0:61da21bfd120 112 #if 0
Ricky_Kwon 0:61da21bfd120 113 do{
Ricky_Kwon 0:61da21bfd120 114 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 115 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 116 #endif
Ricky_Kwon 0:61da21bfd120 117 sprintf(sbuf, "retr %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 118 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 119 }
Ricky_Kwon 0:61da21bfd120 120 }
Ricky_Kwon 0:61da21bfd120 121 }
Ricky_Kwon 0:61da21bfd120 122 brfileflag = false;
Ricky_Kwon 0:61da21bfd120 123 return 1;
Ricky_Kwon 0:61da21bfd120 124 }
Ricky_Kwon 0:61da21bfd120 125 else return 0;
Ricky_Kwon 0:61da21bfd120 126 }
Ricky_Kwon 0:61da21bfd120 127 bool FTPClient::putfile(char* myfilename, char* filename){
Ricky_Kwon 0:61da21bfd120 128
Ricky_Kwon 0:61da21bfd120 129 if(blogin){
Ricky_Kwon 0:61da21bfd120 130
Ricky_Kwon 0:61da21bfd120 131 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 132 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 133
Ricky_Kwon 0:61da21bfd120 134 while(!bsfileflag){
Ricky_Kwon 0:61da21bfd120 135 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 136 if(size > 0){
Ricky_Kwon 0:61da21bfd120 137 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 138 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 139 #endif
Ricky_Kwon 0:61da21bfd120 140 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 141 fp = fopen(myfilename, "r");
Ricky_Kwon 0:61da21bfd120 142 fseek(fp, 0, SEEK_END); // seek to end of file
Ricky_Kwon 0:61da21bfd120 143 remain_filesize = ftell(fp); // get current file pointer
Ricky_Kwon 0:61da21bfd120 144 fseek(fp, 0, SEEK_SET); // seek back to beginning of file
Ricky_Kwon 0:61da21bfd120 145 do{
Ricky_Kwon 0:61da21bfd120 146 memset(sbuf, 0, sizeof(sbuf));
Ricky_Kwon 0:61da21bfd120 147 if(remain_filesize > MAX_SS)
Ricky_Kwon 0:61da21bfd120 148 send_byte = MAX_SS;
Ricky_Kwon 0:61da21bfd120 149 else
Ricky_Kwon 0:61da21bfd120 150 send_byte = remain_filesize;
Ricky_Kwon 0:61da21bfd120 151 fread (sbuf, 1, send_byte, fp);
Ricky_Kwon 0:61da21bfd120 152 FTPClientDataSock->send(sbuf, send_byte);
Ricky_Kwon 0:61da21bfd120 153 remain_filesize -= send_byte;
Ricky_Kwon 0:61da21bfd120 154 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 155 printf("#");
Ricky_Kwon 0:61da21bfd120 156 #endif
Ricky_Kwon 0:61da21bfd120 157 }while(remain_filesize!=0);
Ricky_Kwon 0:61da21bfd120 158 fclose(fp);
Ricky_Kwon 0:61da21bfd120 159 bsfileflag = true;
Ricky_Kwon 0:61da21bfd120 160 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 161 break;
Ricky_Kwon 0:61da21bfd120 162 }
Ricky_Kwon 0:61da21bfd120 163 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 164 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 165 #if 0
Ricky_Kwon 0:61da21bfd120 166 do{
Ricky_Kwon 0:61da21bfd120 167 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 168 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 169 #endif
Ricky_Kwon 0:61da21bfd120 170
Ricky_Kwon 0:61da21bfd120 171 #if 1
Ricky_Kwon 0:61da21bfd120 172 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 173 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 174 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 175 #endif
Ricky_Kwon 0:61da21bfd120 176 wait(1);
Ricky_Kwon 0:61da21bfd120 177 }
Ricky_Kwon 0:61da21bfd120 178 #endif
Ricky_Kwon 0:61da21bfd120 179 sprintf(sbuf, "stor %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 180 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 181 }
Ricky_Kwon 0:61da21bfd120 182 }
Ricky_Kwon 0:61da21bfd120 183 }
Ricky_Kwon 0:61da21bfd120 184 bsfileflag = false;
Ricky_Kwon 0:61da21bfd120 185 return 1;
Ricky_Kwon 0:61da21bfd120 186 }
Ricky_Kwon 0:61da21bfd120 187 else return 0;
Ricky_Kwon 0:61da21bfd120 188 }
Ricky_Kwon 0:61da21bfd120 189 bool FTPClient::dir(){
Ricky_Kwon 0:61da21bfd120 190
Ricky_Kwon 0:61da21bfd120 191 if(blogin){
Ricky_Kwon 0:61da21bfd120 192
Ricky_Kwon 0:61da21bfd120 193 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 194 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 195
Ricky_Kwon 0:61da21bfd120 196 while(!bdirflag){
Ricky_Kwon 0:61da21bfd120 197 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 198 if(size > 0){
Ricky_Kwon 0:61da21bfd120 199 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 200 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 201 #endif
Ricky_Kwon 0:61da21bfd120 202 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 203 while(true){
Ricky_Kwon 0:61da21bfd120 204 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 205 size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 206 rbuf[size] = '\0';
Ricky_Kwon 0:61da21bfd120 207 if(size>0){
Ricky_Kwon 0:61da21bfd120 208 printf("%s", rbuf);
Ricky_Kwon 0:61da21bfd120 209 }
Ricky_Kwon 0:61da21bfd120 210 else{
Ricky_Kwon 0:61da21bfd120 211 bdirflag = true;
Ricky_Kwon 0:61da21bfd120 212 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 213 break;
Ricky_Kwon 0:61da21bfd120 214 }
Ricky_Kwon 0:61da21bfd120 215 }
Ricky_Kwon 0:61da21bfd120 216 }
Ricky_Kwon 0:61da21bfd120 217 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 218 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 219 #if 0
Ricky_Kwon 0:61da21bfd120 220 do{
Ricky_Kwon 0:61da21bfd120 221 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 222 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 223 #endif
Ricky_Kwon 0:61da21bfd120 224 #if 1
Ricky_Kwon 0:61da21bfd120 225 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 226 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 227 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 228 #endif
Ricky_Kwon 0:61da21bfd120 229 wait(1);
Ricky_Kwon 0:61da21bfd120 230 }
Ricky_Kwon 0:61da21bfd120 231 #endif
Ricky_Kwon 0:61da21bfd120 232 sprintf(sbuf, "list\r\n");
Ricky_Kwon 0:61da21bfd120 233 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 234 }
Ricky_Kwon 0:61da21bfd120 235 }
Ricky_Kwon 0:61da21bfd120 236 }
Ricky_Kwon 0:61da21bfd120 237 bdirflag = false;
Ricky_Kwon 0:61da21bfd120 238 return 1;
Ricky_Kwon 0:61da21bfd120 239 }
Ricky_Kwon 0:61da21bfd120 240 else return 0;
Ricky_Kwon 0:61da21bfd120 241 }
Ricky_Kwon 0:61da21bfd120 242
Ricky_Kwon 0:61da21bfd120 243 bool FTPClient::ls(){
Ricky_Kwon 0:61da21bfd120 244
Ricky_Kwon 0:61da21bfd120 245 if(blogin){
Ricky_Kwon 0:61da21bfd120 246
Ricky_Kwon 0:61da21bfd120 247 sprintf(sbuf, "pasv\r\n");
Ricky_Kwon 0:61da21bfd120 248 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 249
Ricky_Kwon 0:61da21bfd120 250 while(!blsflag){
Ricky_Kwon 0:61da21bfd120 251 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 252 if(size > 0){
Ricky_Kwon 0:61da21bfd120 253 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 254 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 255 #endif
Ricky_Kwon 0:61da21bfd120 256 if (!strncmp(rbuf, "150", 3)){
Ricky_Kwon 0:61da21bfd120 257 while(true){
Ricky_Kwon 0:61da21bfd120 258 memset(rbuf, 0, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 259 size = FTPClientDataSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 260 rbuf[size] = '\0';
Ricky_Kwon 0:61da21bfd120 261 if(size>0){
Ricky_Kwon 0:61da21bfd120 262 printf("%s", rbuf);
Ricky_Kwon 0:61da21bfd120 263 }
Ricky_Kwon 0:61da21bfd120 264 else{
Ricky_Kwon 0:61da21bfd120 265 blsflag = true;
Ricky_Kwon 0:61da21bfd120 266 FTPClientDataSock->close();
Ricky_Kwon 0:61da21bfd120 267 break;
Ricky_Kwon 0:61da21bfd120 268 }
Ricky_Kwon 0:61da21bfd120 269 }
Ricky_Kwon 0:61da21bfd120 270 }
Ricky_Kwon 0:61da21bfd120 271 else if (!strncmp(rbuf, "227", 3)){
Ricky_Kwon 0:61da21bfd120 272 pportc(rbuf);
Ricky_Kwon 0:61da21bfd120 273 #if 0
Ricky_Kwon 0:61da21bfd120 274 do{
Ricky_Kwon 0:61da21bfd120 275 FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 276 }while(!FTPClientDataSock->is_connected());
Ricky_Kwon 0:61da21bfd120 277 #endif
Ricky_Kwon 0:61da21bfd120 278 #if 1
Ricky_Kwon 0:61da21bfd120 279 while (FTPClientDataSock->connect(ftpServer_data_ip_addr_str, remote_port) < 0) {
Ricky_Kwon 0:61da21bfd120 280 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 281 printf("Unable to connect to (%s) on port (%d)\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:61da21bfd120 282 #endif
Ricky_Kwon 0:61da21bfd120 283 wait(1);
Ricky_Kwon 0:61da21bfd120 284 }
Ricky_Kwon 0:61da21bfd120 285 #endif
Ricky_Kwon 0:61da21bfd120 286 sprintf(sbuf, "nlst\r\n");
Ricky_Kwon 0:61da21bfd120 287 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 288 }
Ricky_Kwon 0:61da21bfd120 289 }
Ricky_Kwon 0:61da21bfd120 290 }
Ricky_Kwon 0:61da21bfd120 291 blsflag = false;
Ricky_Kwon 0:61da21bfd120 292 return 1;
Ricky_Kwon 0:61da21bfd120 293 }
Ricky_Kwon 0:61da21bfd120 294 else return 0;
Ricky_Kwon 0:61da21bfd120 295 }
Ricky_Kwon 0:61da21bfd120 296
Ricky_Kwon 0:61da21bfd120 297 bool FTPClient::fdelete(char* filename){
Ricky_Kwon 0:61da21bfd120 298
Ricky_Kwon 0:61da21bfd120 299 if(blogin){
Ricky_Kwon 0:61da21bfd120 300
Ricky_Kwon 0:61da21bfd120 301 sprintf(sbuf, "dele %s\r\n", filename);
Ricky_Kwon 0:61da21bfd120 302 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 303
Ricky_Kwon 0:61da21bfd120 304 while(!bfdeleteflag){
Ricky_Kwon 0:61da21bfd120 305 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 306 if(size > 0){
Ricky_Kwon 0:61da21bfd120 307 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 308 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 309 #endif
Ricky_Kwon 0:61da21bfd120 310 if (!strncmp(rbuf, "250", 3)){
Ricky_Kwon 0:61da21bfd120 311 bfdeleteflag = true;
Ricky_Kwon 0:61da21bfd120 312 }
Ricky_Kwon 0:61da21bfd120 313 else {
Ricky_Kwon 0:61da21bfd120 314 return 0;
Ricky_Kwon 0:61da21bfd120 315 }
Ricky_Kwon 0:61da21bfd120 316 }
Ricky_Kwon 0:61da21bfd120 317 }
Ricky_Kwon 0:61da21bfd120 318 bfdeleteflag = false;
Ricky_Kwon 0:61da21bfd120 319 return 1;
Ricky_Kwon 0:61da21bfd120 320 }
Ricky_Kwon 0:61da21bfd120 321 else return 0;
Ricky_Kwon 0:61da21bfd120 322 }
Ricky_Kwon 0:61da21bfd120 323 bool FTPClient::mkdir(char* dirname){
Ricky_Kwon 0:61da21bfd120 324
Ricky_Kwon 0:61da21bfd120 325 if(blogin){
Ricky_Kwon 0:61da21bfd120 326
Ricky_Kwon 0:61da21bfd120 327 sprintf(sbuf, "xmkd %s\r\n", dirname);
Ricky_Kwon 0:61da21bfd120 328 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 329
Ricky_Kwon 0:61da21bfd120 330 while(!bmkdirflag){
Ricky_Kwon 0:61da21bfd120 331 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 332 if(size > 0){
Ricky_Kwon 0:61da21bfd120 333 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 334 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 335 #endif
Ricky_Kwon 0:61da21bfd120 336 if (!strncmp(rbuf, "257", 3)){
Ricky_Kwon 0:61da21bfd120 337 bmkdirflag = true;
Ricky_Kwon 0:61da21bfd120 338 }
Ricky_Kwon 0:61da21bfd120 339 else {
Ricky_Kwon 0:61da21bfd120 340 return 0;
Ricky_Kwon 0:61da21bfd120 341 }
Ricky_Kwon 0:61da21bfd120 342 }
Ricky_Kwon 0:61da21bfd120 343 }
Ricky_Kwon 0:61da21bfd120 344 bmkdirflag = false;
Ricky_Kwon 0:61da21bfd120 345 return 1;
Ricky_Kwon 0:61da21bfd120 346 }
Ricky_Kwon 0:61da21bfd120 347 else return 0;
Ricky_Kwon 0:61da21bfd120 348 }
Ricky_Kwon 0:61da21bfd120 349 bool FTPClient::cd(char* dirname){
Ricky_Kwon 0:61da21bfd120 350
Ricky_Kwon 0:61da21bfd120 351 if(blogin){
Ricky_Kwon 0:61da21bfd120 352
Ricky_Kwon 0:61da21bfd120 353 sprintf(sbuf, "cwd %s\r\n", dirname);
Ricky_Kwon 0:61da21bfd120 354 FTPClientControlSock->send(sbuf, strlen(sbuf));
Ricky_Kwon 0:61da21bfd120 355
Ricky_Kwon 0:61da21bfd120 356 while(!bcdflag){
Ricky_Kwon 0:61da21bfd120 357 size = FTPClientControlSock->receive(rbuf, sizeof(rbuf));
Ricky_Kwon 0:61da21bfd120 358 if(size > 0){
Ricky_Kwon 0:61da21bfd120 359 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 360 printf("Received message from server: %s\r\n", rbuf);
Ricky_Kwon 0:61da21bfd120 361 #endif
Ricky_Kwon 0:61da21bfd120 362 if (!strncmp(rbuf, "250", 3)){
Ricky_Kwon 0:61da21bfd120 363 bcdflag = true;
Ricky_Kwon 0:61da21bfd120 364 }
Ricky_Kwon 0:61da21bfd120 365 else {
Ricky_Kwon 0:61da21bfd120 366 return 0;
Ricky_Kwon 0:61da21bfd120 367 }
Ricky_Kwon 0:61da21bfd120 368 }
Ricky_Kwon 0:61da21bfd120 369 }
Ricky_Kwon 0:61da21bfd120 370 bcdflag = false;
Ricky_Kwon 0:61da21bfd120 371 return 1;
Ricky_Kwon 0:61da21bfd120 372 }
Ricky_Kwon 0:61da21bfd120 373 else return 0;
Ricky_Kwon 0:61da21bfd120 374 }
Ricky_Kwon 0:61da21bfd120 375 int FTPClient::pportc(char * arg)
Ricky_Kwon 0:61da21bfd120 376 {
Ricky_Kwon 0:61da21bfd120 377 char* tok=0;
Ricky_Kwon 0:61da21bfd120 378
Ricky_Kwon 0:61da21bfd120 379 strtok(arg,"(");
Ricky_Kwon 0:61da21bfd120 380 for (i = 0; i < 4; i++)
Ricky_Kwon 0:61da21bfd120 381 {
Ricky_Kwon 0:61da21bfd120 382 if(i==0) tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:61da21bfd120 383 else tok = strtok(NULL,",");
Ricky_Kwon 0:61da21bfd120 384 ftpServer_data_ip_addr[i] = (uint8_t)atoi(tok);
Ricky_Kwon 0:61da21bfd120 385 if (!tok){
Ricky_Kwon 0:61da21bfd120 386 #ifndef DEBUG
Ricky_Kwon 0:61da21bfd120 387 printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:61da21bfd120 388 #endif
Ricky_Kwon 0:61da21bfd120 389 return -1;
Ricky_Kwon 0:61da21bfd120 390 }
Ricky_Kwon 0:61da21bfd120 391 }
Ricky_Kwon 0:61da21bfd120 392 remote_port = 0;
Ricky_Kwon 0:61da21bfd120 393 for (i = 0; i < 2; i++){
Ricky_Kwon 0:61da21bfd120 394 tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:61da21bfd120 395 remote_port <<= 8;
Ricky_Kwon 0:61da21bfd120 396 remote_port += atoi(tok);
Ricky_Kwon 0:61da21bfd120 397 if (!tok){
Ricky_Kwon 0:61da21bfd120 398 #ifdef DEBUG
Ricky_Kwon 0:61da21bfd120 399 printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:61da21bfd120 400 #endif
Ricky_Kwon 0:61da21bfd120 401 return -1;
Ricky_Kwon 0:61da21bfd120 402 }
Ricky_Kwon 0:61da21bfd120 403 }
Ricky_Kwon 0:61da21bfd120 404 sprintf(ftpServer_data_ip_addr_str, "%d.%d.%d.%d", ftpServer_data_ip_addr[0], ftpServer_data_ip_addr[1], ftpServer_data_ip_addr[2], ftpServer_data_ip_addr[3]);
Ricky_Kwon 0:61da21bfd120 405 return 0;
Ricky_Kwon 0:61da21bfd120 406 }
Ricky_Kwon 0:61da21bfd120 407
Ricky_Kwon 0:61da21bfd120 408
Ricky_Kwon 0:61da21bfd120 409
Ricky_Kwon 0:61da21bfd120 410