public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Trace
_modules/scripts/migrate_options.sh
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
#!/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!!!!!!
6
migrate_config_options() {
8
sed -i --follow-symlinks '$a\' mailcow.conf
10
KEYS=(
11
SOLR_HEAP
12
SKIP_SOLR
13
SOLR_PORT
14
FLATCURVE_EXPERIMENTAL
15
DISABLE_IPv6
16
ACME_CONTACT
17
)
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
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
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
}