diff --git a/globus-gridftp-server-cmd-string.patch b/globus-gridftp-server-cmd-string.patch new file mode 100644 index 0000000..fd26537 --- /dev/null +++ b/globus-gridftp-server-cmd-string.patch @@ -0,0 +1,74 @@ +diff --git a/globus_gridftp_server.h b/gridftp/server/src/globus_gridftp_server.h +index 3726a28..5a7a802 100644 +--- a/globus_gridftp_server.h ++++ b/globus_gridftp_server.h +@@ -1266,6 +1266,10 @@ globus_gfs_data_get_file_stack_list( + globus_gfs_operation_t in_op, + globus_list_t ** out_list); + ++char * ++globus_gfs_data_get_cmd_string( ++ globus_gfs_operation_t op); ++ + void + globus_gridftp_server_get_update_interval( + globus_gfs_operation_t op, +diff --git a/globus_i_gfs_control.c b/gridftp/server/src/globus_i_gfs_control.c +index 547ac0a..7256b35 100644 +--- a/globus_i_gfs_control.c ++++ b/globus_i_gfs_control.c +@@ -930,6 +930,20 @@ error_init: + GlobusGFSDebugExitWithError(); + } + ++char * ++globus_i_gsc_get_cmd_string( ++ void * user_arg) ++{ ++ globus_l_gfs_request_info_t * request; ++ char * cmd = NULL; ++ GlobusGFSName(globus_i_gsc_get_cmd_string); ++ ++ request = (globus_l_gfs_request_info_t *) user_arg; ++ cmd = globus_gridftp_server_control_get_cmd_string(request->control_op); ++ ++ return cmd; ++} ++ + globus_result_t + globus_i_gsc_cmd_intermediate_reply( + globus_gridftp_server_control_op_t op, +diff --git a/globus_i_gfs_control.h b/gridftp/server/src/globus_i_gfs_control.h +index cb070c2..150b9fa 100644 +--- a/globus_i_gfs_control.h ++++ b/globus_i_gfs_control.h +@@ -28,4 +28,8 @@ globus_i_gfs_control_start( + globus_i_gfs_server_close_cb_t close_func, + void * user_arg); + ++char * ++globus_i_gsc_get_cmd_string( ++ void * user_arg); ++ + #endif +diff --git a/globus_i_gfs_data.c b/gridftp/server/src/globus_i_gfs_data.c +index 8a429d6..9afd8af 100644 +--- a/globus_i_gfs_data.c ++++ b/globus_i_gfs_data.c +@@ -6771,6 +6771,16 @@ globus_gfs_data_get_file_stack_list( + } + } + ++char * ++globus_gfs_data_get_cmd_string( ++ globus_gfs_operation_t op) ++{ ++ char * cmd = NULL; ++ ++ cmd = globus_i_gsc_get_cmd_string(op->user_arg); ++ ++ return cmd; ++} + + static + globus_result_t diff --git a/globus-gridftp-server-epsv-ip.patch b/globus-gridftp-server-epsv-ip.patch new file mode 100644 index 0000000..560cf69 --- /dev/null +++ b/globus-gridftp-server-epsv-ip.patch @@ -0,0 +1,31 @@ +diff --git a/globus_i_gfs_config.c b/gridftp/server/src/globus_i_gfs_config.c +index 3f84549..022f83b 100644 +--- a/globus_i_gfs_config.c ++++ b/globus_i_gfs_config.c +@@ -430,6 +430,8 @@ static const globus_l_gfs_config_option_t option_list[] = + "This, along with -data-interface, can be used to enable operation behind " + "a firewall and/or when NAT is involved. " + "This is the same as setting the environment variable GLOBUS_TCP_PORT_RANGE.", NULL, NULL, GLOBUS_FALSE, NULL}, ++ {"epsv_ip", "epsv_ip", NULL, "epsv-ip", NULL, GLOBUS_L_GFS_CONFIG_BOOL, GLOBUS_FALSE, NULL, ++ "Adds an IPv6 address to EPSV response. Breaks RFC 2428, but allows redirection to work with IPv6.", NULL, NULL, GLOBUS_FALSE, NULL}, + {NULL, "User Messages", NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL,GLOBUS_FALSE, NULL}, + {"banner", "banner", NULL, "banner", NULL, GLOBUS_L_GFS_CONFIG_STRING, 0, NULL, + "Message to display to the client before authentication.", NULL, NULL,GLOBUS_TRUE, NULL}, +diff --git a/globus_i_gfs_control.c b/gridftp/server/src/globus_i_gfs_control.c +index 547ac0a..7a7f35d 100644 +--- a/globus_i_gfs_control.c ++++ b/globus_i_gfs_control.c +@@ -3664,6 +3664,13 @@ globus_i_gfs_control_start( + goto error_attr_setup; + } + ++ result = globus_gridftp_server_control_attr_set_epsv_ip( ++ attr, globus_i_gfs_config_bool("epsv_ip")); ++ if(result != GLOBUS_SUCCESS) ++ { ++ goto error_attr_setup; ++ } ++ + idle_timeout = globus_i_gfs_config_int("control_idle_timeout"); + preauth_timeout = globus_i_gfs_config_int("control_preauth_timeout"); + diff --git a/globus-gridftp-server.spec b/globus-gridftp-server.spec index ed6f198..0f7b0fb 100644 --- a/globus-gridftp-server.spec +++ b/globus-gridftp-server.spec @@ -9,7 +9,7 @@ Name: globus-gridftp-server %global _name %(tr - _ <<< %{name}) Version: 11.8 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Globus Toolkit - Globus GridFTP Server License: ASL 2.0 @@ -24,18 +24,24 @@ Source5: globus-gridftp-password.8 Source8: GLOBUS-GRIDFTP # Fix globus-gridftp-server-setup-chroot for kfreebsd and hurd Patch0: globus-gridftp-server-unames.patch +# Add an optional IPv6 address to EPSV response +# https://github.com/globus/globus-toolkit/pull/97 +Patch1: %{name}-epsv-ip.patch +# Get command string +# https://github.com/globus/globus-toolkit/pull/98 +Patch2: %{name}-cmd-string.patch Requires: globus-xio-gsi-driver%{?_isa} >= 2 Requires: globus-xio-udt-driver%{?_isa} >= 1 Requires: globus-common%{?_isa} >= 16 Requires: globus-xio%{?_isa} >= 5 -Requires: globus-gridftp-server-control%{?_isa} >= 4 +Requires: globus-gridftp-server-control%{?_isa} >= 5.0-3 Requires: globus-ftp-control%{?_isa} >= 7 BuildRequires: globus-common-devel >= 16 BuildRequires: globus-xio-devel >= 5 BuildRequires: globus-xio-gsi-driver-devel >= 2 BuildRequires: globus-gfork-devel >= 3 -BuildRequires: globus-gridftp-server-control-devel >= 4 +BuildRequires: globus-gridftp-server-control-devel >= 5.0-3 BuildRequires: globus-ftp-control-devel >= 7 BuildRequires: globus-authz-devel >= 2 BuildRequires: globus-usage-devel >= 3 @@ -102,6 +108,8 @@ Globus GridFTP Server Development Files %prep %setup -q -n %{_name}-%{version} %patch0 -p1 +%patch1 -p1 +%patch2 -p1 %build # Reduce overlinking @@ -237,6 +245,11 @@ fi %{_libdir}/pkgconfig/%{name}.pc %changelog +* Mon Apr 24 2017 Mattias Ellert - 11.8-4 +- Add patches from DPM developers: + - Add an optional IPv6 address to EPSV response + - Get command string + * Mon Mar 27 2017 Mattias Ellert - 11.8-3 - EPEL 5 End-Of-Life specfile clean-up - Remove Group and BuildRoot tags