? passive_mode.patch Index: drupal_ftp.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/drupal_ftp/drupal_ftp.module,v retrieving revision 1.5 diff -u -p -r1.5 drupal_ftp.module --- drupal_ftp.module 28 Jun 2007 21:08:57 -0000 1.5 +++ drupal_ftp.module 22 Sep 2009 03:07:14 -0000 @@ -11,6 +11,7 @@ define('DRUPAL_FTP_DEFAULT_SERVER', 'ftp define('DRUPAL_FTP_DEFAULT_USERNAME', 'anonymous'); define('DRUPAL_FTP_DEFAULT_PASSWORD', 'someone@somewhere.com'); define('DRUPAL_FTP_DEFAULT_HOME_DIRECTORY', '/pub/drupal/'); +define('DRUPAL_FTP_DEFAULT_PASSIVE_MODE', 0); /** * creates a new ftp object. if any elements of ftp_map are missing, they'll be filled with the server defaults. @@ -22,6 +23,7 @@ function drupal_ftp_ftp_object($ftp_map $ftp->__user = $ftp_map['#ftp_user'] ? $ftp_map['#ftp_user'] : variable_get('drupal_ftp_default_username', DRUPAL_FTP_DEFAULT_USERNAME); $ftp->__password = $ftp_map['#password'] ? $ftp_map['#password'] : variable_get('drupal_ftp_default_password', DRUPAL_FTP_DEFAULT_PASSWORD); $ftp->__directory = $ftp_map['#directory'] ? $ftp_map['#directory'] : variable_get('drupal_ftp_default_home_directory', DRUPAL_FTP_DEFAULT_HOME_DIRECTORY); + $ftp->__passive_mode = $ftp_map['#passive_mode'] ? $ftp_map['#passive_mode'] : variable_get('drupal_ftp_default_passive_mode', DRUPAL_FTP_DEFAULT_PASSIVE_MODE); return $ftp; } @@ -53,6 +55,11 @@ function drupal_ftp_connect(&$ftp) { return false; } + // set passive mode + if ($ftp->__passive_mode) { + @ftp_pasv($ftp->__conn, true); + } + // Attempt to change into the working directory $chDir = @ftp_chdir($ftp->__conn, $ftp->__directory); @@ -727,6 +734,12 @@ function drupal_ftp_settings() { '#default_value' => variable_get('drupal_ftp_default_home_directory', DRUPAL_FTP_DEFAULT_HOME_DIRECTORY), '#description' => t('This is the default directory that will be used as the home directory when browsing. Make sure that the directory begins and ends with a forward slash, such as \'/www/\', \'/home/public_ftp/\', or \'/\'. Note that other modules using the provided API may override this value.'), ); + $form['drupal_ftp_default_passive_mode'] = array( + '#type' => 'checkbox', + '#title' => t('Passive mode'), + '#default_value' => variable_get('drupal_ftp_default_passive_mode', DRUPAL_FTP_DEFAULT_PASSIVE_MODE), + '#description' => t('Use passive mode for file transfers. Works for getting files from behind a firewall.'), + ); return system_settings_form($form); }