git subrepo commit (merge) mailcow/src/mailcow-dockerized
subrepo: subdir: "mailcow/src/mailcow-dockerized"
merged: "c7b1dc37"
upstream: origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "a366494c"
git-subrepo: version: "0.4.6"
origin: "???"
commit: "???"
Change-Id: Id574ecd4e02e3c4fbf8a1efd49be11c0b6d19a3f
diff --git a/mailcow/src/mailcow-dockerized/update.sh b/mailcow/src/mailcow-dockerized/update.sh
index 34d1735..d80e2b7 100755
--- a/mailcow/src/mailcow-dockerized/update.sh
+++ b/mailcow/src/mailcow-dockerized/update.sh
@@ -176,6 +176,181 @@
}
detect_docker_compose_command(){
+if ! [[ "${DOCKER_COMPOSE_VERSION}" =~ ^(native|standalone)$ ]]; then
+ if docker compose > /dev/null 2>&1; then
+ if docker compose version --short | grep "2." > /dev/null 2>&1; then
+ DOCKER_COMPOSE_VERSION=native
+ COMPOSE_COMMAND="docker compose"
+ echo -e "\e[31mFound Docker Compose Plugin (native).\e[0m"
+ echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
+ sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=native/' $SCRIPT_DIR/mailcow.conf
+ sleep 2
+ echo -e "\e[33mNotice: You'll have to update this Compose Version via your Package Manager manually!\e[0m"
+ else
+ echo -e "\e[31mCannot find Docker Compose with a Version Higher than 2.X.X.\e[0m"
+ echo -e "\e[31mPlease update/install it manually regarding to this doc site: https://docs.mailcow.email/i_u_m/i_u_m_install/\e[0m"
+ exit 1
+ fi
+ elif docker-compose > /dev/null 2>&1; then
+ if ! [[ $(alias docker-compose 2> /dev/null) ]] ; then
+ if docker-compose version --short | grep "^2." > /dev/null 2>&1; then
+ DOCKER_COMPOSE_VERSION=standalone
+ COMPOSE_COMMAND="docker-compose"
+ echo -e "\e[31mFound Docker Compose Standalone.\e[0m"
+ echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
+ sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=standalone/' $SCRIPT_DIR/mailcow.conf
+ sleep 2
+ echo -e "\e[33mNotice: For an automatic update of docker-compose please use the update_compose.sh scripts located at the helper-scripts folder.\e[0m"
+ else
+ echo -e "\e[31mCannot find Docker Compose with a Version Higher than 2.X.X.\e[0m"
+ echo -e "\e[31mPlease update/install regarding to this doc site: https://docs.mailcow.email/i_u_m/i_u_m_install/\e[0m"
+ exit 1
+ fi
+ fi
+
+ else
+ echo -e "\e[31mCannot find Docker Compose.\e[0m"
+ echo -e "\e[31mPlease install it regarding to this doc site: https://docs.mailcow.email/i_u_m/i_u_m_install/\e[0m"
+ exit 1
+ fi
+
+elif [ "${DOCKER_COMPOSE_VERSION}" == "native" ]; then
+ COMPOSE_COMMAND="docker compose"
+ # Check if Native Compose works and has not been deleted
+ if ! $COMPOSE_COMMAND > /dev/null 2>&1; then
+ # IF it not exists/work anymore try the other command
+ COMPOSE_COMMAND="docker-compose"
+ if ! $COMPOSE_COMMAND > /dev/null 2>&1 || ! $COMPOSE_COMMAND --version | grep "^2." > /dev/null 2>&1; then
+ # IF it cannot find Standalone in > 2.X, then script stops
+ echo -e "\e[31mCannot find Docker Compose or the Version is lower then 2.X.X.\e[0m"
+ echo -e "\e[31mPlease install it regarding to this doc site: https://docs.mailcow.email/i_u_m/i_u_m_install/\e[0m"
+ exit 1
+ fi
+ # If it finds the standalone Plugin it will use this instead and change the mailcow.conf Variable accordingly
+ echo -e "\e[31mFound different Docker Compose Version then declared in mailcow.conf!\e[0m"
+ echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable from native to standalone\e[0m"
+ sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=standalone/' $SCRIPT_DIR/mailcow.conf
+ sleep 2
+ fi
+
+
+elif [ "${DOCKER_COMPOSE_VERSION}" == "standalone" ]; then
+ COMPOSE_COMMAND="docker-compose"
+ # Check if Standalone Compose works and has not been deleted
+ if ! $COMPOSE_COMMAND > /dev/null 2>&1 && ! $COMPOSE_COMMAND --version > /dev/null 2>&1 | grep "^2." > /dev/null 2>&1; then
+ # IF it not exists/work anymore try the other command
+ COMPOSE_COMMAND="docker compose"
+ if ! $COMPOSE_COMMAND > /dev/null 2>&1; then
+ # IF it cannot find Native in > 2.X, then script stops
+ echo -e "\e[31mCannot find Docker Compose.\e[0m"
+ echo -e "\e[31mPlease install it regarding to this doc site: https://docs.mailcow.email/i_u_m/i_u_m_install/\e[0m"
+ exit 1
+ fi
+ # If it finds the native Plugin it will use this instead and change the mailcow.conf Variable accordingly
+ echo -e "\e[31mFound different Docker Compose Version then declared in mailcow.conf!\e[0m"
+ echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable from standalone to native\e[0m"
+ sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=native/' $SCRIPT_DIR/mailcow.conf
+ sleep 2
+ fi
+fi
+}
+
+detect_bad_asn() {
+ echo -e "\e[33mDetecting if your IP is listed on Spamhaus Bad ASN List...\e[0m"
+ response=$(curl --connect-timeout 15 --max-time 30 -s -o /dev/null -w "%{http_code}" "https://asn-check.mailcow.email")
+ if [ "$response" -eq 503 ]; then
+ if [ -z "$SPAMHAUS_DQS_KEY" ]; then
+ echo -e "\e[33mYour server's public IP uses an AS that is blocked by Spamhaus to use their DNS public blocklists for Postfix.\e[0m"
+ echo -e "\e[33mmailcow did not detected a value for the variable SPAMHAUS_DQS_KEY inside mailcow.conf!\e[0m"
+ sleep 2
+ echo ""
+ echo -e "\e[33mTo use the Spamhaus DNS Blocklists again, you will need to create a FREE account for their Data Query Service (DQS) at: https://www.spamhaus.com/free-trial/sign-up-for-a-free-data-query-service-account\e[0m"
+ echo -e "\e[33mOnce done, enter your DQS API key in mailcow.conf and mailcow will do the rest for you!\e[0m"
+ echo ""
+ sleep 2
+
+ else
+ echo -e "\e[33mYour server's public IP uses an AS that is blocked by Spamhaus to use their DNS public blocklists for Postfix.\e[0m"
+ echo -e "\e[32mmailcow detected a Value for the variable SPAMHAUS_DQS_KEY inside mailcow.conf. Postfix will use DQS with the given API key...\e[0m"
+ fi
+ elif [ "$response" -eq 200 ]; then
+ echo -e "\e[33mCheck completed! Your IP is \e[32mclean\e[0m"
+ elif [ "$response" -eq 429 ]; then
+ echo -e "\e[33mCheck completed! \e[31mYour IP seems to be rate limited on the ASN Check service... please try again later!\e[0m"
+ else
+ echo -e "\e[31mCheck failed! \e[0mMaybe a DNS or Network problem?\e[0m"
+ fi
+}
+
+############## End Function Section ##############
+
+# Check permissions
+if [ "$(id -u)" -ne "0" ]; then
+ echo "You need to be root"
+ exit 1
+fi
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+# Run pre-update-hook
+if [ -f "${SCRIPT_DIR}/pre_update_hook.sh" ]; then
+ bash "${SCRIPT_DIR}/pre_update_hook.sh"
+fi
+
+if [[ "$(uname -r)" =~ ^4\.15\.0-60 ]]; then
+ echo "DO NOT RUN mailcow ON THIS UBUNTU KERNEL!";
+ echo "Please update to 5.x or use another distribution."
+ exit 1
+fi
+
+if [[ "$(uname -r)" =~ ^4\.4\. ]]; then
+ if grep -q Ubuntu <<< $(uname -a); then
+ echo "DO NOT RUN mailcow ON THIS UBUNTU KERNEL!"
+ echo "Please update to linux-generic-hwe-16.04 by running \"apt-get install --install-recommends linux-generic-hwe-16.04\""
+ exit 1
+ fi
+ echo "mailcow on a 4.4.x kernel is not supported. It may or may not work, please upgrade your kernel or continue at your own risk."
+ read -p "Press any key to continue..." < /dev/tty
+fi
+
+# Exit on error and pipefail
+set -o pipefail
+
+# Setting high dc timeout
+export COMPOSE_HTTP_TIMEOUT=600
+
+# Add /opt/bin to PATH
+PATH=$PATH:/opt/bin
+
+umask 0022
+
+# Unset COMPOSE_COMMAND and DOCKER_COMPOSE_VERSION Variable to be on the newest state.
+unset COMPOSE_COMMAND
+unset DOCKER_COMPOSE_VERSION
+
+for bin in curl docker git awk sha1sum grep cut; do
+ if [[ -z $(command -v ${bin}) ]]; then
+ echo "Cannot find ${bin}, exiting..."
+ exit 1;
+ fi
+done
+
+export LC_ALL=C
+DATE=$(date +%Y-%m-%d_%H_%M_%S)
+BRANCH=$(cd ${SCRIPT_DIR}; git rev-parse --abbrev-ref HEAD)
+
+ if [[ "$(cat $override | sed '/^\s*$/d' | wc -l)" == "2" ]]; then
+ mv $override ${override}_empty
+ echo -e "\e[31m${override} is empty. Renamed it to ensure mailcow is startable.\e[0m"
+ fi
+ fi
+ fi
+ fi
+ fi
+ done
+}
+
+detect_docker_compose_command(){
if ! [ "${DOCKER_COMPOSE_VERSION}" == "native" ] && ! [ "${DOCKER_COMPOSE_VERSION}" == "standalone" ]; then
if docker compose > /dev/null 2>&1; then
if docker compose version --short | grep "2." > /dev/null 2>&1; then
@@ -326,8 +501,11 @@
echo -e "\e[32mRunning in forced mode...\e[0m"
FORCE=y
;;
+ -d|--dev)
+ echo -e "\e[32mRunning in Developer mode...\e[0m"
+ DEV=y
--help|-h)
- echo './update.sh [-c|--check, --ours, --gc, --nightly, --prefetch, --skip-start, --skip-ping-check, --stable, -f|--force, -h|--help]
+ echo './update.sh [-c|--check, --ours, --gc, --nightly, --prefetch, --skip-start, --skip-ping-check, --stable, -f|--force, -d|--dev, -h|--help]
-c|--check - Check for updates and exit (exit codes => 0: update available, 3: no updates)
--ours - Use merge strategy option "ours" to solve conflicts in favor of non-mailcow code (local changes over remote changes), not recommended!
@@ -338,6 +516,7 @@
--skip-ping-check - Skip ICMP Check to public DNS resolvers (Use it only if you´ve blocked any ICMP Connections to your mailcow machine)
--stable - Switch your mailcow updates to the stable (master) branch. Default unless you changed it with --nightly.
-f|--force - Force update, do not ask questions
+ -d|--dev - Enables Developer Mode (No Checkout of update.sh for tests)
'
exit 1
esac
@@ -351,10 +530,24 @@
[[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing! Is mailcow installed?"; exit 1;}
DOTS=${MAILCOW_HOSTNAME//[^.]};
-if [ ${#DOTS} -lt 2 ]; then
- echo "MAILCOW_HOSTNAME (${MAILCOW_HOSTNAME}) is not a FQDN!"
- echo "Please change it to a FQDN and run $COMPOSE_COMMAND down followed by $COMPOSE_COMMAND up -d"
+if [ ${#DOTS} -lt 1 ]; then
+ echo -e "\e[31mMAILCOW_HOSTNAME (${MAILCOW_HOSTNAME}) is not a FQDN!\e[0m"
+ sleep 1
+ echo "Please change it to a FQDN and redeploy the stack with $COMPOSE_COMMAND up -d"
exit 1
+elif [[ "${MAILCOW_HOSTNAME: -1}" == "." ]]; then
+ echo "MAILCOW_HOSTNAME (${MAILCOW_HOSTNAME}) is ending with a dot. This is not a valid FQDN!"
+ exit 1
+elif [ ${#DOTS} -eq 1 ]; then
+ echo -e "\e[33mMAILCOW_HOSTNAME (${MAILCOW_HOSTNAME}) does not contain a Subdomain. This is not fully tested and may cause issues.\e[0m"
+ echo "Find more information about why this message exists here: https://github.com/mailcow/mailcow-dockerized/issues/1572"
+ read -r -p "Do you want to proceed anyway? [y/N] " response
+ if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
+ echo "OK. Procceding."
+ else
+ echo "OK. Exiting."
+ exit 1
+ fi
fi
if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox grep detected, please install gnu grep, \"apk add --no-cache --upgrade grep\""; exit 1; fi
@@ -402,8 +595,11 @@
"ACME_CONTACT"
"WATCHDOG_VERBOSE"
"WEBAUTHN_ONLY_TRUSTED_VENDORS"
+ "SPAMHAUS_DQS_KEY"
)
+detect_bad_asn
+
sed -i --follow-symlinks '$a\' mailcow.conf
for option in ${CONFIG_ARRAY[@]}; do
if [[ ${option} == "ADDITIONAL_SAN" ]]; then
@@ -597,11 +793,12 @@
echo "Adding new option \"${option}\" to mailcow.conf"
echo '# Password hash algorithm' >> mailcow.conf
echo '# Only certain password hash algorithm are supported. For a fully list of supported schemes,' >> mailcow.conf
- echo '# see https://mailcow.github.io/mailcow-dockerized-docs/models/model-passwd/' >> mailcow.conf
+ echo '# see https://docs.mailcow.email/models/model-passwd/' >> mailcow.conf
echo "MAILCOW_PASS_SCHEME=BLF-CRYPT" >> mailcow.conf
fi
elif [[ ${option} == "ADDITIONAL_SERVER_NAMES" ]]; then
if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
echo '# Additional server names for mailcow UI' >> mailcow.conf
echo '#' >> mailcow.conf
echo '# Specify alternative addresses for the mailcow UI to respond to' >> mailcow.conf
@@ -613,25 +810,38 @@
fi
elif [[ ${option} == "ACME_CONTACT" ]]; then
if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
echo '# Lets Encrypt registration contact information' >> mailcow.conf
echo '# Optional: Leave empty for none' >> mailcow.conf
echo '# This value is only used on first order!' >> mailcow.conf
echo '# Setting it at a later point will require the following steps:' >> mailcow.conf
- echo '# https://mailcow.github.io/mailcow-dockerized-docs/troubleshooting/debug-reset_tls/' >> mailcow.conf
+ echo '# https://docs.mailcow.email/troubleshooting/debug-reset_tls/' >> mailcow.conf
echo 'ACME_CONTACT=' >> mailcow.conf
- fi
+ fi
elif [[ ${option} == "WEBAUTHN_ONLY_TRUSTED_VENDORS" ]]; then
if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
echo "# WebAuthn device manufacturer verification" >> mailcow.conf
echo '# After setting WEBAUTHN_ONLY_TRUSTED_VENDORS=y only devices from trusted manufacturers are allowed' >> mailcow.conf
echo '# root certificates can be placed for validation under mailcow-dockerized/data/web/inc/lib/WebAuthn/rootCertificates' >> mailcow.conf
echo 'WEBAUTHN_ONLY_TRUSTED_VENDORS=n' >> mailcow.conf
fi
-elif [[ ${option} == "WATCHDOG_VERBOSE" ]]; then
+ elif [[ ${option} == "SPAMHAUS_DQS_KEY" ]]; then
if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo "# Spamhaus Data Query Service Key" >> mailcow.conf
+ echo '# Optional: Leave empty for none' >> mailcow.conf
+ echo '# Enter your key here if you are using a blocked ASN (OVH, AWS, Cloudflare e.g) for the unregistered Spamhaus Blocklist.' >> mailcow.conf
+ echo '# If empty, it will completely disable Spamhaus blocklists if it detects that you are running on a server using a blocked AS.' >> mailcow.conf
+ echo '# Otherwise it will work as usual.' >> mailcow.conf
+ echo 'SPAMHAUS_DQS_KEY=' >> mailcow.conf
+ fi
+ elif [[ ${option} == "WATCHDOG_VERBOSE" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
echo '# Enable watchdog verbose logging' >> mailcow.conf
echo 'WATCHDOG_VERBOSE=n' >> mailcow.conf
- fi
+ fi
elif ! grep -q ${option} mailcow.conf; then
echo "Adding new option \"${option}\" to mailcow.conf"
echo "${option}=n" >> mailcow.conf
@@ -727,17 +937,81 @@
git checkout -f ${BRANCH}
fi
-echo -e "\e[32mChecking for newer update script...\e[0m"
-SHA1_1=$(sha1sum update.sh)
-git fetch origin #${BRANCH}
-git checkout origin/${BRANCH} update.sh
-SHA1_2=$(sha1sum update.sh)
-if [[ ${SHA1_1} != ${SHA1_2} ]]; then
- echo "update.sh changed, please run this script again, exiting."
- chmod +x update.sh
- exit 2
+ else
+ echo -e "\e[33mYou are receiving updates from a unsupported branch.\e[0m"
+ sleep 1
+ echo -e "\e[33mThe mailcow stack might still work but it is recommended to switch to the master branch (stable builds).\e[0m"
+ echo -e "\e[33mTo change that run the update.sh Script one time with the --stable parameter to switch to stable builds.\e[0m"
+ fi
+elif [ $FORCE ]; then
+ echo -e "\e[31mYou are running in forced mode!\e[0m"
+ echo -e "\e[31mA Branch Switch can only be performed manually (monitored).\e[0m"
+ echo -e "\e[31mPlease rerun the update.sh Script without the --force/-f parameter.\e[0m"
+ sleep 1
+elif [ $NEW_BRANCH == "master" ] && [ $CURRENT_BRANCH != "master" ]; then
+ echo -e "\e[33mYou are about to switch your mailcow Updates to the stable (master) branch.\e[0m"
+ sleep 1
+ echo -e "\e[33mBefore you do: Please take a backup of all components to ensure that no Data is lost...\e[0m"
+ sleep 1
+ echo -e "\e[31mWARNING: Please see on GitHub or ask in the communitys if a switch to master is stable or not.
+ In some rear cases a Update back to master can destroy your mailcow configuration in case of Database Upgrades etc.
+ Normally a upgrade back to master should be safe during each full release.
+ Check GitHub for Database Changes and Update only if there similar to the full release!\e[0m"
+ read -r -p "Are you sure you that want to continue upgrading to the stable (master) branch? [y/N] " response
+ if [[ ! "${response}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
+ echo "OK. If you prepared yourself for that please run the update.sh Script with the --stable parameter again to trigger this process here."
+ exit 0
+ fi
+ BRANCH=$NEW_BRANCH
+ DIFF_DIRECTORY=update_diffs
+ DIFF_FILE=${DIFF_DIRECTORY}/diff_before_upgrade_to_master_$(date +"%Y-%m-%d-%H-%M-%S")
+ mv diff_before_upgrade* ${DIFF_DIRECTORY}/ 2> /dev/null
+ if ! git diff-index --quiet HEAD; then
+ echo -e "\e[32mSaving diff to ${DIFF_FILE}...\e[0m"
+ mkdir -p ${DIFF_DIRECTORY}
+ git diff ${BRANCH} --stat > ${DIFF_FILE}
+ git diff ${BRANCH} >> ${DIFF_FILE}
+ fi
+ echo -e "\e[32mSwitching Branch to ${BRANCH}...\e[0m"
+ git fetch origin
+ git checkout -f ${BRANCH}
+
+elif [ $NEW_BRANCH == "nightly" ] && [ $CURRENT_BRANCH != "nightly" ]; then
+ echo -e "\e[33mYou are about to switch your mailcow Updates to the unstable (nightly) branch.\e[0m"
+ sleep 1
+ echo -e "\e[33mBefore you do: Please take a backup of all components to ensure that no Data is lost...\e[0m"
+ sleep 1
+ echo -e "\e[31mWARNING: A switch to nightly is possible any time. But a switch back (to master) isn't.\e[0m"
+ read -r -p "Are you sure you that want to continue upgrading to the unstable (nightly) branch? [y/N] " response
+ if [[ ! "${response}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
+ echo "OK. If you prepared yourself for that please run the update.sh Script with the --nightly parameter again to trigger this process here."
+ exit 0
+ fi
+ BRANCH=$NEW_BRANCH
+ DIFF_DIRECTORY=update_diffs
+ DIFF_FILE=${DIFF_DIRECTORY}/diff_before_upgrade_to_nightly_$(date +"%Y-%m-%d-%H-%M-%S")
+ mv diff_before_upgrade* ${DIFF_DIRECTORY}/ 2> /dev/null
+ if ! git diff-index --quiet HEAD; then
+ echo -e "\e[32mSaving diff to ${DIFF_FILE}...\e[0m"
+ mkdir -p ${DIFF_DIRECTORY}
+ git diff ${BRANCH} --stat > ${DIFF_FILE}
+ git diff ${BRANCH} >> ${DIFF_FILE}
+ fi
+ git fetch origin
+ git checkout -f ${BRANCH}
fi
+if [ ! $DEV ]; then
+ echo -e "\e[32mChecking for newer update script...\e[0m"
+ SHA1_1=$(sha1sum update.sh)
+ git fetch origin #${BRANCH}
+ git checkout origin/${BRANCH} update.sh
+ SHA1_2=$(sha1sum update.sh)
+ if [[ ${SHA1_1} != ${SHA1_2} ]]; then
+ echo "update.sh changed, please run this script again, exiting."
+ chmod +x update.sh
+ exit 2
+ fi
if [ ! $FORCE ]; then
read -r -p "Are you sure you want to update mailcow: dockerized? All containers will be stopped. [y/N] " response
if [[ ! "${response}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
@@ -788,8 +1062,22 @@
[[ -f data/conf/nginx/ZZZ-ejabberd.conf ]] && rm data/conf/nginx/ZZZ-ejabberd.conf
+
# Silently fixing remote url from andryyy to mailcow
-git remote set-url origin https://github.com/mailcow/mailcow-dockerized
+# git remote set-url origin https://github.com/mailcow/mailcow-dockerized
+
+DEFAULT_REPO=https://github.com/mailcow/mailcow-dockerized
+CURRENT_REPO=$(git remote get-url origin)
+if [ "$CURRENT_REPO" != "$DEFAULT_REPO" ]; then
+ echo "The Repository currently used is not the default Mailcow Repository."
+ echo "Currently Repository: $CURRENT_REPO"
+ echo "Default Repository: $DEFAULT_REPO"
+ read -r -p "Should it be changed back to default? [y/N] " repo_response
+ if [[ "$repo_response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
+ git remote set-url origin $DEFAULT_REPO
+ fi
+fi
+
echo -e "\e[32mCommitting current status...\e[0m"
[[ -z "$(git config user.name)" ]] && git config user.name moo
[[ -z "$(git config user.email)" ]] && git config user.email moo@cow.moo
@@ -834,7 +1122,7 @@
echo '!! IMPORTANT !!'
echo
echo 'SYSCTL_IPV6_DISABLED was removed due to complications. IPv6 can be disabled by editing "docker-compose.yml" and setting "enable_ipv6: true" to "enable_ipv6: false".'
- echo 'This setting will only be active after a complete shutdown of mailcow by running $COMPOSE_COMMAND down followed by $COMPOSE_COMMAND up -d".'
+ echo "This setting will only be active after a complete shutdown of mailcow by running $COMPOSE_COMMAND down followed by $COMPOSE_COMMAND up -d."
echo
echo '!! IMPORTANT !!'
echo