migrate_options.sh 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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!!!!!!
  5. migrate_config_options() {
  6. sed -i --follow-symlinks '$a\' mailcow.conf
  7. KEYS=(
  8. SOLR_HEAP
  9. SKIP_SOLR
  10. SOLR_PORT
  11. FLATCURVE_EXPERIMENTAL
  12. DISABLE_IPv6
  13. )
  14. for key in "${KEYS[@]}"; do
  15. if grep -q "${key}" mailcow.conf; then
  16. case "${key}" in
  17. SOLR_HEAP)
  18. echo "Removing ${key} in mailcow.conf"
  19. sed -i '/# Solr heap size in MB\b/d' mailcow.conf
  20. sed -i '/# Solr is a prone to run\b/d' mailcow.conf
  21. sed -i '/SOLR_HEAP\b/d' mailcow.conf
  22. ;;
  23. SKIP_SOLR)
  24. echo "Removing ${key} in mailcow.conf"
  25. sed -i '/\bSkip Solr on low-memory\b/d' mailcow.conf
  26. sed -i '/\bSolr is disabled by default\b/d' mailcow.conf
  27. sed -i '/\bDisable Solr or\b/d' mailcow.conf
  28. sed -i '/\bSKIP_SOLR\b/d' mailcow.conf
  29. ;;
  30. SOLR_PORT)
  31. echo "Removing ${key} in mailcow.conf"
  32. sed -i '/\bSOLR_PORT\b/d' mailcow.conf
  33. ;;
  34. FLATCURVE_EXPERIMENTAL)
  35. echo "Removing ${key} in mailcow.conf"
  36. sed -i '/\bFLATCURVE_EXPERIMENTAL\b/d' mailcow.conf
  37. ;;
  38. DISABLE_IPv6)
  39. echo "Migrating ${key} to ENABLE_IPv6 in mailcow.conf"
  40. local old=$(grep '^DISABLE_IPv6=' "mailcow.conf" | cut -d'=' -f2)
  41. local new
  42. if [[ "$old" == "y" ]]; then
  43. new="false"
  44. else
  45. new="true"
  46. fi
  47. sed -i '/^DISABLE_IPv6=/d' "mailcow.conf"
  48. echo "ENABLE_IPV6=$new" >> "mailcow.conf"
  49. ;;
  50. esac
  51. fi
  52. done
  53. solr_volume=$(docker volume ls -qf name=^${COMPOSE_PROJECT_NAME}_solr-vol-1)
  54. if [[ -n $solr_volume ]]; then
  55. echo -e "\e[34mSolr has been replaced within mailcow since 2025-01.\nThe volume $solr_volume is unused.\e[0m"
  56. sleep 1
  57. if [ ! "$FORCE" ]; then
  58. read -r -p "Remove $solr_volume? [y/N] " response
  59. if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
  60. echo -e "\e[33mRemoving $solr_volume...\e[0m"
  61. docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
  62. echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
  63. else
  64. echo -e "Not removing $solr_volume. Run \`docker volume rm $solr_volume\` manually if needed."
  65. fi
  66. else
  67. echo -e "\e[33mForce removing $solr_volume...\e[0m"
  68. docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
  69. echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
  70. fi
  71. fi
  72. # Delete old fts.conf before forced switch to flatcurve to ensure update is working properly
  73. FTS_CONF_PATH="${SCRIPT_DIR}/data/conf/dovecot/conf.d/fts.conf"
  74. if [[ -f "$FTS_CONF_PATH" ]]; then
  75. if grep -q "Autogenerated by mailcow" "$FTS_CONF_PATH"; then
  76. rm -rf $FTS_CONF_PATH
  77. fi
  78. fi
  79. }