FTPClient

Fork of FTPClient by Ricky Kwon

Committer:
Ricky_Kwon
Date:
Tue Jul 28 23:30:59 2015 +0000
Revision:
1:2630b5456598
Parent:
0:61da21bfd120
Child:
2:dbbe55b239d5
add function(quit())

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