#!/bin/bash

#================================================================================
# Инициализация
#================================================================================\

# Определяем местоположение скрипта
SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
# Импортируем общие функции
source $SCRIPT_PATH/console_colors
source $SCRIPT_PATH/super_user_check
source $SCRIPT_PATH/errors_func
source $SCRIPT_PATH/switch_constants
source $SCRIPT_PATH/switch_functions

# Проверяем права суперпользователя
check_root_rights

# Получаем имя модуля
module_name=$1
# Получаем задаваемый режим
mode=$(echo $2 | tr '[:lower:]' '[:upper:]')

#================================================================================
# main
#================================================================================
globalResult=0

if ! check_module_exists "$module_name"; then
	# Модуль должен существовать!
	globalResult=1
	echoerr "${ERROR_TEXT} Not found module : $module_name"
else
	# Модуль существует
	if [[ "$mode" == "$MODE_OFF" ]]; then
		# Если модулю не запрещена загрузка
		if check_module_can_boot "$module_name"; then
			echo -e "${PROCESS_TEXT} Module $module_name booting blocking ..."
			# Создадим файл если он не существует
			if [ ! -e "$MODPROBE_CONFIG" ]; then touch "$MODPROBE_CONFIG"; fi
			# Добавим в него запрет на загрузку модуля
			echo -e "blacklist $module_name\ninstall $module_name /bin/true" >> "$MODPROBE_CONFIG"
			# Проверяем что модуль блокирован
			if check_module_can_boot "$module_name"; then globalResult=1; else globalResult=0; fi
		fi
		# Выведем статус загружаемости модуля
		print_module_boot_status "$module_name"

	elif [[ "$mode" == "$MODE_ON" ]]; then
		# Если модулю запрещена загрузка
		if ! check_module_can_boot "$module_name"; then
			echo -e "${PROCESS_TEXT} Module $module_name booting unblocking ..."
			# Удаляем из файла запрет на загрузку модуля
			sed -i "/blacklist $module_name/,/install $module_name \/bin\/true/d" "$MODPROBE_CONFIG"
			# Проверяем что модуль разблокирован
			if check_module_can_boot "$module_name"; then globalResult=0; else globalResult=1; fi
		fi
		# Выведем статус загружаемости модуля
		print_module_boot_status "$module_name"

	elif [[ "$mode" == "$MODE_STATUS" ]]; then
		# Выведем статус загружаемости модуля
		print_module_boot_status "$module_name"
	else
		globalResult=1
		echoerr "${ERROR_TEXT} Unknow mode: $mode"
	fi
fi

exit $globalResult
#================================================================================
