Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /tags/REL-2.1/ftp_user.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 48 - (hide annotations) (download) (as text)
Sun Mar 8 07:32:44 2009 UTC (15 years, 1 month ago) by hirohitohigashi
File MIME type: text/x-csrc
File size: 3309 byte(s)
Tag release 2.1
1 hirohitohigashi 17 /*
2     liboftp: this is an FTP library to simplify the work to a Developer
3     who want to work with FTP servers (RFC 959).
4    
5     Copyright (c) 2009 hirohito higashi. All rights reserved.
6     This file is distributed under BSD license.
7     */
8    
9    
10     /***** Feature test switches ************************************************/
11     /***** System headers *******************************************************/
12     #include <stdio.h>
13     #include <string.h>
14    
15    
16     /***** Local headers ********************************************************/
17     #include "liboftp.h"
18     #include "sub.h"
19    
20    
21     /***** Constat values *******************************************************/
22     /***** Macros ***************************************************************/
23     /***** Typedefs *************************************************************/
24     /***** Function prototypes **************************************************/
25     /***** Local variables ******************************************************/
26     /***** Global variables *****************************************************/
27     /***** Signal catching functions ********************************************/
28     /***** Local functions ******************************************************/
29     /***** Global functions *****************************************************/
30    
31     /****************************************************************************/
32     /*! ���������������
33     *
34     *@param ftp LIBOFTP���������������������
35     *@param user ������������
36     *@param pass ���������������
37     *@retval int ������������������
38     *@note
39     * ������������������������������������������������������
40     */
41 hirohitohigashi 25 int ftp_user( LIBOFTP *ftp, const char *user, const char *pass )
42 hirohitohigashi 17 {
43     char str1[256];
44 hirohitohigashi 29 int res;
45 hirohitohigashi 17
46     /*
47     * send user name.
48     */
49     snprintf( str1, sizeof(str1)-1, "USER %s\r\n", user );
50 hirohitohigashi 20 if( ftp_send_command( ftp, str1 ) < 0 ) {
51 hirohitohigashi 29 DEBUGPRINT1( "user command sending error.%s\n", "" );
52     return LIBOFTP_ERROR_OS;
53 hirohitohigashi 17 }
54    
55 hirohitohigashi 29 res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
56     if( res == 230 ) { /* 230: User logged in, proceed. */
57 hirohitohigashi 17 goto PROCEED;
58     }
59 hirohitohigashi 29 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 hirohitohigashi 25 }
63 hirohitohigashi 17
64     /*
65     * send password.
66     */
67     snprintf( str1, sizeof(str1)-1, "PASS %s\r\n", pass );
68 hirohitohigashi 20 if( ftp_send_command( ftp, str1 ) < 0 ) {
69 hirohitohigashi 29 DEBUGPRINT1( "pass command sending error.%s\n", "" );
70     return LIBOFTP_ERROR_OS;
71 hirohitohigashi 17 }
72    
73 hirohitohigashi 29 res = ftp_receive_response( ftp, ftp->error_message, sizeof(ftp->error_message) );
74     if( res != 230 ) { /* 230: User logged in, proceed. */
75     DEBUGPRINT1( "user authentication error.%s\n", "" );
76     return res < 0? res: LIBOFTP_ERROR_PROTOCOL;
77 hirohitohigashi 17 }
78    
79     PROCEED:
80     /*
81     * system type.
82     */
83     snprintf( str1, sizeof(str1)-1, "SYST\r\n" );
84 hirohitohigashi 20 if( ftp_send_command( ftp, str1 ) < 0 ) {
85 hirohitohigashi 29 DEBUGPRINT1( "SYST command sending error.%s\n", "" );
86     return LIBOFTP_ERROR_OS;
87 hirohitohigashi 17 }
88    
89 hirohitohigashi 29 res = ftp_receive_response( ftp, str1, sizeof(str1) );
90     if( res == 215 ) {
91 hirohitohigashi 17 if( strstr( str1, "UNIX" ) != 0 ) {
92     ftp->system_type = UNIX;
93     } else if( strstr( str1, "Windows_NT" ) != 0 ) {
94     ftp->system_type = Windows_NT;
95     }
96 hirohitohigashi 29 DEBUGPRINT1( "system type is %d\n", ftp->system_type );
97 hirohitohigashi 17 }
98    
99 hirohitohigashi 29 return LIBOFTP_NOERROR;
100 hirohitohigashi 17 }
101    
102    

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