blob: 6a584b9f76fc8bdd093f47f7102146a71cf10973 [file] [log] [blame]
Matthias Andreas Benkard97f12022026-10-23 08:46:40 +02001#!/usr/bin/env bash
2# _modules/scripts/migrate_options.sh
3# THIS SCRIPT IS DESIGNED TO BE RUNNING BY MAILCOW SCRIPTS ONLY!
4# DO NOT, AGAIN, NOT TRY TO RUN THIS SCRIPT STANDALONE!!!!!!
5
6migrate_config_options() {
7
8 sed -i --follow-symlinks '$a\' mailcow.conf
9
10 KEYS=(
11 SOLR_HEAP
12 SKIP_SOLR
13 SOLR_PORT
14 FLATCURVE_EXPERIMENTAL
15 DISABLE_IPv6
16 ACME_CONTACT
17 )
18
19 for key in "${KEYS[@]}"; do
20 if grep -q "${key}" mailcow.conf; then
21 case "${key}" in
22 SOLR_HEAP)
23 echo "Removing ${key} in mailcow.conf"
24 sed -i '/# Solr heap size in MB\b/d' mailcow.conf
25 sed -i '/# Solr is a prone to run\b/d' mailcow.conf
26 sed -i '/SOLR_HEAP\b/d' mailcow.conf
27 ;;
28 SKIP_SOLR)
29 echo "Removing ${key} in mailcow.conf"
30 sed -i '/\bSkip Solr on low-memory\b/d' mailcow.conf
31 sed -i '/\bSolr is disabled by default\b/d' mailcow.conf
32 sed -i '/\bDisable Solr or\b/d' mailcow.conf
33 sed -i '/\bSKIP_SOLR\b/d' mailcow.conf
34 ;;
35 SOLR_PORT)
36 echo "Removing ${key} in mailcow.conf"
37 sed -i '/\bSOLR_PORT\b/d' mailcow.conf
38 ;;
39 FLATCURVE_EXPERIMENTAL)
40 echo "Removing ${key} in mailcow.conf"
41 sed -i '/\bFLATCURVE_EXPERIMENTAL\b/d' mailcow.conf
42 ;;
43 DISABLE_IPv6)
44 echo "Migrating ${key} to ENABLE_IPv6 in mailcow.conf"
45 local old=$(grep '^DISABLE_IPv6=' "mailcow.conf" | cut -d'=' -f2)
46 local new
47 if [[ "$old" == "y" ]]; then
48 new="false"
49 else
50 new="true"
51 fi
52 sed -i '/^DISABLE_IPv6=/d' "mailcow.conf"
53 echo "ENABLE_IPV6=$new" >> "mailcow.conf"
54 ;;
55 ACME_CONTACT)
56 echo "Deleting obsoleted ${key} in mailcow.conf"
57 sed -i '/^# Lets Encrypt registration contact information/d' mailcow.conf
58 sed -i '/^# Optional: Leave empty for none/d' mailcow.conf
59 sed -i '/^# This value is only used on first order!/d' mailcow.conf
60 sed -i '/^# Setting it at a later point will require the following steps:/d' mailcow.conf
61 sed -i '/^# https:\/\/docs.mailcow.email\/troubleshooting\/debug-reset_tls\//d' mailcow.conf
62 sed -i '/^ACME_CONTACT=.*/d' mailcow.conf
63 sed -i '/^#ACME_CONTACT=.*/d' mailcow.conf
64 ;;
65 esac
66 fi
67 done
68
69 solr_volume=$(docker volume ls -qf name=^${COMPOSE_PROJECT_NAME}_solr-vol-1)
70 if [[ -n $solr_volume ]]; then
71 echo -e "\e[34mSolr has been replaced within mailcow since 2025-01.\nThe volume $solr_volume is unused.\e[0m"
72 sleep 1
73 if [ ! "$FORCE" ]; then
74 read -r -p "Remove $solr_volume? [y/N] " response
75 if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
76 echo -e "\e[33mRemoving $solr_volume...\e[0m"
77 docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
78 echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
79 else
80 echo -e "Not removing $solr_volume. Run \`docker volume rm $solr_volume\` manually if needed."
81 fi
82 else
83 echo -e "\e[33mForce removing $solr_volume...\e[0m"
84 docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
85 echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
86 fi
87 fi
88
89 # Delete old fts.conf before forced switch to flatcurve to ensure update is working properly
90 FTS_CONF_PATH="${SCRIPT_DIR}/data/conf/dovecot/conf.d/fts.conf"
91 if [[ -f "$FTS_CONF_PATH" ]]; then
92 if grep -q "Autogenerated by mailcow" "$FTS_CONF_PATH"; then
93 rm -rf $FTS_CONF_PATH
94 fi
95 fi
96}