Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk_1/ftpconn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by hirohitohigashi, Fri Feb 20 02:19:48 2009 UTC revision 7 by hirohitohigashi, Fri Feb 20 12:10:40 2009 UTC
# Line 38  struct sockaddr_in ftp_connection; Line 38  struct sockaddr_in ftp_connection;
38    
39  /***  /***
40       ftp_connect:       ftp_connect:
41          - char *host           => HostName/IP       - char *host           => HostName/IP
42          - int port             => Port to connect to       - int port             => Port to connect to
43          - struct sockaddr_in * => pointer to sockaddr_in structure       - struct sockaddr_in * => pointer to sockaddr_in structure
44          - int verbose          => Verbose?       - int verbose          => Verbose?
45             . 0 Do not Print       . 0 Do not Print
46             . 1 Print       . 1 Print
47          - ret                  => Success?       - ret                  => Success?
48             . sock Socket Descriptor Returned       . sock Socket Descriptor Returned
49             .-1 Error       .-1 Error
50  ***/  ***/
51    
52    
53  int ftp_connect(char *host, int port, struct sockaddr_in *ftp_server, int verbose) {  int ftp_connect(char *host, int port, struct sockaddr_in *ftp_server, int verbose)
54    {
55        struct hostent *he;
56        int sock;
57        struct timeval tm; //tv_sec - tv_usec
58        fd_set readfds;
59        char buf[1024];
60        int n;
61    
62        
63          struct hostent *he;      if ( (he=gethostbyname(host)) == NULL) {
   
         if ( (he=gethostbyname(host)) == NULL) {  
64                    
65          if (verbose) {          if (verbose) {
66                    
67          if (h_errno == HOST_NOT_FOUND) {              if (h_errno == HOST_NOT_FOUND) {
68                  printf("[-] Host Not Found!\n");                  printf("[-] Host Not Found!\n");
69                  printf("exiting..\n");                  printf("exiting..\n");
70                  return(HOST_NOT_FOUND);                  return(HOST_NOT_FOUND);
71    
72          } else if (h_errno == TRY_AGAIN) {              } else if (h_errno == TRY_AGAIN) {
73                  printf("[-] Temporary error.. Try Again!\n");                  printf("[-] Temporary error.. Try Again!\n");
74                  printf("exiting..\n");                  printf("exiting..\n");
75                  return(TRY_AGAIN);                  return(TRY_AGAIN);
76    
77          } else if (h_errno == NO_RECOVERY) {              } else if (h_errno == NO_RECOVERY) {
78                  printf("[-] Unexpected Server Error!\n");                  printf("[-] Unexpected Server Error!\n");
79                  printf("exiting..\n");                  printf("exiting..\n");
80                  return(NO_RECOVERY);                  return(NO_RECOVERY);
81    
82          } else if (h_errno == NO_DATA) {              } else if (h_errno == NO_DATA) {
83                  printf("[-] HostName has not IP Address!\n");                  printf("[-] HostName has not IP Address!\n");
84                  printf("exiting..\n");                  printf("exiting..\n");
85                  return(NO_DATA);                  return(NO_DATA);
86    
87          }              }
88    
89          } else {          } else {
90    
91          if (h_errno == HOST_NOT_FOUND) {              if (h_errno == HOST_NOT_FOUND) {
92                  return(HOST_NOT_FOUND);                  return(HOST_NOT_FOUND);
93    
94          } else if (h_errno == TRY_AGAIN) {              } else if (h_errno == TRY_AGAIN) {
95                  return(TRY_AGAIN);                  return(TRY_AGAIN);
96    
97          } else if (h_errno == NO_RECOVERY) {              } else if (h_errno == NO_RECOVERY) {
98                  return(NO_RECOVERY);                  return(NO_RECOVERY);
99    
100          } else if (h_errno == NO_DATA) {              } else if (h_errno == NO_DATA) {
101                  return(NO_DATA);                  return(NO_DATA);
102    
103          }              }
104    
105          }          }
106    
107          return -1;          return -1;
108    
109          }      }
110    
111          memset(ftp_server,0,sizeof(ftp_server));      memset(ftp_server,0,sizeof(ftp_server));
112          ftp_server->sin_port = htons(port);      ftp_server->sin_port = htons(port);
113          ftp_server->sin_family = AF_INET;      ftp_server->sin_family = AF_INET;
114                    
115          memcpy ((char *)&ftp_server->sin_addr,he->h_addr,he->h_length);      memcpy ((char *)&ftp_server->sin_addr,he->h_addr,he->h_length);
116    
117                    
118          ftp_connection.sin_family = AF_INET;      ftp_connection.sin_family = AF_INET;
119          memcpy ((char *)&ftp_connection.sin_addr, he->h_addr,he->h_length);      memcpy ((char *)&ftp_connection.sin_addr, he->h_addr,he->h_length);
   
         int sock;  
120    
121          sock = socket(AF_INET, SOCK_STREAM, 0);      sock = socket(AF_INET, SOCK_STREAM, 0);
122          if (sock == -1) {      if (sock == -1) {
123    
124          if (verbose) {          if (verbose) {
125          perror("Socket");              perror("Socket");
126          }          }
127    
128          return -1;          return -1;
129          }      }
   
         sleep(1);  
         struct timeval tm; //tv_sec - tv_usec  
         fd_set readfds;  
   
         if (connect(sock, (struct sockaddr *)ftp_server, sizeof(struct sockaddr)) != 0)  {  
             if (verbose) {  
                 perror("connect()");  
             }  
             return -1;  
         }  
130    
131        sleep(1);
132        if (connect(sock, (struct sockaddr *)ftp_server, sizeof(struct sockaddr)) != 0)  {
133          if (verbose) {          if (verbose) {
134              printf("[ Connected ]\n");              perror("connect()");
135          }          }
136            return -1;
137        }
138    
139        if (verbose) {
140            printf("[ Connected ]\n");
141        }
142                    
143    
144          char buf[1024];      buf[1023] = '\0';
145          buf[1023] = '\0';      FD_ZERO(&readfds);
         int n;  
         FD_ZERO(&readfds);  
146    
147          tm.tv_sec = 3;      tm.tv_sec = 3;
148          tm.tv_usec = 0;      tm.tv_usec = 0;
149    
150          FD_SET(sock, &readfds);      FD_SET(sock, &readfds);
151          sleep(1); //wait the banner..      sleep(1); //wait the banner..
152    
153          if (select(sock+1, &readfds, NULL, NULL, &tm) < 0 ) {      if (select(sock+1, &readfds, NULL, NULL, &tm) < 0 ) {
154            if (verbose) {
155                perror("select()");
156            }
157            return -1;
158        } else {
159    
160            if (FD_ISSET(sock, &readfds)) {
161                if ( (n = recv(sock, buf, 1022, 0)) < 0)  {
162                  if (verbose) {                  if (verbose) {
163                  perror("select()");                      perror("recv()");
164                  }                  }
165                  return -1;                  return -1;
166          } else {              }
167                buf[n] = '\0';
168    
169                  if (FD_ISSET(sock, &readfds)) {              if (verbose) {
170                          if ( (n = recv(sock, buf, 1022, 0)) < 0)  {                  printf("[Server] %s\n", buf);
171                                  if (verbose) {              }
172                                  perror("recv()");          }
173                                  }          else {
174                          return -1;              if (verbose)
175                          }                  printf("[-] Timeout\n");
                         buf[n] = '\0';  
   
                         if (verbose) {  
                         printf("[Server] %s\n", buf);  
                         }  
                 }  
                 else {  
                         if (verbose)  
                         printf("[-] Timeout\n");  
176                                                    
177                          return -1;              return -1;
                 }  
178          }          }
179        }
180    
181    
182          return sock; //Socket Descriptor returned!!      return sock; //Socket Descriptor returned!!
183  }  }
184    

Legend:
Removed from v.6  
changed lines
  Added in v.7

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26