diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-05-01 23:23:10 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-06-03 22:46:26 +0200 |
| commit | cd2dffcd903a2a1d9f2b452bdd3cfec45cebe614 (patch) | |
| tree | 36e39f7903377bd0c133c73b8eb53ac3eb3465d8 | |
| parent | 4c5691d02a8d35c2cff5c4fc490682e493d36eba (diff) | |
Support FTPS uploads.
| -rw-r--r-- | src/lib/curl_uploader.cc | 4 | ||||
| -rw-r--r-- | src/lib/types.cc | 4 | ||||
| -rw-r--r-- | src/lib/types.h | 3 | ||||
| -rw-r--r-- | src/lib/upload_job.cc | 1 | ||||
| -rw-r--r-- | src/wx/upload_destination_dialog.cc | 3 |
5 files changed, 13 insertions, 2 deletions
diff --git a/src/lib/curl_uploader.cc b/src/lib/curl_uploader.cc index 3edb46429..c2e46538f 100644 --- a/src/lib/curl_uploader.cc +++ b/src/lib/curl_uploader.cc @@ -100,6 +100,10 @@ CurlUploader::upload_file(boost::filesystem::path from, boost::filesystem::path curl_easy_setopt(_curl, CURLOPT_URL, url.c_str()); + if (_destination.protocol == FileTransferProtocol::FTPS) { + curl_easy_setopt(_curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); + } + dcp::File file(from, "rb"); if (!file) { throw NetworkError(String::compose(_("Could not open %1 to send"), from)); diff --git a/src/lib/types.cc b/src/lib/types.cc index 46ec38361..948bb6a67 100644 --- a/src/lib/types.cc +++ b/src/lib/types.cc @@ -119,6 +119,8 @@ file_transfer_protocol_from_string(string s) return FileTransferProtocol::SCP; } else if (s == "ftp") { return FileTransferProtocol::FTP; + } else if (s == "ftps") { + return FileTransferProtocol::FTPS; } DCPOMATIC_ASSERT(false); @@ -134,6 +136,8 @@ file_transfer_protocol_to_string(FileTransferProtocol p) return "scp"; case FileTransferProtocol::FTP: return "ftp"; + case FileTransferProtocol::FTPS: + return "ftps"; default: DCPOMATIC_ASSERT(false); } diff --git a/src/lib/types.h b/src/lib/types.h index 9cc20d8b4..eea63e119 100644 --- a/src/lib/types.h +++ b/src/lib/types.h @@ -142,7 +142,8 @@ struct CPLSummary enum class FileTransferProtocol { SCP, - FTP + FTP, + FTPS }; diff --git a/src/lib/upload_job.cc b/src/lib/upload_job.cc index 4fee6f063..3cfbad727 100644 --- a/src/lib/upload_job.cc +++ b/src/lib/upload_job.cc @@ -86,6 +86,7 @@ UploadJob::run () uploader.reset(new SCPUploader(_destination, bind(&UploadJob::set_status, this, _1), bind(&UploadJob::set_progress, this, _1, false))); break; case FileTransferProtocol::FTP: + case FileTransferProtocol::FTPS: uploader.reset(new CurlUploader(_destination, bind(&UploadJob::set_status, this, _1), bind(&UploadJob::set_progress, this, _1, false))); break; } diff --git a/src/wx/upload_destination_dialog.cc b/src/wx/upload_destination_dialog.cc index f7cb40379..d4da24bb0 100644 --- a/src/wx/upload_destination_dialog.cc +++ b/src/wx/upload_destination_dialog.cc @@ -53,6 +53,7 @@ UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent) _protocol->add_entry(_("SCP"), file_transfer_protocol_to_string(FileTransferProtocol::SCP)); _protocol->add_entry(_("FTP"), file_transfer_protocol_to_string(FileTransferProtocol::FTP)); + _protocol->add_entry(_("FTPS"), file_transfer_protocol_to_string(FileTransferProtocol::FTPS)); _protocol->bind(&UploadDestinationDialog::protocol_changed, this); @@ -68,7 +69,7 @@ UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent) void UploadDestinationDialog::protocol_changed() { - auto const ftp = _protocol->get() == 1; + auto const ftp = _protocol->get_data() == string("ftp") || _protocol->get_data() == string("ftps"); _passive->Enable(ftp); _passive->SetValue(ftp); } |
