Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/ftp_user.c

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

trunk/ftp_auth.c revision 17 by hirohitohigashi, Wed Feb 25 13:47:38 2009 UTC trunk/ftp_user.c revision 29 by hirohitohigashi, Sat Feb 28 12:48:31 2009 UTC
# Line 38  Line 38 
38   *@note   *@note
39   * 認証後、定型的なコマンドも送信する。   * 認証後、定型的なコマンドも送信する。
40   */   */
41  int ftp_auth( LIBOFTP *ftp, const char *user, const char *pass )  int ftp_user( LIBOFTP *ftp, const char *user, const char *pass )
42  {  {
43      char str1[256];      char str1[256];
44      int ret;      int res;
45    
46      /*      /*
47       * send user name.       * send user name.
48       */       */
49      snprintf( str1, sizeof(str1)-1, "USER %s\r\n", user );      snprintf( str1, sizeof(str1)-1, "USER %s\r\n", user );
50      if( sendn( ftp->socket, str1, strlen( str1 ), 0 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
51          DEBUGPRINT1( "auth: user command sending error.%s\n", "" );          DEBUGPRINT1( "user command sending error.%s\n", "" );
52          return -1;          return LIBOFTP_ERROR_OS;
53      }      }
54    
55      if( ftp_receive_response( ftp, 0, 0 ) == 230 ) {            /* 230: User logged in, proceed. */      res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
56        if( res == 230 ) {                                          /* 230: User logged in, proceed. */
57          goto PROCEED;          goto PROCEED;
58      }      }
59        if( res != 331 ) {                                          /* 331: User name okay, need password. */
60            DEBUGPRINT1( "USER command response error. %d\n", res );
61            return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
62        }
63    
64      /*      /*
65       * send password.       * send password.
66       */       */
67      snprintf( str1, sizeof(str1)-1, "PASS %s\r\n", pass );      snprintf( str1, sizeof(str1)-1, "PASS %s\r\n", pass );
68      if( sendn( ftp->socket, str1, strlen( str1 ), 0 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
69          DEBUGPRINT1( "auth: pass command sending error.%s\n", "" );          DEBUGPRINT1( "pass command sending error.%s\n", "" );
70          return -1;          return LIBOFTP_ERROR_OS;
71      }      }
72            
73      if( ftp_receive_response( ftp, 0, 0 ) != 230 ) {            /* 230: User logged in, proceed. */      res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
74          DEBUGPRINT1( "auth: user authentication error.%s\n", "" );      if( res != 230 ) {                                          /* 230: User logged in, proceed. */
75          return -2;          DEBUGPRINT1( "user authentication error.%s\n", "" );
76            return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
77      }      }
78    
79  PROCEED:  PROCEED:
# Line 75  PROCEED: Line 81  PROCEED:
81       * system type.       * system type.
82       */       */
83      snprintf( str1, sizeof(str1)-1, "SYST\r\n" );      snprintf( str1, sizeof(str1)-1, "SYST\r\n" );
84      if( sendn( ftp->socket, str1, strlen( str1 ), 0 ) < 0 ) {      if( ftp_send_command( ftp, str1 ) < 0 ) {
85          DEBUGPRINT1( "auth: syst command sending error.%s\n", "" );          DEBUGPRINT1( "SYST command sending error.%s\n", "" );
86          return -1;          return LIBOFTP_ERROR_OS;
87      }      }
88    
89      ret = ftp_receive_response( ftp, str1, sizeof(str1) );      res = ftp_receive_response( ftp, str1, sizeof(str1) );
90      if( ret == 215 ) {      if( res == 215 ) {
91          if( strstr( str1, "UNIX" ) != 0 ) {          if( strstr( str1, "UNIX" ) != 0 ) {
92              ftp->system_type = UNIX;              ftp->system_type = UNIX;
93          } else if( strstr( str1, "Windows_NT" ) != 0 ) {          } else if( strstr( str1, "Windows_NT" ) != 0 ) {
94              ftp->system_type = Windows_NT;              ftp->system_type = Windows_NT;
95          }          }
96          DEBUGPRINT1( "auth: system type is %d\n", ftp->system_type );          DEBUGPRINT1( "system type is %d\n", ftp->system_type );
97      }      }
98    
99      return 0;      return LIBOFTP_NOERROR;
100  }  }
101            
102    

Legend:
Removed from v.17  
changed lines
  Added in v.29

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