handle_domain_on_webserver.sh: add support for cleaning up dehydrated's domains.txt file.

This commit is contained in:
Christoph 2018-09-14 14:06:46 +02:00
parent 974f244ca7
commit c635dedc3a

View File

@ -508,6 +508,10 @@ declare -a vhost_file_req_for_del_arr
declare -a vhost_file_marked_for_del_arr
declare -a no_vhost_config_found
declare -a dehydrated_name_marked_for_del_arr
declare -a dehydrated_name_req_for_del_arr
dehydrated_domains_file="/var/lib/dehydrated/domains.txt"
declare -a docroot_req_for_del_arr
declare -a docroot_marked_for_del_arr
@ -1303,6 +1307,16 @@ for _vhost_file in ${vhost_file_req_for_del_arr[@]}; do
done
if ! $_found ; then
vhost_file_marked_for_del_arr+=("$_vhost_file")
_dehydrated_name="$(grep ServerName $(realpath ${apache_vhost_dir})/$_vhost_file | awk '{print$2}' | sort -u)"
echo ""
echo "$_vhost_file - $dehydrated_domains_file - $_dehydrated_name"
echo ""
if [[ -n "$_dehydrated_name" ]] \
&& grep -q -E "^\s*$_dehydrated_name" $dehydrated_domains_file 2> /dev/null ; then
if ! containsElement "$_dehydrated_name" "${dehydrated_name_req_for_del_arr[@]}" ; then
dehydrated_name_req_for_del_arr+=("$_dehydrated_name")
fi
fi
fi
done
@ -1331,6 +1345,19 @@ else
echo -e " *** \033[33mNo VHost configuration files are marked for deletion\033[m ***"
fi
# - Entier in dehydrated domains file marked for deletion"
# -
echo ""
echo " Entries in dehydrated's domain.txt file requested for deletion"
if [[ ${#dehydrated_name_req_for_del_arr[@]} -gt 0 ]]; then
for _domain_entry in ${dehydrated_name_req_for_del_arr[@]} ; do
echo " $_domain_entry"
done
else
echo -e " *** \033[33mNo domain entry in dehydrated's domain file is requested for deletion\033[m ***"
fi
# -----
# - Warn about VHost configurtion files not be marked for deletion.
# -----
@ -1697,6 +1724,7 @@ fi
apache_needs_restart=false
delete_vhost_file=false
if [[ ${#vhost_file_marked_for_del_arr[@]} -gt 0 ]]; then
echo ""
@ -1815,9 +1843,15 @@ if [[ ${#vhost_file_marked_for_del_arr[@]} -gt 0 ]]; then
echo "# -" >> $main_log
echo "mv \"$_vhost_file_to_move\" \"$_delete_dir\"" >> $main_log
echononl " Removing VHost configuration \033[1m$(basename $_vhost_file_to_move)\033[m"
_dehydrated_name="$(grep ServerName $_vhost_file_to_move | awk '{print$2}' | sort -u)"
mv "$_vhost_file_to_move" "$_delete_dir" > $tmp_log_file 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
if containsElement "$_dehydrated_name" "${dehydrated_name_req_for_del_arr[@]}" ; then
if ! containsElement "$_dehydrated_name" "${dehydrated_name_marked_for_del_arr[@]}" ; then
dehydrated_name_marked_for_del_arr+=("$_dehydrated_name")
fi
fi
else
echo_failed
error "$(cat $tmp_log_file)"
@ -1836,6 +1870,76 @@ else
echo -e "\033[32m------\033[m"
fi
if [[ ${#dehydrated_name_marked_for_del_arr[@]} -gt 0 ]]; then
echo ""
echo -e "\033[32m------\033[m"
echo -e "Remove Entries from dehydrated's domains.txt file?"
echo -e "\033[32m------\033[m"
for _dehydrated_enty in ${dehydrated_name_marked_for_del_arr[@]} ; do
echo " $_dehydrated_enty"
done
OK=""
echo ""
echo "Type 'y' to continue 'n' or any other key to skip removal for domain entries"
echo
echo -e -n "\033[1mContinue removing concerning entries from dehydrated's domains.txt file [y/n]:\033[m "
read OK
while [[ "X${OK}X" = "XX" ]] ; do
echo ""
echo -e -n "\033[1mContinue removing concerning entries from dehydrated's domains.txt file [y/n]:\033[m "
read OK
done
if [[ "${OK,,}" = 'yes' ]] || [[ "${OK,,}" = 'y' ]]; then
echononl " Backup existing domains.txt file"
if [[ -d "$apache_vhost_base_dir" ]]; then
echo "" >> $main_log
echo "# - Backup existing domains.txt file" >> $main_log
echo "# -" >> $main_log
echo "cp -a \"$dehydrated_domains_file" "${dehydrated_domains_file}.$backup_date\"" >> $main_log
cp -a "$dehydrated_domains_file" "${dehydrated_domains_file}.$backup_date" > $tmp_log_file 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "$(cat $tmp_log_file)"
fi
else
echo_skipped
fi
for _dehydrated_enty in ${dehydrated_name_marked_for_del_arr[@]} ; do
echo "# - Removing '$_dehydrated_enty' from dehydrated's domains.txt file." >> $main_log
echo "# -" >> $main_log
echo "sed -i \"/$_dehydrated_enty/d\" $dehydrated_domains_file" >> $main_log
echononl " Removing \033[1m$_dehydrated_enty\033[m from dehydrated's domains.txt file."
sed -i "/$_dehydrated_enty/d" $dehydrated_domains_file > $tmp_log_file 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "$(cat $tmp_log_file)"
echo "Error: $(cat $tmp_log_file)" >> $main_log
fi
done
fi
else
echo ""
echo -e "\033[32m------\033[m"
echo -e "*** \033[33mNo domain entry in dehydrated's domain file is marked for deletion\033[m ***"
echo -e "\033[32m------\033[m"
fi