00001 #ifndef VSF_SESSION_H 00002 #define VSF_SESSION_H 00003 00004 #ifndef VSFTP_STR_H 00005 #include "str.h" 00006 #endif 00007 00008 #ifndef VSF_FILESIZE_H 00009 #include "filesize.h" 00010 #endif 00011 00012 struct vsf_sysutil_sockaddr; 00013 struct mystr_list; 00014 00015 /* This struct contains variables specific to the state of the current FTP 00016 * session 00017 */ 00018 struct vsf_session 00019 { 00020 /* Details of the control connection */ 00021 struct vsf_sysutil_sockaddr* p_local_addr; 00022 struct vsf_sysutil_sockaddr* p_remote_addr; 00023 char* p_control_line_buf; 00024 00025 /* Details of the data connection */ 00026 int pasv_listen_fd; 00027 struct vsf_sysutil_sockaddr* p_port_sockaddr; 00028 int data_fd; 00029 int data_progress; 00030 unsigned int bw_rate_max; 00031 long bw_send_start_sec; 00032 long bw_send_start_usec; 00033 00034 /* Details of the login */ 00035 int is_anonymous; 00036 struct mystr user_str; 00037 struct mystr anon_pass_str; 00038 00039 /* Details of the FTP protocol state */ 00040 filesize_t restart_pos; 00041 int is_ascii; 00042 struct mystr rnfr_filename_str; 00043 int abor_received; 00044 int epsv_all; 00045 00046 /* Details of FTP session state */ 00047 struct mystr_list* p_visited_dir_list; 00048 00049 /* Details of userids which are interesting to us */ 00050 int anon_ftp_uid; 00051 int guest_user_uid; 00052 int anon_upload_chown_uid; 00053 00054 /* Things we need to cache before we chroot() */ 00055 struct mystr banned_email_str; 00056 struct mystr email_passwords_str; 00057 struct mystr userlist_str; 00058 struct mystr banner_str; 00059 int tcp_wrapper_ok; 00060 00061 /* Logging related details */ 00062 int xferlog_fd; 00063 int vsftpd_log_fd; 00064 struct mystr remote_ip_str; 00065 unsigned long log_type; 00066 long log_start_sec; 00067 long log_start_usec; 00068 struct mystr log_str; 00069 filesize_t transfer_size; 00070 00071 /* Buffers */ 00072 struct mystr ftp_cmd_str; 00073 struct mystr ftp_arg_str; 00074 00075 /* Parent<->child comms channel */ 00076 int parent_fd; 00077 int child_fd; 00078 00079 /* Other details */ 00080 unsigned int num_clients; 00081 unsigned int num_this_ip; 00082 struct mystr home_str; 00083 00084 /* Secure connections state */ 00085 int control_use_ssl; 00086 int data_use_ssl; 00087 void* p_ssl_ctx; 00088 void* p_control_ssl; 00089 void* p_data_ssl; 00090 int ssl_slave_active; 00091 int ssl_slave_fd; 00092 int ssl_consumer_fd; 00093 unsigned int login_fails; 00094 }; 00095 00096 #endif /* VSF_SESSION_H */ 00097