Enhance SSL configuration handling in mkcert.sh

- Added a check to see if the domain is already configured for SSL before copying certificates.
- Updated messages to clarify the steps of moving domains between 'docker' and 'dockerLocal' templates.
This commit is contained in:
Anh Duc Le
2025-11-06 14:57:09 +07:00
parent 48e7c948b6
commit 37c05a177e
+35 -18
View File
@@ -271,13 +271,26 @@ configure_litespeed(){
exit 1 exit 1
fi fi
echo "[O] Found Virtual Host member name: '${vhost_name}'" echo "[O] Found Virtual Host member name: '${vhost_name}'"
echo "[!] Step 4: Copying certificates to container..."
echo "[!] Step 4: Checking if domain is already configured for SSL..."
if docker compose exec -T ${CONT_NAME} bash -c "sed -n '/^vhTemplate dockerLocal {/,/^}/p' ${httpd_conf} | grep -q 'member ${vhost_name}'"; then
echo -e "[O] Domain '\033[32m${DOMAIN}\033[0m' is already in 'dockerLocal' template."
echo "[!] Updating certificates and restarting..."
docker compose exec -T ${CONT_NAME} bash -c "mkdir -p ${cert_container_path}"
docker compose cp "${cert_host_path}/cert.pem" "${CONT_NAME}:${cert_container_path}/cert.pem"
docker compose cp "${cert_host_path}/key.pem" "${CONT_NAME}:${cert_container_path}/key.pem"
lsws_restart
echo "[End] Configuration complete."
exit 0
fi
echo "[!] Step 5: Copying certificates to container..."
docker compose exec -T ${CONT_NAME} bash -c "mkdir -p ${cert_container_path}" docker compose exec -T ${CONT_NAME} bash -c "mkdir -p ${cert_container_path}"
docker compose cp "${cert_host_path}/cert.pem" "${CONT_NAME}:${cert_container_path}/cert.pem" docker compose cp "${cert_host_path}/cert.pem" "${CONT_NAME}:${cert_container_path}/cert.pem"
docker compose cp "${cert_host_path}/key.pem" "${CONT_NAME}:${cert_container_path}/key.pem" docker compose cp "${cert_host_path}/key.pem" "${CONT_NAME}:${cert_container_path}/key.pem"
echo "[O] Certificates copied to: ${cert_container_path}" echo "[O] Certificates copied to: ${cert_container_path}"
echo "[!] Step 5: Moving domain from 'docker' template to 'dockerLocal' template..." echo "[!] Step 6: Moving domain from 'docker' template to 'dockerLocal' template..."
docker compose exec -T ${CONT_NAME} bash -c " docker compose exec -T ${CONT_NAME} bash -c "
# Backup httpd_config.conf # Backup httpd_config.conf
cp ${httpd_conf} ${httpd_conf}.backup.\$(date +%Y%m%d_%H%M%S) cp ${httpd_conf} ${httpd_conf}.backup.\$(date +%Y%m%d_%H%M%S)
@@ -324,25 +337,29 @@ remove_cert(){
echo "[O] Found Virtual Host member name: '${vhost_name}'" echo "[O] Found Virtual Host member name: '${vhost_name}'"
echo "[!] Step 2: Removing domain from 'dockerLocal' template..." echo "[!] Step 2: Removing domain from 'dockerLocal' template..."
docker compose exec -T ${CONT_NAME} bash -c " if docker compose exec -T ${CONT_NAME} bash -c "sed -n '/^vhTemplate dockerLocal {/,/^}/p' ${httpd_conf} | grep -q 'member ${vhost_name}'"; then
# Backup httpd_config.conf echo "[O] Domain is configured for SSL. Moving it back to 'docker' template..."
cp ${httpd_conf} ${httpd_conf}.backup.\$(date +%Y%m%d_%H%M%S) docker compose exec -T ${CONT_NAME} bash -c "
# Backup httpd_config.conf
cp ${httpd_conf} ${httpd_conf}.backup.\$(date +%Y%m%d_%H%M%S)
# Remove the member block from dockerLocal template # Remove the member block from dockerLocal template
sed -i '/^vhTemplate dockerLocal {/,/^}/ { sed -i '/^vhTemplate dockerLocal {/,/^}/ {
/member ${vhost_name} {/,/}/d /member ${vhost_name} {/,/}/d
}' ${httpd_conf} }' ${httpd_conf}
# Add the member back to 'docker' template (without SSL) # Add the member back to 'docker' template (without SSL)
sed -i '/^vhTemplate docker {/,/^}/ { sed -i '/^vhTemplate docker {/,/^}/ {
/^}/ i\ member ${vhost_name} {\n vhDomain ${DOMAIN},www.${DOMAIN}\n } /^}/ i\ member ${vhost_name} {\n vhDomain ${DOMAIN},www.${DOMAIN}\n }
}' ${httpd_conf} }' ${httpd_conf}
" "
if [ ${?} = 0 ]; then
if [ ${?} = 0 ]; then echo -e "[O] Domain '\033[32m${DOMAIN}\033[0m' moved back to 'docker' template"
echo -e "[O] Domain '\033[32m${DOMAIN}\033[0m' moved back to 'docker' template" else
echo "[X] Failed to move domain back to docker template"
fi
else else
echo "[X] Failed to move domain back to docker template" echo "[!] Domain is not in 'dockerLocal' template. No configuration changes needed."
fi fi
fi fi