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:
MidnightCow
Date:
Wed Aug 26 00:36:33 2015 +0000
Revision:
5:fe95043a506e
Parent:
4:4bef734cc93e
Modify the Open funciton
;

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