Documentation

Generated on Thu Aug 31 00:02:30 2006

 

User.h

Go to the documentation of this file.
00001 
00002 // $Id: User.h,v 1.100 2005/08/24 21:07:45 klas Exp $
00003 //
00004 // Usage: Holds information about connected users.
00005 //
00006 //  A part of babyftpd, licensed under the GNU GPL, see the file
00007 //    LICENSE for complete information.
00009 
00010 #ifndef USER_H
00011 #define USER_H
00012 
00013 #ifdef USER_CPP
00014 #include "generic.h"
00015 #include "Utilities.h"
00016 #include "Configuration.h"
00017 #include "Log.h"
00018 #include "Connection.h"
00019 #include "Data.h"
00020 #include "Commands.h"
00021 #endif
00022 
00023 enum logged { NOT_LOGGED_IN, USER_SUPPLIED, LOGGED_IN };
00024 
00025 class User : public Connection
00026 {
00027   public:
00028     User(int socket_id, struct sockaddr_in &addr);
00029     vector<Data*>::iterator get_data_it(pthread_t);
00030     User &operator>>(string &message);
00031     bool data_vec_full();
00032     bool login();
00033     ~User();
00034     vector<Data*> data_vec;
00035     MEMBER(logged_in, int);
00036     MEMBER(data_id, int);
00037     MEMBER(data_addr, struct sockaddr_in);
00038     MEMBER(current_dir, string);
00039     MEMBER(root_dir, string);
00040     MEMBER(temp_buf, string); // is this for anything but rename?
00041     MEMBER(failed_logins, int);
00042     MEMBER(pamh, pam_handle_t*);
00043     MEMBER(rest_pos, off_t);
00044     MEMBER(anonymous_id, string);
00045 };
00046 
00047 vector<User*>::iterator get_user_it(pthread_t);
00048 void kill_user(void*);
00049 
00050 extern pthread_key_t my_user;
00051 extern pthread_rwlock_t user_list_lock;
00052 extern vector<User*> user_list;
00053 
00054 #endif // USER_H