7 #ifndef GLOBUS_I_GRIDFTP_SERVER_H
8 #define GLOBUS_I_GRIDFTP_SERVER_H
10 #include "globus_i_gridftp_server_config.h"
12 #include "globus_gridftp_server_control.h"
13 #include "globus_i_gfs_acl.h"
14 #include "globus_xio.h"
15 #include "globus_xio_system.h"
16 #include "globus_xio_tcp_driver.h"
17 #include "globus_xio_gsi.h"
18 #include "globus_ftp_control.h"
19 #include "globus_gsi_authz.h"
21 #define _GSSL(s) globus_common_i18n_get_string_by_key(\
23 "globus_gridftp_server", \
26 #define _FSSL(s,p) globus_common_i18n_get_string_by_key(\
28 "globus_gridftp_server", \
32 (*globus_i_gfs_server_close_cb_t)(
34 globus_object_t * error);
36 typedef struct globus_i_gfs_monitor_s
41 } globus_i_gfs_monitor_t;
43 typedef struct gfs_i_stack_entry_s
45 globus_xio_driver_t driver;
48 } gfs_i_stack_entry_t;
57 globus_bool_t has_pathname;
59 } globus_i_gfs_cmd_ent_t;
61 typedef struct globus_i_gfs_op_info_s
64 globus_hashtable_t custom_command_table;
68 globus_i_gfs_cmd_ent_t * cmd_ent;
71 } globus_i_gfs_op_info_t;
74 globus_i_gfs_monitor_init(
75 globus_i_gfs_monitor_t * monitor);
78 globus_i_gfs_monitor_destroy(
79 globus_i_gfs_monitor_t * monitor);
82 globus_i_gfs_monitor_wait(
83 globus_i_gfs_monitor_t * monitor);
86 globus_i_gfs_monitor_signal(
87 globus_i_gfs_monitor_t * monitor);
90 globus_i_gfs_ipc_stop();
93 globus_i_gfs_control_stop();
96 globus_i_gfs_control_init();
99 globus_i_gfs_brain_init(
100 globus_callback_func_t ready_cb,
101 void * ready_cb_arg);
104 globus_i_gfs_control_end_421(
108 globus_l_gfs_data_brain_ready(
112 globus_i_gfs_get_full_path(
113 const char * home_dir,
114 const char * server_cwd,
116 const char * in_path,
120 #define GlobusGFSErrorGenericStr(_res, _fmt) \
124 _tmp_str = globus_common_create_string _fmt; \
125 _res = globus_error_put( \
126 globus_error_construct_error( \
129 GLOBUS_GFS_ERROR_GENERIC, \
135 globus_free(_tmp_str); \
139 extern globus_gfs_acl_module_t globus_gfs_acl_cas_module;
140 extern globus_gfs_acl_module_t globus_gfs_acl_test_module;
142 typedef enum globus_l_gfs_auth_level_e
144 GLOBUS_L_GFS_AUTH_NONE = 0x00,
145 GLOBUS_L_GFS_AUTH_IDENTIFY = 0x01,
146 GLOBUS_L_GFS_AUTH_ACTION = 0x02,
147 GLOBUS_L_GFS_AUTH_NOSETUID = 0x04,
148 GLOBUS_L_GFS_AUTH_NOGRIDMAP = 0x08,
149 GLOBUS_L_GFS_AUTH_DATA_NODE_PATH = 0x10,
150 GLOBUS_L_GFS_AUTH_ALL = 0xFF
151 } globus_l_gfs_auth_level_t;
153 #define GFS_L_AUTHTYPE_FTP 1<<0
154 #define GFS_L_AUTHTYPE_IPC 1<<1
155 #define GFS_L_AUTHTYPE_HTTP 1<<2
156 #define GFS_L_AUTHTYPE_GSI 1<<3
157 #define GFS_L_AUTHTYPE_TLS 1<<4
158 #define GFS_L_AUTHTYPE_SHARING 1<<5
160 #define GLOBUS_GCP_PREFIX ":globus-gcp:"
161 #define GLOBUS_MAPPED_PREFIX ":globus-mapped-collection:"
164 globus_i_gfs_data_parse_mapped_login_username(
166 const char * login_username,
167 char ** collection_idp,
168 char ** identity_idsp,
169 char ** identity_namesp,
170 char ** desired_userp,
171 int * high_assurance);
173 #define GLOBUS_SHARING_PREFIX ":globus-sharing:"
176 globus_i_gfs_data_parse_sharing_login_username(
177 const char * login_username,
179 char ** collection_idp,
183 int * high_assurance);
186 globus_i_gfs_base64_encode(
187 const unsigned char * inbuf,
188 globus_size_t in_len,
189 globus_byte_t * outbuf,
190 globus_size_t * out_len);
193 #include "globus_i_gfs_log.h"
194 #include "globus_i_gfs_control.h"
195 #include "globus_i_gfs_ipc.h"
196 #include "globus_i_gfs_data.h"
197 #include "globus_i_gfs_config.h"
198 #include "globus_i_gfs_gcs_db.h"