migrate_options.sh 2.8 KB

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