source: TI05-delivery/trunk/src/bbftp-server-3.2.0/bbftpd/bbftpd_private_user.c @ 1064

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/trunk/src/bbftp-server-3.2.0/bbftpd/bbftpd_private_user.c@1064
Revision 1064, 7.7 KB checked in by spascoe, 14 years ago (diff)

A python module which provides a function to start the daemon can be
built using the setup.py script. This method of invoking the server
has been briefly tested but no test cases yet.

I've taken out the initialisation/finalisation hooks from the auth API because
we shouldn't need them now. They were written assuming the python interpretter
was going to be embedded within bbftpd, but I've inverted the embedding by
wrapping bbftpd.c:main in a python extension function.

Line 
1/*
2 * bbftpd/bbftpd_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 bbftpd_private_user.c  v 2.1.0 2001/05/21  - Routines creation
27
28*****************************************************************************/
29#include <netinet/in.h>
30#include <utime.h>
31
32#include <bbftpd.h>
33#include <daemon_proto.h>
34#include <structures.h>
35#include <syslog.h>
36
37#include <bbftpd_private_user.h>
38
39extern char currentusername[MAXLEN] ;
40
41
42
43/*******************************************************************************
44** bbftpd_private_auth :                                                       *
45**                                                                             *
46**      Routine to do the private authentication. This routine just have to    *
47**      send or to receive private data to the bbftpd daemon. For that it will *
48**      use the two routines :                                                 *
49**          bbftpd_private_send                                                *
50**          bbftpd_private_recv                                                *
51**      The reception of the OK or BAD message will be done by the calling     *
52**      routine, so if this routine has no check to do (for example just       *
53**      sending username and password) it will just call bbftp_private_send    *
54**      twice and let the calling program check if it is OK or BAD.            *
55**                                                                             *
56**      The bbftp_private_send routine has to be called with the following     *
57**      parameters:                                                            *
58**                                                                             *
59**      int bbftpd_private_send(char *buffertosend,int buffertosendlength,     *
60**                             char *logmessage)                               *
61**          char    *buffertosend = string to be send to the daemon            *
62**          int     buffertosendlength = length of the string                  *
63**          char    *logmessage                                                *
64**                                                                             *
65**      and return 0 in case of success, -1 in case of error with logmessage   *
66**      filled                                                                 *
67**                                                                             *
68**      The bbftpd_private_recv routine has to be called with the following    *
69**      parameters:                                                            *
70**                                                                             *
71**      int bbftpd_private_recv(char *buffertorecv,int lengthtoreceive,        *
72**                             char *logmessage)                               *
73**          char    *buffertorecv = string to be send to the daemon            *
74**          int     lengthtorecv = length to be received                       *
75**          char    *logmessage                                                *
76**                                                                             *
77**      and return number of byte received in case of success, -1 in case of   *
78**      error with logmessage filled                                           *
79**      It is the duty of the programmer to take care that the buffer is large *
80**      enought                                                                *
81**                                                                             *
82**                                                                             *
83**      OUPUT variable :                                                       *
84**          logmessage :  to write the error message in case of error          *
85**                                                                             *
86**      GLOBAL VARIABLE USED :                                                 *
87**                                                                             *
88**                                                                             *
89**      RETURN:                                                                *
90**          -1  Unrecoverable error                                            *
91**           0  OK                                                             *
92**                                                                             *
93*******************************************************************************/
94
95int bbftpd_private_auth(char *logmessage)
96{
97  char msg[NDG_MESSAGE_LEN];
98  /* Send version verification message.  */
99  if (bbftpd_private_recv(msg, NDG_MESSAGE_LEN, logmessage) == -1) {
100    return -1;
101  }
102  else {
103    syslog(LOG_DEBUG, "Received auth message: %s", msg);
104  }
105
106  return 0 ;
107}
108
109
110#ifdef NDG_AUTH
111
112/*
113** bbftpd_private_authz_control :
114**
115**    Routine to authorise bbftp control commands. 
116**
117**    INPUT variables:
118**        msgcode : The message code from struct message
119**        transferoptions : TROPT_* options
120**        path : path to apply command to
121**
122**    OUTPUT variables:
123**        logmessage : to write the error message in case of failure
124**
125**    RETURN:
126**       -1  Authorisation failed
127**        0  OK
128**
129**
130*/
131int bbftpd_private_authz_control(int msgcode, int transferoption, char *path, char *logmessage)
132{
133
134  switch (msgcode) {
135  case MSG_CHDIR_V2:
136    syslog(LOG_DEBUG, "Authz: MSG_DIR 0x%x %s", transferoption, path);
137    break;
138  case MSG_LIST_V2:
139    syslog(LOG_DEBUG, "Authz: MSG_LIST_V2 0x%x %s", transferoption, path);
140    break;
141  case MSG_MKDIR_V2:
142    syslog(LOG_DEBUG, "Authz: MSG_MKDIR_V2 0x%x %s", transferoption, path);
143    break;
144  case MSG_RM:
145    syslog(LOG_DEBUG, "Authz: MSG_RM 0x%x %s", transferoption, path);
146    break;
147  case MSG_STAT:
148    syslog(LOG_DEBUG, "Authz: MSG_STAT 0x%x %s", transferoption, path);
149    break;
150  case MSG_DF:
151    syslog(LOG_DEBUG, "Authz: MSG_DF 0x%x %s", transferoption, path);
152    break;
153  default:
154    sprintf(logmessage, "Unrecognised message to authorise %d", msgcode);
155    return -1;
156  }
157
158  return 0;
159}
160
161
162/*
163** bbftpd_private_authz_retr :
164**
165**     Routine to authorise file retrieve requests.
166**
167**     INPUT variables:
168**         path: the file to retrieve
169**
170**    OUTPUT variables:
171**        logmessage : to write the error message in case of failure
172**
173**    RETURN:
174**       -1  Authorisation failed
175**        0  OK
176**
177*/
178int bbftpd_private_authz_retr(char *path, char *logmessage)
179{
180  syslog(LOG_DEBUG, "Authz: RETR %s", path);
181  return 0;
182}
183
184/*
185** bbftpd_private_authz_store :
186**
187**     Routine to authorise file store requests.
188**
189**     INPUT variables:
190**         path: the file to store
191**
192**    OUTPUT variables:
193**        logmessage : to write the error message in case of failure
194**
195**    RETURN:
196**       -1  Authorisation failed
197**        0  OK
198**
199*/
200
201int bbftpd_private_authz_store(char *path, char *logmessage)
202{
203  syslog(LOG_DEBUG, "Authz: STORE %s", path);
204  return 0;
205}
206#endif // NDG_AUTH
Note: See TracBrowser for help on using the repository browser.