Current Path : /var/www/axolotl/data/www/ |
Current File : /var/www/axolotl/data/www/maintenance-all-axoloTLS.sh |
#!/usr/bin/env bash # # Включает/выключает заглушку на всех сайтах *.axolotls.ru и самом axolotls.ru, но НЕ НА axolotl.ru (который без s). # cd "`dirname $0`" ACTION="$1" function getFolders() { # ищем папки, либо симлинки, которые либо поддомены axolotls.ru, либо сам axolotls.ru find ./ -maxdepth 1 \( -type d -or -type l \) | grep -E '^\./([a-z]+\.)?axolotls.ru$' # | grep 'vladivostok' } function doWork() { local action="$1" check dry dry=false if [ "$action" = "check" ] ; then check=true action="$2" elif [ "$action" = "dry" ] ; then check="false" action="$2" dry=true else check=false fi precmd="" if [ "$dry" = true ] ; then precmd="echo" fi getFolders | while read dir ; do site="$dir" siteDir="$dir" maintDir="$siteDir.maint" prodDir="$siteDir.prod" currentMode="unknown" if [ -d "$prodDir" ] && [ ! -d "$maintDir" ] ; then currentMode="maint" elif [ ! -d "$prodDir" ] && [ -d "$maintDir" ] ; then currentMode="prod" else currentMode="unknown" fi if [ "$currentMode" = "unknown" ] ; then echo " !! Site $site - current mode UNKNOWN" if [ "$check" != "rue" ] ; then exit 1 fi fi if [ "$action" = "enable" ] ; then if [ "$currentMode" = "maint" ] ; then echo " -- Site $site --- ALREADY ENABLED maintenance" continue fi if [ "$check" = "true" ] ; then echo " -- Site $site --- CAN ENABLE maintenance" continue fi $precmd mv "$siteDir" "$prodDir" && $precmd mv "$maintDir" "$siteDir" || { echo " !! Failed to switch $site to manit, exiting." >&2 exit 1 } echo " -- Site $site --- maintenance ENABLED" elif [ "$action" = "disable" ] ; then if [ "$currentMode" = "prod" ] ; then echo " -- Site $site --- ALREADY DISABLED maintenance" continue fi if [ "$check" = "true" ] ; then echo " -- Site $site --- CAN DISABLE maintenance" continue fi $precmd mv "$siteDir" "$maintDir" && $precmd mv "$prodDir" "$siteDir" || { echo " !! Failed to switch $site to prod, exiting." >&2 exit 1 } echo " -- Site $site --- maintenance DISABLED" else echo " !! Unknown action $action, exiting!" >&2 exit 1 fi done if [ "${PIPESTATUS[1]}" != 0 ] ; then exit 1 fi } case "$ACTION" in enable|disable) echo "Checking..." doWork check $ACTION || exit 1 echo "Switching..." doWork $ACTION ;; check|dry) doWork $ACTION "$2" ;; *) echo "Unknown action $ACTION" exit 1 ;; esac