diff --git a/move_site.sh b/move_site.sh index 9c60ead..d2bcfa8 100644 --- a/move_site.sh +++ b/move_site.sh @@ -93,6 +93,7 @@ else org_ssl_dir=`dirname $ssl_certificate_file` new_ssl_dir="ssl_files/$(basename $org_ssl_dir)" $ssh_command "$remote_sudo_command cp -r -f -L $org_ssl_dir $root_path/ssl_files/." + certbot_file_idx=`$ssh_command "basename $($remote_sudo_command readlink /etc/letsencrypt/live/$real_domain/cert.pem)|sed -E 's/cert([^.]+)\.pem/\1/g'|xargs"` else $ssh_command "$remote_sudo_command cp -f $ssl_certificate_file $root_path/ssl_files/." $ssh_command "$remote_sudo_command cp -f $ssl_certificate_key_file $root_path/ssl_files/." @@ -116,13 +117,35 @@ else sed "s/\(database:\s\+\).\+/\1${new_db_name}/g" -i "$local_store_path/config/mongoid.yml" if [[ -z "$use_local_command" ]] && [[ ! -z "$match_ssl" ]]; then if [[ ! -z $org_ssl_dir ]]; then - sudo_command mkdir -p $org_ssl_dir if [ -z "$(which certbot)" ]; then wget http://gitlab.tp.rulingcom.com/erictyl/install_r45_on_ubuntu_1804lts_doc/-/raw/master/install_certbot.sh sudo_command bash ./install_certbot.sh fi + sudo_command mkdir -p $org_ssl_dir + sudo_command mkdir -p /etc/letsencrypt/renewal sudo_command cp -r $new_ssl_dir/* $org_ssl_dir/. + if [[ "$(dirname $org_ssl_dir)" == "/etc/letsencrypt/live" ]] && [[ ! -z "$(ls $org_ssl_dir/*.pem 2>>/dev/null || echo '')" ]]; then + sudo_command mkdir -p /etc/letsencrypt/archive/$real_domain + sudo_command rm -f /etc/letsencrypt/archive/$real_domain/*.pem + sudo_command mv $org_ssl_dir/*.pem /etc/letsencrypt/archive/$real_domain/. + if [[ ! -z "$certbot_file_idx" ]]; then + sudo_command bash -l -c "find '/etc/letsencrypt/archive/$real_domain' -regex '[^0-9]+\.pem' -printf '%p\0'| perl -0 -l0 -pe 'print \$_; s/($(echo /etc/letsencrypt/archive/$real_domain/|sed 's/[\.\/]/\\\0/g')[^\d]+)\.pem/\${1}'$certbot_file_idx'\.pem/'| xargs -0 -n 2 mv" + sudo_command bash -l -c "cd $org_ssl_dir && find '../../archive/$real_domain/' -regex '[^0-9]+$certbot_file_idx\.pem' -printf '%p\0'| perl -0 -l0 -pe 'print \$_; s/$(echo ../../archive/$real_domain/|sed 's/[\.\/]/\\\0/g')([^\d]+)$certbot_file_idx\.pem/\${1}\.pem/'| xargs -0 -n 2 ln -s" + else + sudo_command bash -l -c "cd $org_ssl_dir && ln -s ../../archive/$real_domain/*.pem ." + fi + fi sudo_command cp -r $new_ssl_dir/renewal/* /etc/letsencrypt/renewal/. + if [[ -e /etc/letsencrypt/renewal/$real_domain.conf ]]; then #Fix certbot account + letsencrypt_server_name=`sudo_command ls /etc/letsencrypt/accounts/|xargs|awk '{print $1}'` + if [[ ! -z "$letsencrypt_server_name" ]]; then + sudo_command sed -E 's/server\s*=.*/server = https:\/\/'$letsencrypt_server_name'\/directory/g' -i /etc/letsencrypt/renewal/$real_domain.conf + letsencrypt_account_id=`sudo_command ls /etc/letsencrypt/accounts/$letsencrypt_server_name/directory|xargs|awk '{print $1}'` + if [[ ! -z "$letsencrypt_account_id" ]]; then + sudo_command sed -E 's/account\s*=.*/account = '$letsencrypt_account_id'/g' -i /etc/letsencrypt/renewal/$real_domain.conf + fi + fi + fi else sed "s/$(escape_slash $ssl_certificate_file)/$(escape_slash $root_path)\/ssl_files\/$(basename $ssl_certificate_file)/g" -i $new_nginx_file sed "s/$(escape_slash $ssl_certificate_key_file)/$(escape_slash $root_path)\/ssl_files\/$(basename $ssl_certificate_key_file)/g" -i $new_nginx_file diff --git a/move_site_interactive.sh b/move_site_interactive.sh index 49f1327..3c50efa 100644 --- a/move_site_interactive.sh +++ b/move_site_interactive.sh @@ -97,6 +97,7 @@ else org_ssl_dir=`dirname $ssl_certificate_file` new_ssl_dir="ssl_files/$(basename $org_ssl_dir)" $ssh_command "$remote_sudo_command cp -r -f -L $org_ssl_dir $root_path/ssl_files/." + certbot_file_idx=`$ssh_command "basename $($remote_sudo_command readlink /etc/letsencrypt/live/$real_domain/cert.pem)|sed -E 's/cert([^.]+)\.pem/\1/g'|xargs"` else $ssh_command "$remote_sudo_command cp -f $ssl_certificate_file $root_path/ssl_files/." $ssh_command "$remote_sudo_command cp -f $ssl_certificate_key_file $root_path/ssl_files/." @@ -120,13 +121,35 @@ else sed "s/\(database:\s\+\).\+/\1${new_db_name}/g" -i "$local_store_path/config/mongoid.yml" if [[ -z "$use_local_command" ]] && [[ ! -z "$match_ssl" ]]; then if [[ ! -z $org_ssl_dir ]]; then - sudo_command mkdir -p $org_ssl_dir if [ -z "$(which certbot)" ]; then wget http://gitlab.tp.rulingcom.com/erictyl/install_r45_on_ubuntu_1804lts_doc/-/raw/master/install_certbot.sh sudo_command bash ./install_certbot.sh fi + sudo_command mkdir -p $org_ssl_dir + sudo_command mkdir -p /etc/letsencrypt/renewal sudo_command cp -r $new_ssl_dir/* $org_ssl_dir/. + if [[ "$(dirname $org_ssl_dir)" == "/etc/letsencrypt/live" ]] && [[ ! -z "$(ls $org_ssl_dir/*.pem 2>>/dev/null || echo '')" ]]; then + sudo_command mkdir -p /etc/letsencrypt/archive/$real_domain + sudo_command rm -f /etc/letsencrypt/archive/$real_domain/*.pem + sudo_command mv $org_ssl_dir/*.pem /etc/letsencrypt/archive/$real_domain/. + if [[ ! -z "$certbot_file_idx" ]]; then + sudo_command bash -l -c "find '/etc/letsencrypt/archive/$real_domain' -regex '[^0-9]+\.pem' -printf '%p\0'| perl -0 -l0 -pe 'print \$_; s/($(echo /etc/letsencrypt/archive/$real_domain/|sed 's/[\.\/]/\\\0/g')[^\d]+)\.pem/\${1}'$certbot_file_idx'\.pem/'| xargs -0 -n 2 mv" + sudo_command bash -l -c "cd $org_ssl_dir && find '../../archive/$real_domain/' -regex '[^0-9]+$certbot_file_idx\.pem' -printf '%p\0'| perl -0 -l0 -pe 'print \$_; s/$(echo ../../archive/$real_domain/|sed 's/[\.\/]/\\\0/g')([^\d]+)$certbot_file_idx\.pem/\${1}\.pem/'| xargs -0 -n 2 ln -s" + else + sudo_command bash -l -c "cd $org_ssl_dir && ln -s ../../archive/$real_domain/*.pem ." + fi + fi sudo_command cp -r $new_ssl_dir/renewal/* /etc/letsencrypt/renewal/. + if [[ -e /etc/letsencrypt/renewal/$real_domain.conf ]]; then #Fix certbot account + letsencrypt_server_name=`sudo_command ls /etc/letsencrypt/accounts/|xargs|awk '{print $1}'` + if [[ ! -z "$letsencrypt_server_name" ]]; then + sudo_command sed -E 's/server\s*=.*/server = https:\/\/'$letsencrypt_server_name'\/directory/g' -i /etc/letsencrypt/renewal/$real_domain.conf + letsencrypt_account_id=`sudo_command ls /etc/letsencrypt/accounts/$letsencrypt_server_name/directory|xargs|awk '{print $1}'` + if [[ ! -z "$letsencrypt_account_id" ]]; then + sudo_command sed -E 's/account\s*=.*/account = '$letsencrypt_account_id'/g' -i /etc/letsencrypt/renewal/$real_domain.conf + fi + fi + fi else sed "s/$(escape_slash $ssl_certificate_file)/$(escape_slash $root_path)\/ssl_files\/$(basename $ssl_certificate_file)/g" -i $new_nginx_file sed "s/$(escape_slash $ssl_certificate_key_file)/$(escape_slash $root_path)\/ssl_files\/$(basename $ssl_certificate_key_file)/g" -i $new_nginx_file