yoyo

Fork of FTPClient by Akshay Tom

Committer:
Dxmanas
Date:
Thu Feb 01 07:59:48 2018 +0000
Revision:
5:087a3ccad604
Parent:
4:8ecc32e7c69b
commit

Who changed what in which revision?

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