summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-05-01 23:23:10 +0200
committerCarl Hetherington <cth@carlh.net>2025-06-03 22:46:26 +0200
commitcd2dffcd903a2a1d9f2b452bdd3cfec45cebe614 (patch)
tree36e39f7903377bd0c133c73b8eb53ac3eb3465d8 /src/lib
parent4c5691d02a8d35c2cff5c4fc490682e493d36eba (diff)
Support FTPS uploads.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/curl_uploader.cc4
-rw-r--r--src/lib/types.cc4
-rw-r--r--src/lib/types.h3
-rw-r--r--src/lib/upload_job.cc1
4 files changed, 11 insertions, 1 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;
}