Changes in change_ssl_directives.sh: skip replacement if directive is already present.

This commit is contained in:
Christoph 2017-06-20 17:22:12 +02:00
parent 1e60c49b19
commit 031b099eff

View File

@ -2815,7 +2815,7 @@ echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]" echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
} }
echo_skipped() { echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]" echo -e "\033[75G[ \033[37m\033[1mskipped\033[m ]"
} }
## - Check if a given array (parameter 2) contains a given string (parameter 1) ## - Check if a given array (parameter 2) contains a given string (parameter 1)
@ -2940,11 +2940,16 @@ fi
echo "" echo ""
echononl " Backup existing VHost Directory .." echononl " Backup existing VHost Directory .."
cp -a \$VHOST_DIR \${VHOST_DIR}.\$_date if [[ "\$(dirname \$VHOST_DIR)" =~ vhosts?/?\$ ]] ; then
BACKUP_SRC_DIR="\$(dirname \$VHOST_DIR)"
else
BACKUP_SRC_DIR="\$VHOST_DIR"
fi
cp -a "\$BACKUP_SRC_DIR" "\${BACKUP_SRC_DIR}.\$_date"
if [[ \$? -eq 0 ]] ; then if [[ \$? -eq 0 ]] ; then
echo_ok echo_ok
else else
echo_skipped echo_failed
fi fi
echo "" echo ""
@ -2988,40 +2993,60 @@ while IFS=' ' read -r site_server_name rest ; do
continue continue
fi fi
failed=false failed=false
_ssl_directive_changed=false
if [[ "\$VHOST_DIR" =~ apache ]]; then if [[ "\$VHOST_DIR" =~ apache ]]; then
# - Apache or nginx ?
# -
for _name in \${vhost_file_arr[@]} ; do for _name in \${vhost_file_arr[@]} ; do
perl -i -n -p -e s"#^(\s*)SSLCertificateFile.*#\1SSLCertificateFile \${_cert_dir}/fullchain.pem#" \$_name if ! grep -q -i -E "\s*SSLCertificateFile\s*\${_cert_dir}/fullchain.pem" \$_name 2> /dev/null ; then
[[ \$? -ne 0 ]] && failed=true perl -i -n -p -e s"#^(\s*)SSLCertificateFile.*#\1SSLCertificateFile \${_cert_dir}/fullchain.pem#" \$_name
perl -i -n -p -e s"#^(\s*)SSLCertificateKeyFile.*#\1SSLCertificateKeyFile \${_cert_dir}/privkey.pem#" \$_name [[ \$? -ne 0 ]] && failed=true
[[ \$? -ne 0 ]] && failed=true _ssl_directive_changed=true
sed -i '/SSLCertificateChainFile/d' \$_name fi
[[ \$? -ne 0 ]] && failed=true if ! grep -q -i -E "\s*SSLCertificateKeyFile\s+\${_cert_dir}/privkey.pem" \$_name 2> /dev/null ; then
perl -i -n -p -e s"#^(\s*)SSLCertificateKeyFile.*#\1SSLCertificateKeyFile \${_cert_dir}/privkey.pem#" \$_name
[[ \$? -ne 0 ]] && failed=true
_ssl_directive_changed=true
fi
if grep -q -i -E "\s*/SSLCertificateChainFile" \$_name 2> /dev/null ; then
sed -i '/SSLCertificateChainFile/d' \$_name
[[ \$? -ne 0 ]] && failed=true
_ssl_directive_changed=true
fi
done done
else else
for _name in \${vhost_file_arr[@]} ; do for _name in \${vhost_file_arr[@]} ; do
perl -i -n -p -e s"#^(\s*)ssl_certificate\s+.*#\1ssl_certificate \${_cert_dir}/fullchain.pem;#" \$_name if ! grep -q -i -E "\s*\s*ssl_certificate\s+\${_cert_dir}/fullchain.pem" \$_name 2> /dev/null ; then
[[ \$? -ne 0 ]] && failed=true perl -i -n -p -e s"#^(\s*)ssl_certificate\s+.*#\1ssl_certificate \${_cert_dir}/fullchain.pem;#" \$_name
perl -i -n -p -e s"#^(\s*)ssl_certificate_key\s+.*#\1ssl_certificate_key \${_cert_dir}/privkey.pem;#" \$_name [[ \$? -ne 0 ]] && failed=true
[[ \$? -ne 0 ]] && failed=true _ssl_directive_changed=true
sed -i '/SSLCertificateChainFile/d' \$_name fi
[[ \$? -ne 0 ]] && failed=true if ! grep -q -i -E "\s*\s*ssl_certificate_key\s+\${_cert_dir}/privkey.pem" \$_name 2> /dev/null ; then
perl -i -n -p -e s"#^(\s*)ssl_certificate_key\s+.*#\1ssl_certificate_key \${_cert_dir}/privkey.pem;#" \$_name
[[ \$? -ne 0 ]] && failed=true
_ssl_directive_changed=true
fi
done done
fi fi
if \$failed ; then if \$_ssl_directive_changed ; then
echo_failed if \$failed ; then
echo_failed
else
echo_ok
fi
else else
echo_ok echo_skipped
fi fi
fi fi
done < <(cat \$DOMAINS_TXT_FILE) done < <(cat \$DOMAINS_TXT_FILE)
if [[ -d "\${VHOST_DIR}.\$_date" ]]; then if [[ -d "\${BACKUP_SRC_DIR}.\$_date" ]]; then
diff -Nur \$VHOST_DIR \${VHOST_DIR}.\$_date > /dev/null 2>&1 diff -Nur "\$BACKUP_SRC_DIR" "\${BACKUP_SRC_DIR}.\$_date" > /dev/null 2>&1
if [[ \$? -eq 0 ]]; then if [[ \$? -eq 0 ]]; then
info "No VHosts configuration has changed.\n\t Removing previously created backup" info "No VHosts configuration has changed.\n\t Removing previously created backup"
echononl "Delete \"\${VHOST_DIR}.\$_date\".." echononl "Delete \"\${BACKUP_SRC_DIR}.\$_date\".."
rm -rf \${VHOST_DIR}.\$_date rm -rf "\${BACKUP_SRC_DIR}.\$_date"
if [[ \$? -eq 0 ]]; then if [[ \$? -eq 0 ]]; then
echo_ok echo_ok
else else