Your IP : 18.220.204.192


Current Path : /var/www/axolotl/data/www/
Upload File :
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