v-change-web-domain-docroot 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/bin/bash
  2. # info: Changes the document root for an existing web domain
  3. # options: USER DOMAIN TARGET_DOMAIN [DIRECTORY]
  4. # example usage:
  5. # add custom docroot: v-change-web-domain-docroot admin domain.tld otherdomain.tld
  6. # points domain.tld to otherdomain.tld's document root.
  7. #
  8. # remove custom docroot: v-change-web-domain-docroot admin test.local default
  9. # returns document root to default value for domain.
  10. # This call changes the document root of a chosen web domain
  11. # to another available domain under the user context.
  12. #----------------------------------------------------------#
  13. # Variable&Function #
  14. #----------------------------------------------------------#
  15. # Argument definition
  16. user=$1
  17. domain=$2
  18. # Export target domain and directory
  19. # so they are correctly passed through to domain.sh
  20. export target_domain=$3
  21. export target_directory=$4
  22. # Includes
  23. source $HESTIA/func/main.sh
  24. source $HESTIA/func/domain.sh
  25. source $HESTIA/conf/hestia.conf
  26. # Additional argument formatting
  27. format_domain
  28. #----------------------------------------------------------#
  29. # Verifications #
  30. #----------------------------------------------------------#
  31. check_args '2' "$#" 'USER DOMAIN TARGET_DOMAIN [DIRECTORY]'
  32. is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
  33. # Check to ensure that target domain is valid if we're
  34. # not setting the docroot value back to defaults
  35. if [ "$target_domain" != "default" ]; then
  36. is_format_valid 'user' 'domain' 'target_domain'
  37. is_object_valid 'web' 'DOMAIN' "$target_domain"
  38. else
  39. is_format_valid 'user' 'domain'
  40. fi
  41. is_object_valid 'user' 'USER' "$user" "$user"
  42. is_object_unsuspended 'user' 'USER' "$user"
  43. is_object_valid 'web' 'DOMAIN' "$domain"
  44. is_object_unsuspended 'web' 'DOMAIN' "$domain"
  45. is_object_value_empty 'web' 'DOMAIN' "$domain" '$docroot'
  46. is_dir_symlink "$HOMEDIR/$user/web"
  47. is_dir_symlink "$HOMEDIR/$user/web/$target_domain"
  48. # Perform verification if read-only mode is enabled
  49. check_hestia_demo_mode
  50. #----------------------------------------------------------#
  51. # Action #
  52. #----------------------------------------------------------#
  53. # Unset existing custom document root path
  54. if [ ! -z "$CUSTOM_DOCROOT" ]; then
  55. update_object_value 'web' 'DOMAIN' "$domain" '$CUSTOM_DOCROOT' ""
  56. fi
  57. # If target domain value is 'default', remove the custom document root
  58. # value and rebuild web domain to restore default configuration.
  59. # Otherwise, set target document root path accordingly based on passed values.
  60. if [ "$target_domain" = "default" ]; then
  61. update_object_value 'web' 'DOMAIN' "$domain" '$CUSTOM_DOCROOT' ""
  62. else
  63. # Check for existence of specified directory under target domain's public_html folder
  64. if [ ! -z "$target_directory" ]; then
  65. if [ ! -e "$HOMEDIR/$user/web/$target_domain/public_html/$target_directory" ]; then
  66. echo "ERROR: Directory $target_directory does not exist under $HOMEDIR/$user/$target_domain/public_html/."
  67. exit 1
  68. else
  69. CUSTOM_DOCROOT="$HOMEDIR/$user/web/$target_domain/public_html/$target_directory/"
  70. fi
  71. else
  72. CUSTOM_DOCROOT="$HOMEDIR/$user/web/$target_domain/public_html/"
  73. fi
  74. add_object_key 'web' 'DOMAIN' "$domain" 'CUSTOM_DOCROOT' 'IP6'
  75. update_object_value 'web' 'DOMAIN' "$domain" '$CUSTOM_DOCROOT' "$CUSTOM_DOCROOT"
  76. fi
  77. #----------------------------------------------------------#
  78. # Hestia #
  79. #----------------------------------------------------------#
  80. # Rebuild domain configuration
  81. $BIN/v-rebuild-web-domain $user $domain
  82. # Logging
  83. if [ "$target_domain" = "default" ]; then
  84. log_history "set web domain $domain to use default document root."
  85. else
  86. log_history "set web domain $domain to use document root from $target_domain."
  87. fi
  88. log_event "$OK" "$ARGUMENTS"
  89. # Unset variables
  90. unset target_domain
  91. unset target_directory
  92. exit