@@ -274,6 +274,7 @@ DEACTIVATE_AUTH="false"
274
274
DEFAULT_REVOKE_CA=" https://acme-v02.api.letsencrypt.org"
275
275
DOMAIN_KEY_LENGTH=4096
276
276
DUAL_RSA_ECDSA=" false"
277
+ FTP_OPTIONS=" "
277
278
GETSSL_IGNORE_CP_PRESERVE=" false"
278
279
HTTP_TOKEN_CHECK_WAIT=0
279
280
IGNORE_DIRECTORY_DOMAIN=" false"
@@ -842,6 +843,9 @@ copy_file_to_location() { # copies a file, using scp, sftp or ftp if required.
842
843
if [[ " $cert " != " challenge token" ]] ; then
843
844
error_exit " ftp is not a secure method for copying certificates or keys"
844
845
fi
846
+ if [[ -z " $FTP_COMMAND " ]]; then
847
+ error_exit " No ftp command found"
848
+ fi
845
849
debug " using ftp to copy the file from $from "
846
850
ftpuser=$( echo " $to " | awk -F: ' {print $2}' )
847
851
ftppass=$( echo " $to " | awk -F: ' {print $3}' )
@@ -853,9 +857,15 @@ copy_file_to_location() { # copies a file, using scp, sftp or ftp if required.
853
857
fromfile=$( basename " $from " )
854
858
debug " ftp user=$ftpuser - pass=$ftppass - host=$ftphost dir=$ftpdirn file=$ftpfile "
855
859
debug " from dir=$fromdir file=$fromfile "
856
- ftp -n << - _EOF
860
+ if [ -n " $FTP_OPTIONS " ]; then
861
+ # Use eval to expand any variables in FTP_OPTIONS
862
+ FTP_OPTIONS=$( eval echo " $FTP_OPTIONS " )
863
+ debug " FTP_OPTIONS=$FTP_OPTIONS "
864
+ fi
865
+ $FTP_COMMAND << - _EOF
857
866
open $ftphost
858
- user $ftpuser $ftppass
867
+ user $ftpuser $ftppass
868
+ $FTP_OPTIONS
859
869
cd $ftpdirn
860
870
lcd $fromdir
861
871
put ./$fromfile
@@ -886,12 +896,13 @@ copy_file_to_location() { # copies a file, using scp, sftp or ftp if required.
886
896
davsport=$( echo " $to " | awk -F: ' {print $5}' )
887
897
davslocn=$( echo " $to " | awk -F: ' {print $6}' )
888
898
davsdirn=$( dirname " $davslocn " )
899
+ davsdirn=$( echo " ${davsdirn} /" | sed ' s,//,/,g' )
889
900
davsfile=$( basename " $davslocn " )
890
901
fromdir=$( dirname " $from " )
891
902
fromfile=$( basename " $from " )
892
903
debug " davs user=$davsuser - pass=$davspass - host=$davshost port=$davsport dir=$davsdirn file=$davsfile "
893
904
debug " from dir=$fromdir file=$fromfile "
894
- curl -u " ${davsuser} :${davspass} " -T " ${fromdir} /${fromfile} " " https://${davshost} :${davsport}${davsdirn} / ${davsfile} "
905
+ curl -u " ${davsuser} :${davspass} " -T " ${fromdir} /${fromfile} " " https://${davshost} :${davsport}${davsdirn}${davsfile} "
895
906
else
896
907
if ! mkdir -p " $( dirname " $to " ) " ; then
897
908
error_exit " cannot create ACL directory $( basename " $to " ) "
@@ -1118,6 +1129,18 @@ find_dns_utils() {
1118
1129
fi
1119
1130
}
1120
1131
1132
+ find_ftp_command () {
1133
+ FTP_COMMAND=" "
1134
+ if [[ -n " $( command -v ftp 2> /dev/null) " ]]; then
1135
+ debug " Has ftp"
1136
+ FTP_COMMAND=" ftp -n"
1137
+ elif [[ -n " $( command -v lftp 2> /dev/null) " ]]; then
1138
+ debug " Has lftp"
1139
+ FTP_COMMAND=" lftp"
1140
+ fi
1141
+ }
1142
+
1143
+
1121
1144
fulfill_challenges () {
1122
1145
dn=0
1123
1146
for d in " ${alldomains[@]} " ; do
@@ -1267,8 +1290,8 @@ for d in "${alldomains[@]}"; do
1267
1290
ftppass=$( echo " ${t_loc} " | awk -F: ' {print $3}' )
1268
1291
ftphost=$( echo " ${t_loc} " | awk -F: ' {print $4}' )
1269
1292
ftplocn=$( echo " ${t_loc} " | awk -F: ' {print $5}' )
1270
- debug " ftp user=$ftpuser - pass=$ftppass - host=$ftphost location=$ftplocn "
1271
- ftp -n << - EOF
1293
+ debug " $FTP_COMMAND user=$ftpuser - pass=$ftppass - host=$ftphost location=$ftplocn "
1294
+ $FTP_COMMAND << - EOF
1272
1295
open $ftphost
1273
1296
user $ftpuser $ftppass
1274
1297
cd $ftplocn
@@ -2653,6 +2676,9 @@ set_server_type
2653
2676
# check what dns utils are installed
2654
2677
find_dns_utils
2655
2678
2679
+ # Find what ftp client is installed
2680
+ find_ftp_command
2681
+
2656
2682
# auto upgrade clients to v2
2657
2683
auto_upgrade_v2
2658
2684
3006
3032
echo " certificate obtained for ${DOMAIN} "
3007
3033
3008
3034
# gracefully exit ( tidying up temporary files etc).
3009
- graceful_exit
3035
+ graceful_exit
0 commit comments