source: TI05-delivery/trunk/src/bbftp-client-3.2.0/bbftpc/bbftp_private_user.c @ 1077

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/trunk/src/bbftp-client-3.2.0/bbftpc/bbftp_private_user.c@1077
Revision 1077, 7.4 KB checked in by spascoe, 13 years ago (diff)

Implemented full client-server handshake. A version message is now
exchanged client->server then server->client. These messages are logged
in debug mode. Message passing is implemented in Python on the server (at the
moment this is only implemented within test/test_embedded.py).

Line 
1/*
2 * bbftpc/bbftp_private_user.c
3 * Copyright (C) 1999, 2000, 2001, 2002 IN2P3, CNRS
4 * bbftp@in2p3.fr
5 * http://doc.in2p3.fr/bbftp
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 */ 
21
22/****************************************************************************
23
24 
25 
26 bbftp_private_user.c   v 2.1.0 2001/05/21  - Routines creation
27
28*****************************************************************************/
29#include <stdio.h>
30
31#include <bbftp_private_user.h>
32#include <client.h>
33
34/*
35** username contain a pointer to the string given with the -u flag
36*/
37extern char *username ;
38/*
39** privatestr contain a pointer to the string given with the -P flag
40*/
41extern char *privatestr ;
42
43extern int debug;
44
45/* From bbftp_util.c */
46void printmessage(FILE *strm , int flag, int errcode, int tok, char *fmt, ...);
47
48
49/*******************************************************************************
50** bbftp_private_getargs :                                                     *
51**                                                                             *
52**      Routine to get arguments for private authentication. This routine is   *
53**      called after several tests have been made. The variable to be set are  *
54**      to be define in bbftp_private_user.h to be used by other routines.     *
55**                                                                             *
56**      OUPUT variable :                                                       *
57**          logmessage :  to write the error message in case of error          *
58**                                                                             *
59**      GLOBAL VARIABLE USED :                                                 *
60**                                                                             *
61**                                                                             *
62**      RETURN:                                                                *
63**          -1  Unrecoverable error                                            *
64**           0  OK                                                             *
65**                                                                             *
66*******************************************************************************/
67
68int bbftp_private_getargs(char *logmessage)
69{
70    return 0 ;
71}
72
73/*******************************************************************************
74** bbftp_private_auth :                                                        *
75**                                                                             *
76**      Routine to do the private authentication. This routine just have to    *
77**      send or to receive private data to the bbftpd daemon. For that it will *
78**      use the two routines :                                                 *
79**          bbftp_private_send                                                 *
80**          bbftp_private_recv                                                 *
81**      The reception of the OK or BAD message will be done by the calling     *
82**      routine, so if this routine has no check to do (for example just       *
83**      sending username and password) it will just call bbftp_private_send    *
84**      twice and let the calling program check if it is OK or BAD.            *
85**                                                                             *
86**      The bbftp_private_send routine has to be called with the following     *
87**      parameters:                                                            *
88**                                                                             *
89**      int bbftp_private_send(char *buffertosend,int buffertosendlength,      *
90**                             char *logmessage)                               *
91**          char    *buffertosend = string to be send to the daemon            *
92**          int     buffertosendlength = length of the string                  *
93**          char    *logmessage                                                *
94**                                                                             *
95**      and return 0 in case of success, -1 in case of error with logmessage   *
96**      filled                                                                 *
97**                                                                             *
98**      The bbftp_private_recv routine has to be called with the following     *
99**      parameters:                                                            *
100**                                                                             *
101**      int bbftp_private_recv(char *buffertorecv,int lengthtoreceive,         *
102**                             char *logmessage)                               *
103**          char    *buffertorecv = buffer to put data received from the       *
104**                                  daemon                                     *
105**          int     lengthtorecv = length of the buffer                        *
106**          char    *logmessage                                                *
107**                                                                             *
108**      and return number of byte received in case of success, -1 in case of   *
109**      error with logmessage filled                                           *
110**      It is the duty of the programmer to be sure that the buffer is large   *
111**      enought                                                                *
112**                                                                             *
113**                                                                             *
114**      OUPUT variable :                                                       *
115**          logmessage :  to write the error message in case of error          *
116**                                                                             *
117**      GLOBAL VARIABLE USED :                                                 *
118**                                                                             *
119**      RETURN:                                                                *
120**          -1  Unrecoverable error                                            *
121**           0  OK                                                             *
122**                                                                             *
123*******************************************************************************/
124
125int bbftp_private_auth(char *logmessage) 
126{
127  char msg[NDG_MESSAGE_LEN];
128
129  /* Send version verification message.  */
130  sprintf(msg, "%.*s", NDG_MESSAGE_LEN - 1, NDG_HANDSHAKE);
131  if (bbftp_private_send(msg, NDG_MESSAGE_LEN, logmessage) == -1) {
132    return -1;
133  }
134
135  /* Receive response */
136  if (bbftp_private_recv(msg, NDG_MESSAGE_LEN, logmessage) == -1) {
137    return -1;
138  }
139
140  if (debug) {
141    printmessage(stdout,CASE_NORMAL,0,0,"Received Auth handshake: %s\n", msg) ;
142  }
143
144  return  0 ;
145}
Note: See TracBrowser for help on using the repository browser.