From 9200d3d93c566d61e4fc951279d5effeddcc2f15 Mon Sep 17 00:00:00 2001 From: Christian Haschek Date: Mon, 24 Jan 2022 15:23:38 +0100 Subject: [PATCH] added setting and possible fix for passive mode. fixes #135 probably --- docker/rootfs/start.sh | 1 + rtfm/CONFIG.md | 1 + storage-controllers/ftp.controller.php | 10 +++++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docker/rootfs/start.sh b/docker/rootfs/start.sh index 4df649d..16d74c5 100644 --- a/docker/rootfs/start.sh +++ b/docker/rootfs/start.sh @@ -45,6 +45,7 @@ _buildConfig() { echo "define('FTP_PORT', ${FTP_PORT:-21});" echo "define('FTP_USER', '${FTP_USER:-}');" echo "define('FTP_PASS', '${FTP_PASS:-}');" + echo "define('FTP_PASSIVEMODE', ${FTP_PASSIVEMODE:-true});" echo "define('FTP_SSL', ${FTP_SSL:-false});" echo "define('FTP_BASEDIR', '${FTP_BASEDIR:-}');" echo "define('ENCRYPTION_KEY', '${ENCRYPTION_KEY:-}');" diff --git a/rtfm/CONFIG.md b/rtfm/CONFIG.md index 0a79257..9441669 100644 --- a/rtfm/CONFIG.md +++ b/rtfm/CONFIG.md @@ -81,3 +81,4 @@ This probably requires the php-ftp package but on some platforms it's included i |FTP_USER | string | FTP Username | |FTP_PASS | string | FTP Password | |FTP_BASEDIR | string | Base path where files will be stored. Must end with / eg `/web/pictshare/` | +|FTP_PASSIVEMODE | bool | Wether to use passive mode or not. If you have troubles with uploading, switch this setting maybe | diff --git a/storage-controllers/ftp.controller.php b/storage-controllers/ftp.controller.php index 0bd8e1e..f86c463 100644 --- a/storage-controllers/ftp.controller.php +++ b/storage-controllers/ftp.controller.php @@ -23,7 +23,15 @@ class FTPStorage implements StorageController if($this->connection && !$this->login) { $this->login = ftp_login($this->connection, FTP_USER, FTP_PASS); - ftp_pasv($this->connection, TRUE); + + if( (defined('FTP_PASSIVEMODE') && FTP_PASSIVEMODE === true) || !defined('FTP_PASSIVEMODE') ) + { + ftp_set_option($this->connection, FTP_USEPASVADDRESS, false); + ftp_pasv($this->connection, TRUE); + } + else + ftp_pasv($this->connection, false); + } // Was the connection successful?