7 #ifndef GLOBUS_I_GRIDFTP_SERVER_H
8 #define GLOBUS_I_GRIDFTP_SERVER_H
11 #include "globus_i_gridftp_server_config.h"
13 #include "globus_gridftp_server_control.h"
14 #include "globus_i_gfs_acl.h"
15 #include "globus_xio.h"
16 #include "globus_xio_system.h"
17 #include "globus_xio_tcp_driver.h"
18 #include "globus_xio_gsi.h"
19 #include "globus_ftp_control.h"
25 #if defined(GLOBUS_GRIDFTP_PRODUCTION) && defined(GRIDFTP_TEST_BUILD)
26 Do not set GRIDFTP_TEST_BUILD on production builds!
30 #define _GSSL(s) globus_common_i18n_get_string_by_key(\
32 "globus_gridftp_server", \
35 #define _FSSL(s,p) globus_common_i18n_get_string_by_key(\
37 "globus_gridftp_server", \
41 (*globus_i_gfs_server_close_cb_t)(
43 globus_object_t * error);
45 typedef struct globus_i_gfs_monitor_s
50 } globus_i_gfs_monitor_t;
52 typedef struct gfs_i_stack_entry_s
54 globus_xio_driver_t driver;
57 } gfs_i_stack_entry_t;
66 globus_bool_t has_pathname;
68 } globus_i_gfs_cmd_ent_t;
70 typedef struct globus_i_gfs_op_info_s
73 globus_hashtable_t custom_command_table;
77 globus_i_gfs_cmd_ent_t * cmd_ent;
80 } globus_i_gfs_op_info_t;
83 globus_i_gfs_monitor_init(
84 globus_i_gfs_monitor_t * monitor);
87 globus_i_gfs_monitor_destroy(
88 globus_i_gfs_monitor_t * monitor);
91 globus_i_gfs_monitor_wait(
92 globus_i_gfs_monitor_t * monitor);
95 globus_i_gfs_monitor_signal(
96 globus_i_gfs_monitor_t * monitor);
99 globus_i_gfs_ipc_stop();
102 globus_i_gfs_control_stop();
105 globus_i_gfs_control_init();
108 globus_i_gfs_brain_init(
109 globus_callback_func_t ready_cb,
110 void * ready_cb_arg);
113 globus_i_gfs_control_end_421(
117 globus_l_gfs_data_brain_ready(
121 globus_i_gfs_get_full_path(
122 const char * home_dir,
123 const char * server_cwd,
125 const char * in_path,
129 #define GlobusGFSErrorGenericStr(_res, _fmt) \
133 _tmp_str = globus_common_create_string _fmt; \
134 _res = globus_error_put( \
135 globus_error_construct_error( \
138 GLOBUS_GFS_ERROR_GENERIC, \
144 globus_free(_tmp_str); \
148 extern globus_gfs_acl_module_t globus_gfs_acl_cas_module;
149 extern globus_gfs_acl_module_t globus_gfs_acl_test_module;
151 typedef enum globus_l_gfs_auth_level_e
153 GLOBUS_L_GFS_AUTH_NONE = 0x00,
154 GLOBUS_L_GFS_AUTH_IDENTIFY = 0x01,
155 GLOBUS_L_GFS_AUTH_ACTION = 0x02,
156 GLOBUS_L_GFS_AUTH_NOSETUID = 0x04,
157 GLOBUS_L_GFS_AUTH_NOGRIDMAP = 0x08,
158 GLOBUS_L_GFS_AUTH_DATA_NODE_PATH = 0x10,
159 GLOBUS_L_GFS_AUTH_ALL = 0xFF
160 } globus_l_gfs_auth_level_t;
162 #define GFS_L_AUTHTYPE_FTP 1<<0
163 #define GFS_L_AUTHTYPE_IPC 1<<1
164 #define GFS_L_AUTHTYPE_HTTP 1<<2
165 #define GFS_L_AUTHTYPE_GSI 1<<3
166 #define GFS_L_AUTHTYPE_TLS 1<<4
167 #define GFS_L_AUTHTYPE_SHARING 1<<5
169 #define GLOBUS_GCP_PREFIX ":globus-gcp:"
170 #define GLOBUS_MAPPED_PREFIX ":globus-mapped-collection:"
173 globus_i_gfs_data_parse_mapped_login_username(
175 const char * login_username,
176 char ** collection_idp,
177 char ** identity_idsp,
178 char ** identity_namesp,
179 char ** desired_userp,
180 int * high_assurance);
182 #define GLOBUS_SHARING_PREFIX ":globus-sharing:"
185 globus_i_gfs_data_parse_sharing_login_username(
186 const char * login_username,
188 char ** collection_idp,
191 int * high_assurance);
193 #define GLOBUS_TUNNEL_PREFIX ":globus-tunnel:"
196 globus_i_gfs_data_parse_tunnel_login_username(
197 const char * login_username,
198 char ** stream_ap_idp,
200 char ** identity_idsp,
201 char ** identity_namesp,
202 char ** desired_userp);
206 globus_gfs_base64_encode(
207 const unsigned char * inbuf,
208 globus_size_t in_len,
209 globus_byte_t * outbuf,
210 globus_size_t * out_len);
213 #include "globus_i_gfs_log.h"
214 #include "globus_i_gfs_control.h"
215 #include "globus_i_gfs_ipc.h"
216 #include "globus_i_gfs_data.h"
217 #include "globus_i_gfs_config.h"
218 #include "globus_i_gfs_gcs_db.h"
219 #include "gfs_i_recv_cache.h"
220 #include "gfs_i_openssl.h"