#!/bin/sh

# Определение директории, где находится xkeen.sh
script_dir="$(cd "$(dirname "$0")" && pwd)"

# Скрываем основную директорию xkeen
install_xkeen_rename() {
    script_dir="$script_dir"
    source_dir="_xkeen"
    target_dir=".xkeen"
    source_path="$script_dir/$source_dir"
    target_path="$script_dir/$target_dir"
    
    if [ -d "$source_path" ]; then
        if [ -d "$target_path" ]; then
            rm -rf "$target_path" 2>/dev/null
        fi
        mv "$source_path" "$target_path"
    fi
	rm /opt/root/install.sh 2>/dev/null
}
install_xkeen_rename

add_chmod_init() {
		chmod +x $initd_dir/S24xray
		chmod 755 $initd_dir/S24xray	
}

# Импортируем модули
. "$script_dir/.xkeen/import.sh"

# Очищаем журнал перед работой
	logs_clear
	
xkeen_info() {
	eval "opkg update &>/dev/null"
	eval "opkg upgrade &>/dev/null"
    # Проверяем установку пакетов
    info_packages
    logs_packages_info_xkeen
	
    # Собираем необходимую информацию о процессоре
    info_cpu
    logs_cpu_info_xkeen	

    # Проверяем установку xray
    info_xray
    logs_xray_info_xkeen

    # Проверяем установленные базы geosite
    info_geosite
    logs_geosite_info_xkeen

    # Проверяем установленные базы geoip
    info_geoip
    logs_geoip_info_xkeen

    # Проверяем статусы автоматических обновлений
    info_cron
    logs_cron_info_xkeen

    # Проверяем версию xkeen
    info_version_xkeen
    logs_version_xkeen_info_xkeen

    # Проверяем актуальность xkeen
    info_compare_xkeen
    logs_compare_xkeen_info_xkeen
	
    # Проверяем версию xray
    info_version_xray
    logs_version_xray_info_xkeen

    # Проверяем актуальность xray
    info_compare_xray
    logs_compare_xray_info_xkeen

    # Устанавливаем недостающие пакеты
    install_packages
    logs_install_packages_xkeen
}


	
while [ $# -gt 0 ]; do
    case "$1" in
	
        -i)	# Запуск полного цикла установки
			# Устанавливаем xray			
			clear
			echo "  Запуск полного цикла установки"
			xkeen_info
			logs_cpu_info_console
			if [ -z "$architecture" ]; then
				exit 1
			fi	

				if [ "$xray_installed" = "not_installed" ]; then
					echo ""
					download_xray
					logs_download_xray_info_xkeen
					
					install_xray
					
					xray_installed="installed"
					info_version_xray
				fi
			
			# Обновляем xray	
				if [ "$info_compare_xray" = "update" ]; then
					echo ""
					download_xray
					logs_download_xray_info_xkeen
					
					install_xray
					
					info_compare_xray="actual"
					info_version_xray
				fi
				
			# Устанавливаем geoip
				sleep 2
				clear
				choose_geoip
				logs_choose_geoip_info_xkeen
				
					delete_geoip
					logs_delete_geoip_info_xkeen
					
					install_geoip
					logs_install_geoip_info_xkeen
				sleep 1
					
			clear
			# Устанавливаем geosite
				choose_geosite
				logs_choose_geosite_info_xkeen
				
				delete_geosite
					logs_delete_geosite_info_xkeen
										
					install_geosite
					logs_install_geosite_info_xkeen
				sleep 1
						
			clear
			# Настраиваем автоматические обновления
				choose_update_cron
				logs_choose_update_cron_info_xkeen
				
			clear
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
					delete_cron_task
					logs_delete_cron_task_info_xkeen
					
					install_cron
					logs_install_cron_info_xkeen
			
			sleep 1
			clear
			# Удаляем предыдущие регистрации
				delete_register_xkeen
				logs_delete_register_xkeen_info_xkeen
								
				delete_register_xray
				logs_delete_register_xray_info_xkeen
				
				install_configs
				logs_install_configs_info_xkeen
								
				register_xray_list
				logs_register_xray_list_info_xkeen
				
				register_xray_control
				logs_register_xray_control_info_xkeen
				
				register_xray_status
				logs_register_xray_status_info_xkeen
				
				register_xray_initd
				
			# Регистрируем xkeen
				register_xkeen_list
				logs_register_xray_list_info_xkeen
				
				register_xkeen_control
				logs_register_xray_control_info_xkeen
				
				register_xkeen_status
				logs_register_xkeen_status_info_xkeen
				
				
			# Создаем init для cron
				echo ""
				eval "/opt/etc/init.d/S05crond stop" 2>/dev/null
				[ -e "$initd_dir/S05crond" ] && rm -f "$initd_dir/S05crond"
				
				register_cron_initd
				
				eval "/opt/etc/init.d/S05crond start" 2>/dev/null
				
			# Исправление регистраций
				fixed_register_packages

			# Удаляем временные файлы
				echo ""
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo ""
				echo -e "  Перед использованием Xray настройте конфигураций по пути «${yellow}/opt/etc/xray/configs${reset}»"
				
				echo "  Установка окончена"
            shift
            ;;
			
        -ux)		#Запуск обновления Xray
			echo "  Проверка обновления Xray"
			xkeen_info
			
				if [ "$info_compare_xray" = "update" ]; then
					echo "  Запуск обновления Xray"
					clear
					echo -e "  Обновление ${yellow}XKeen${reset}"
					eval "/opt/etc/init.d/S24xray stop" 2>/dev/null
					[ -e "$initd_dir/S24Xray" ] && rm -f "$initd_dir/S24Xray"

					backup_xray

					download_xray
					logs_download_xray_info_xkeen

					install_xray

					delete_register_xray
					logs_delete_register_xray_info_xkeen
					logs_delete_register_xray_info_console

					echo -e "  ${yellow}Выполняется${reset} регистрация"
					sleep 1
					echo ""
					echo -e "  ${yellow}Проверка${reset} регистрации"

					register_xray_list
					logs_register_xray_list_info_xkeen
					logs_register_xray_list_info_console

					register_xray_control
					logs_register_xray_control_info_xkeen
					logs_register_xray_control_info_console

					register_xray_status
					logs_register_xray_status_info_xkeen
					logs_register_xray_status_info_console

					register_xray_initd
					logs_register_xray_initd_info_xkeen
					logs_register_xray_initd_info_console

					eval "/opt/etc/init.d/S24xray start" 2>/dev/null

					echo ""
					echo -e "  Проверка регистрации ${green}завершена${reset}"
					echo ""
					echo -e "  Обновление Xray ${green}завершено${reset}"
					echo ""

					delete_tmp
					logs_delete_tmp_info_xkeen
					echo "  Обновление Xray завершено"
				else
					echo "  Нет доступных обновлений Xray"
				fi		
            shift
            ;;
			
			
        -uk)		#Запуск обновления XKeen
			echo "  Проверка обновления XKeen"
			xkeen_info
			
				if [ "$info_compare_xkeen" = "update" ]; then
					clear
					echo -e "  Обновление ${yellow}XKeen${reset}"	
					backup_xkeen	
					
					echo ""
					download_xkeen
					logs_download_xkeen_info_xkeen
					
					install_xkeen
					echo ""
					
					echo -e "  Выполняется ${yellow}проверка удаления${reset} регистрации из Entware"
					delete_register_xkeen
					logs_delete_register_xkeen_info_xkeen
					logs_delete_register_xkeen_info_console
					
					echo -e "  ${yellow}Выполняется${reset} регистрация"
					sleep 1
					echo ""
					echo -e "  ${yellow}Проверка${reset} регистрации"					
				
					register_xkeen_list
					logs_register_xkeen_list_info_xkeen
					logs_register_xkeen_list_info_console
					
					register_xkeen_control
					logs_register_xkeen_control_info_xkeen
					logs_register_xkeen_control_info_console
					
					register_xkeen_status
					logs_register_xkeen_status_info_xkeen
					logs_register_xkeen_status_info_console
					
					register_cron_initd
					register_xray_initd
					
					echo ""
					echo -e "  Проверка регистрации ${green}завершена${reset}"
					echo ""
					echo -e "  Обновление XKeen ${green}завершено${reset}"
					echo ""
					
					fixed_register_packages
					delete_tmp
					logs_delete_tmp_info_xkeen
					echo "  Обновление XKeen завершено"
				else
					echo "  Нет доступных обновлений XKeen"
				fi		
            shift
            ;;
						
        -ugs)	#Запуск обновления баз GeoSite	
			echo "  Обновление установленных GeoSite"
			info_geosite
			logs_geosite_info_xkeen
						
			eval "/opt/etc/init.d/S24xray stop"
			
			if [ "$geo_exists_geosite_v2fly" = "installed" ]; then
				install_v2fly_geosite="true"
            fi
			
			if [ "$geo_exists_geosite_antifilter" = "installed" ]; then
                install_antifilter_geosite="true"
            fi
						
			if [ "$geo_exists_geosite_antizapret" = "installed" ]; then
				install_antizapret_geosite="true"
            fi
				
				install_geosite
				logs_install_geosite_info_xkeen
				logs_install_geosite_info_console
				
			eval "/opt/etc/init.d/S24xray start"
			
			echo "  Обновление установленных GeoSite завершено"
			
            shift
            ;;
			
			
        -ugi)		#Запуск обновления баз GeoIP
			echo "  Обновление установленных GeoIP"
			info_geoip
			logs_geoip_info_xkeen
			
			eval "/opt/etc/init.d/S24xray stop"
			
			if [ "$geo_exists_geoip_v2fly" = "installed" ]; then
				install_v2fly_geoip="true"
            fi
			
			if [ "$geo_exists_geoip_antifilter" = "installed" ]; then
                install_antifilter_geoip="true"
            fi
				
				install_geoip
				logs_install_geoip_info_xkeen
				logs_install_geoip_info_console
				
				
			eval "/opt/etc/init.d/S24xray start"
			
			echo "  Обновление установленных GeoIP завершено"
            shift
            ;;
			
			
		-uac)	#Создать или изменить существующие правила автоматического обновления XKeen, Xray, GeoIP, GeoSite	
				echo "  Создание или изменение правил автоматического обновления XKeen, Xray, GeoIP, GeoSite"
				info_cron
				logs_cron_info_xkeen
				
				clear
				delete_cron_xkeen 2>/dev/null
				delete_cron_xray 2>/dev/null
				delete_cron_geoip 2>/dev/null
				delete_cron_geosite 2>/dev/null
				
                    chose_xkeen_cron_select=true
                    chose_xray_cron_select=true
                    chose_geosite_cron_select=true
                    chose_geoip_cron_select=true

				if input_concordance_list "Хотите установить единое время для ${yellow}всех${reset} обновлений?"; then
                        chose_all_cron_select=true
                        chose_xkeen_cron_select=false
                        chose_xray_cron_select=false
                        chose_geosite_cron_select=false
                        chose_geoip_cron_select=false
                    else
                        chose_all_cron_select=false
				fi
					
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				echo "  Создание или изменение правил автоматического обновления XKeen, Xray, GeoIP, GeoSite завершено"
				
            shift
            ;;
			
			
		-ukc)	#Создать или изменить существующее правило автоматического обновления XKeen
				echo "  Создание или изменение правила автоматического обновления XKeen"
				info_cron
				logs_cron_info_xkeen
				
				clear
				delete_cron_xkeen
				logs_delete_cron_xkeen_info_xkeen
				
				chose_xkeen_cron_select=true
				
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				echo "  Создание или изменение правила автоматического обновления XKeen завершено"
            shift
            ;;
			
			
		-uxc)	#Создать или изменить существующее правило автоматического обновления Xray
				echo "  Создание или изменение правила автоматического обновления Xray"
				info_cron
				logs_cron_info_xkeen
				
				clear
				delete_cron_xray
				logs_delete_cron_xray_info_xkeen
				
				chose_xray_cron_select=true
				
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Создание или изменение правила автоматического обновления Xray завершено"
            shift
            ;;
			
			
		-ugsc)	#Создать или изменить существующее правило автоматического обновления GeoSite
				echo "  Создание или изменение правила автоматического обновления GeoSite"
				info_cron
				logs_cron_info_xkeen
				
				clear
				delete_cron_geosite
				logs_delete_cron_geosite_info_xkeen
				
				chose_geosite_cron_select=true
				
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Создание или изменение правила автоматического обновления GeoSite завершено"
            shift
            ;;
			
			
		-ugic)	#Создать или изменить существующее правило автоматического обновления GeoIP
				echo "  Создание или изменение правила автоматического обновления GeoIP"
				info_cron
				logs_cron_info_xkeen
				
				clear
				delete_cron_geoip
				logs_delete_cron_geoip_info_xkeen
				
				chose_geoip_cron_select=true
				
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Создание или изменение правила автоматического обновления GeoIP завершено"
            shift
            ;;


		-rx)	#Зарегистрировать Xray
				xkeen_info
				echo "  Регистрация Xray в системе"
				clear
				echo -e "  Прегистрация ${yellow}Xray${reset}"	
				delete_register_xray
				logs_delete_register_xray_info_xkeen
				logs_delete_register_xray_info_console
				
				echo -e "  ${yellow}Выполняется${reset} регистрация"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset}"
				
				register_xray_list
				logs_register_xray_list_info_xkeen
				logs_register_xray_list_info_console
				
				register_xray_control
				logs_register_xray_control_info_xkeen
				logs_register_xray_control_info_console
				
				register_xray_status
				logs_register_xray_status_info_xkeen
				logs_register_xray_status_info_console
				fixed_register_packages
				
				echo ""
				echo -e "  Проверка регистрации ${green}завершена${reset}"
				
				echo "  Регистрация Xray в системе завершена"								
            shift
            ;;
			

		-ri)	#Создать правило автоматического запуска Xray
				echo "  Создание правила автоматического запуска Xray"
				clear
				eval "/opt/etc/init.d/S24xray stop" 2>/dev/null
				[ -e "$initd_dir/S24Xray" ] && rm -f "$initd_dir/S24Xray"
				
				echo -e "  Создание файла автоматического запуска ${yellow}Xray${reset}"	
				sleep 1
				
				register_xray_initd
				logs_register_xray_initd_info_xkeen
				
				echo ""
				echo -e "  ${yellow}Проверка${reset} init.d"
				logs_register_xray_initd_info_console
				
				echo ""
				echo -e "  Если Ваша конфигурация Xray готова, то можете запустить его «${green}xkeen -start${reset}»"
				
				echo "  Создание правила автоматического запуска Xray завершено"
            shift
            ;;
			

		-rk)	#Зарегистрировать XKeen
				xkeen_info			
				clear
				echo -e "  Регистрация ${yellow}XKeen${reset}"	
		
				delete_register_xkeen
				logs_delete_register_xkeen_info_xkeen
				logs_delete_register_xkeen_info_console
				
				echo -e "  ${yellow}Выполняется${reset} регистрация"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset} регистрации"
				
				register_xkeen_list
				logs_register_xkeen_list_info_xkeen
				logs_register_xkeen_list_info_console
				
				register_xkeen_control
				logs_register_xkeen_control_info_xkeen
				logs_register_xkeen_control_info_console
				
				register_xkeen_status
				logs_register_xkeen_status_info_xkeen
				logs_register_xkeen_status_info_console
				
				fixed_register_packages
				
				echo ""
				echo -e "  Проверка регистрации ${green}завершена${reset}"
				
				echo "  Регистрация XKeen в системе завершена"	
            shift
            ;;
			

			
		-dac)	#Удалить правила автоматического обновления XKeen, Xray, GeoSite, GeoIP
				echo "  Удаление правил автоматического обновления XKeen, Xray, GeoSite, GeoIP"	
				info_cron
				logs_cron_info_xkeen
				
				clear
				echo -e "  Удаление задач ${yellow}XKeen${reset}, ${yellow}Xray${reset}, ${yellow}GeoSite${reset}, ${yellow}GeoIP${reset}, автоматического обновления"	
				echo ""
				echo -e "  ${yellow}Проверка${reset} удаления задач Cron"
				delete_cron_xkeen
				logs_delete_cron_xkeen_info_xkeen
				logs_delete_cron_xkeen_info_console
				
				delete_cron_xray
				logs_delete_cron_xray_info_xkeen
				logs_delete_cron_xray_info_console
				
				delete_cron_geosite
				logs_delete_cron_geosite_info_xkeen
				logs_delete_cron_geosite_info_console
				
				delete_cron_geoip
				logs_delete_cron_geoip_info_xkeen
				logs_delete_cron_geoip_info_console
				
				echo -e "  Проверка удаления задач Cron ${green}завершена${reset}"
				echo ""
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Удаление правил автоматического обновления XKeen, Xray, GeoSite, GeoIP завершено"	
            shift
            ;;
			
			
		-dkc)		#Удалить правило автоматического обновления XKeen
				echo "  Удаление правила автоматического обновления XKeen"
				info_cron
				logs_cron_info_xkeen
				
				clear
				echo -e "  Удаление задач ${yellow}XKeen${reset} автоматического обновления"	
				echo ""
				echo -e "  ${yellow}Проверка${reset} удаления задач Cron для XKeen"
		
				delete_cron_xkeen
				logs_delete_cron_xkeen_info_xkeen
				logs_delete_cron_xkeen_info_console
				
				echo -e "  Проверка удаления задачи Cron для XKeen ${green}завершена${reset}"
				echo ""
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Удаление правила автоматического обновления XKeen завершено"
            shift
            ;;
			

		-dxc)		#Удалить правило автоматического обновления Xray
				echo "  Удаление правила автоматического обновления Xray"
				info_cron
				logs_cron_info_xkeen
				
				clear
				echo -e "  Удаление задач ${yellow}Xray${reset} автоматического обновления"	
				echo ""
				echo -e "  ${yellow}Проверка${reset} удаления задач Cron для Xray"
		
				delete_cron_xray
				logs_delete_cron_xray_info_xkeen
				logs_delete_cron_xray_info_console
				
				echo -e "  Проверка удаления задачи Cron для Xray ${green}завершена${reset}"
				echo ""
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Удаление правила автоматического обновления Xray завершено"
            shift
            ;;
			

		-dgsc)		#Удалить правило автоматического обновления GeoSite
				echo "  Удаление правила автоматического обновления GeoSite"
				info_cron
				logs_cron_info_xkeen
				
				clear
				echo -e "  Удаление задач ${yellow}GeoSite${reset} автоматического обновления"	
				echo ""
				echo -e "  ${yellow}Проверка${reset} удаления задач Cron для GeoSite"
				
				delete_cron_geosite
				logs_delete_cron_geosite_info_xkeen
				logs_delete_cron_geosite_info_console
				
				echo -e "  Проверка удаления задачи Cron для GeoSite ${green}завершена${reset}"
				echo ""
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Удаление правила автоматического обновления GeoSite завершено"
            shift
            ;;
			
			
		-dgic)		#Удалить правило автоматического обновления GeoIP
				echo "  Удаление правила автоматического обновления GeoIP завершено"
				info_cron
				logs_cron_info_xkeen
				
				clear
				echo -e "  Удаление задач ${yellow}GeoIP${reset} автоматического обновления"	
				echo ""
				echo -e "  ${yellow}Проверка${reset} удаления задач Cron для GeoIP"
				
				delete_cron_geoip
				logs_delete_cron_geoip_info_xkeen
				logs_delete_cron_geoip_info_console
				
				echo -e "  Проверка удаления задачи Cron для GeoIP ${green}завершена${reset}"
				echo ""
				
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Удаление правила автоматического обновления GeoIP завершено"
            shift
            ;;
			
			
		-dx)	#Удалить Xray
				echo "  Удаление Xray"
				
				clear
				echo -e "  ${yellow}Удаление${reset} Xray и его компонентов"	
				echo ""
				
				eval "/opt/etc/init.d/S24xray stop" 2>/dev/null
				eval "opkg remove xray"
				
				echo ""
				echo -e "  Удаление Xray и его компонентов ${green}завершено${reset}"	
				
				echo "  Удаление Xray завершено"
            shift
            ;;
			
			
		-dk)	#Удалить XKeen
				echo "  Удаление XKeen"
				
				clear
				echo -e "  Удаление ${yellow}XKeen${reset} и его компонентов"	
				echo ""
				eval "opkg remove xkeen"
				
				echo "  Удаление XKeen завершено"
            shift
            ;;
			
			
		-dgs)	#Удалить GeoSite
				echo "  Удаление всех GeoSite"
				
				clear
				eval "/opt/etc/init.d/S24xray stop"
				
				echo -e "  Удаление ${yellow}GeoSite${reset}"	
				echo ""
				
				delete_geosite_key
				logs_delete_geosite_info_xkeen
				logs_delete_geosite_info_console
				
				echo -e "  Обновите свою конфигурацию Xray и запустите его повторно «${green}xkeen -start${reset}́»"			
				
				echo "  Удаление всех GeoSite завершено"
            shift
            ;;
			
			
		-dgi)	#Удалить GeoIP
				echo "  Удаление всех GeoIP"
				
				clear
				eval "/opt/etc/init.d/S24xray stop"
				
				echo -e "  Удаление ${yellow}GeoIP${reset}"	
				echo ""
				delete_geoip_key
				logs_delete_geoip_info_xkeen
				logs_delete_geoip_info_console
				
				echo -e "  Обновите свою конфигурацию Xray и запустите его повторно «${green}xkeen -start${reset}́»"
				
				echo "  Удаление всех GeoIP завершено"
            shift
            ;;
			
			
		-dt)	#Удалить временные файлы XKeen
				delete_tmp
				logs_delete_tmp_info_xkeen
            shift
            ;;
			
			
		-dc)	#Удалить все конфиги Xray
				echo "  Удаление всех конфигурационных файлов Xray"
				clear
				echo -e "  Удаление ${yellow}конфигурационных файлов Xray${reset}"	
				echo ""
				sleep 1
				echo -e "  ${yellow}Проверка${reset} удаления задач конфигурационных файлов"
				
				delete_configs
				logs_delete_configs_info_console
				logs_delete_configs_info_xkeen				
				
				echo -e "  Проверка удаления ${green}конфигурационных файлов выполнена${reset}"
				
				echo "  Удаление всех конфигурационных файлов Xray завершено"
            shift
            ;;
			
			
		-drx)	#Удалить регистрации Xray
				echo "  Удаление регистрации Xray из системы"
				
				clear
				echo -e "  Удаление ${yellow}регистрации Xray${reset}"	
				echo ""
				sleep 1
				echo -e "  ${yellow}Проверка${reset} удаления регистрации Xray"
				
				delete_register_xray
				logs_delete_register_xray_info_xkeen
				logs_delete_register_xray_info_console
				
				echo -e "  Проверка удаления регистрации Xray ${green}выполнена${reset}"
				
				echo "  Удаление регистрации Xray из системы завершено"
            shift
            ;;
			

		-drk)	#Удалить регистрации XKeen
				echo "  Удаление регистрации XKeen из системы"
				
				clear
				echo -e "  Удаление ${yellow}регистрации XKeen${reset}"	
				echo ""
				sleep 1
				echo -e "  ${yellow}Проверка${reset} удаления регистрации XKeen"
				
				delete_register_xkeen
				logs_delete_register_xkeen_info_xkeen
				logs_delete_register_xkeen_info_console
				
				echo -e "  Проверка удаления регистрации XKeen ${green}выполнена${reset}"
				
				echo "  Удаление регистрации XKeen из системы завершено"
            shift
            ;;


		-rrk)	#Обновить регистрацию XKeen
				echo "  Обновление регистрации XKeen в системе"
				
				clear
				echo -e "  Обновление регистрации ${yellow}XKeen${reset}"	
				
				info_cpu
				logs_cpu_info_xkeen
				info_version_xkeen
				logs_version_xkeen_info_xkeen
				
				delete_register_xkeen				
				logs_delete_register_xkeen_info_xkeen
				logs_delete_register_xkeen_info_console
				
				echo -e "  ${yellow}Выполняется${reset} обновление регистрации"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset} регистрации"
				
				register_xkeen_list
				logs_register_xkeen_list_info_xkeen
				logs_register_xkeen_list_info_console
				
				register_xkeen_control
				logs_register_xkeen_control_info_xkeen
				logs_register_xkeen_control_info_console
				
				register_xkeen_status
				logs_register_xkeen_status_info_xkeen
				logs_register_xkeen_status_info_console
				
				echo ""
				echo -e "  Проверка регистрации ${green}завершена${reset}"
				
				echo "  Обновление регистрации XKeen в системе завершено"
            shift
            ;;
			
			
		-rrx)	#Обновить регистрацию Xray
				echo "  Обновление регистрации Xray в системе"
				
				clear
				echo -e "  Обновление регистрации ${yellow}Xray${reset}"	
				
				info_xray
				logs_xray_info_xkeen
				info_cpu
				logs_cpu_info_xkeen
				info_version_xray
				logs_version_xray_info_xkeen
				
				delete_register_xray
				logs_delete_register_xray_info_xkeen
				logs_delete_register_xray_info_console
				
				echo -e "  ${yellow}Выполняется${reset} обновление регистрации"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset}"
			
				register_xray_list
				logs_register_xray_list_info_xkeen
				logs_register_xray_list_info_console
				
				register_xray_control
				logs_register_xray_control_info_xkeen
				logs_register_xray_control_info_console
				
				register_xray_status
				logs_register_xray_status_info_xkeen
				logs_register_xray_status_info_console
				
				echo ""
				echo -e "  Проверка регистрации ${green}завершена${reset}"
				
				echo "  Обновление регистрации Xray в системе завершено"
            shift
            ;;
				
			
		-rc)	#Переустановить конфиги Xray
				echo "  Переустановка конфигураций Xray"
				
				clear
				echo -e "  Переустановка конфигураций ${yellow}Xray${reset}"	
				info_xray
				logs_xray_info_xkeen
				info_version_xray
				logs_version_xray_info_xkeen
				
				install_configs
				logs_install_configs_info_xkeen
				
				echo ""
				echo -e "  ${yellow}Проверка${reset} наличия конфигураций"
				logs_install_configs_info_console
				echo -e "  Проверка наличия конфигураций ${green}завершена${reset}"
								
				echo
				echo -e "  ${yellow}Выполняется${reset} обновление регистрации"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset} регистрации"
				
				register_xray_list
				logs_register_xray_list_info_xkeen
				logs_register_xray_list_info_console
				
				register_xray_control
				logs_register_xray_control_info_xkeen
				logs_register_xray_control_info_console
				
				register_xray_status
				logs_register_xray_status_info_xkeen
				logs_register_xray_status_info_console
				
				echo ""
				echo -e "  Проверка регистрации ${green}завершена${reset}"
				
				echo "  Переустановка конфигураций Xray завершена"
            shift
            ;;
			
			
			-x) # Переустановить Xray
				echo "  Переустановка Xray"
				xkeen_info
				
				clear
				echo -e "  ${yellow}Переустановка${reset} Xray"
				backup_configs
				opkg remove xray
				xray_installed="not_installed"

				echo ""
				download_xray
				logs_download_xray_info_xkeen

				install_xray
				xray_installed="installed"

				echo ""
				echo -e "  ${yellow}Установка${reset} конфигурационных файлов Xray"
				mkdir -p "$install_conf_dir" || { echo "Ошибка: Не удалось создать директорию $install_conf_dir"; exit 1; }
				install_configs
				logs_install_configs_info_xkeen

				echo ""
				echo -e "  ${yellow}Проверка${reset} установленных конфигурационных файлов Xray"
				logs_install_configs_info_console
				echo -e "  Проверка установленных конфигурационных файлов Xray ${green}завершена${reset}"

				echo ""
				echo -e "  ${yellow}Обновление${reset} регистрации"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset} регистрации"

				register_xray_list
				logs_register_xray_list_info_xkeen
				logs_register_xray_list_info_console

				register_xray_control
				logs_register_xray_control_info_xkeen
				logs_register_xray_control_info_console

				register_xray_status
				logs_register_xray_status_info_xkeen
				logs_register_xray_status_info_console
				
				register_xray_initd
				logs_register_xray_initd_info_xkeen
				logs_register_xray_initd_info_console

				echo ""
				echo -e "  Обновление регистрации ${green}завершено${reset}"

				if input_concordance_list "Хотите включить автоматическое обновление ${yellow}Xray${reset}?"; then
					chose_xray_cron_select=true
				else
					chose_xray_cron_select=false
				fi

				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
					delete_cron_task
					logs_delete_cron_task_info_xkeen

				install_cron
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				
				restore_backup_configs

				echo -e "  Переустановка Xray ${green}завершена${reset}"	
		
				echo "  Переустановка Xray завершена"	
				shift
				;;

			
		-k)	#Переустановить XKeen
				echo "  Переустановка XKeen"
				xkeen_info
				
				clear
				echo -e "  ${yellow}Переустановка${reset} XKeen"
				echo ""
				download_xkeen
				logs_download_xkeen_info_xkeen
				
				echo ""
				install_xkeen
				
				echo ""
				echo -e "  ${yellow}Обновление${reset} регистрации"
				sleep 1
				echo ""
				echo -e "  ${yellow}Проверка${reset} регистрации"
				
				delete_register_xkeen
				logs_delete_register_xkeen_info_xkeen
														
				register_xkeen_list
				logs_register_xkeen_list_info_xkeen
				logs_register_xkeen_list_info_console
				
				register_xkeen_control
				logs_register_xkeen_control_info_xkeen
				logs_register_xkeen_control_info_console
				
				register_xkeen_status
				logs_register_xkeen_status_info_xkeen
				logs_register_xkeen_status_info_console
				
				register_xray_initd
				logs_register_xray_initd_info_xkeen
				logs_register_xray_initd_info_console
				
				echo ""
				echo -e "  Обновление регистрации ${green}завершено${reset}"
				
				if input_concordance_list "Хотите включить автоматическое обновление ${yellow}XKeen?${reset}"; then
                        chose_xkeen_cron_select=true
                    else
                        chose_xkeen_cron_select=false
				fi
				
				choose_cron_time
				logs_choose_cron_time_info_xkeen
				
					delete_cron_task
					logs_delete_cron_task_info_xkeen
				
				install_cron
				
				echo -e "  ${Yellow}Проверка${reset} Cron файла на наличие правила автоматического обновления"	
				logs_install_cron_info_xkeen
				logs_install_cron_info_console
				echo -e "  Проверка Cron файла на наличие правила автоматического обновления ${green}завершена${reset}"	
				
				echo ""
				echo -e "  Переустановка XKeen ${green}завершена${reset}"					
								
				delete_tmp
				logs_delete_tmp_info_xkeen
				
				echo "  Переустановка XKeen завершена"				
            shift
            ;;
			
		-xb)	#Сделать резервную копию Xray
				echo "  Создание резервной копии Xray"
				
				info_xray
				logs_xray_info_xkeen
				info_version_xray
				logs_version_xray_info_xkeen
				
				backup_xray				
				
				echo "  Создание резервной копии Xray завершено"
            shift
            ;;
						
		-kb)	#Резервное копирование XKeen
				echo "  Создание резервной копии XKeen"
				
				info_version_xkeen
				logs_version_xkeen_info_xkeen
				
				backup_xkeen		
				
				echo "  Создание резервной копии XKeen завершено"
            shift
            ;;
			
		-cb)	#Сделать резервную конфигураций Xray
				echo "  Создание резервной копии конфигураций Xray"
				
				backup_configs
				
				echo "  Создание резервной копии конфигураций Xray завершено"
            shift
            ;;
						
		-xbr)	# Восстановление резервной копировании Xray
				echo "  Восстановление из резервной копии Xray"
				
				restore_backup_xray
				
				echo "  Восстановление из резервной копии Xray завершено"
            shift
            ;;
			
			
		-kbr)	# Восстановление резервной копировании XKeen
				echo "  Восстановление из резервной копии XKeen"
				
				restore_backup_xkeen	
				
				echo "  Восстановление из резервной копии XKeen завершено"
            shift
            ;;
			
		-cbr)	# Восстановление резервной копировании конфигурационных файлов Xray
				echo "  Восстановление из резервной копии конфигураций Xray"
				
				restore_backup_configs	
				
				echo "  Восстановление из резервной копии конфигураций Xray завершено"
            shift
            ;;
			
						
		-tc)	# Тест соединения
				echo -e "  ${yellow}Проверка${reset} интернет-соединения"
				tests_connection
				echo -e "  Проверка интернет-соединения ${green}завершена${reset}"
				
            shift
            ;;
			
		-tpx)	# Показать прослушиваемые порты
				echo -e "  ${yellow}Проверка${reset} портов Xray"
				tests_ports_xray
				echo -e "  Проверка интернет-соединения ${green}завершена${reset}"
			;;
			
		-tfk)	# Проверить файлы XKeen
				echo -e "  ${yellow}Проверка${reset} файлов XKeen"
				logs_file_check_xkeen_xkeen
				echo -e "  Проверка файлов XKeen ${green}завершена${reset}"
				break
			;;
			
		-tfx)	# Проверить файлы Xray
				echo -e "  ${yellow}Проверка${reset} файлов Xray"
				logs_file_check_xray_xkeen
				echo -e "  Проверка файлов Xray ${green}завершена${reset}"
				break
			;;
						
		-v)	# Показать текущую версию
				info_version_xray
				logs_version_xray_info_xkeen
				echo "  Текущая версия XKeen $xkeen_current_version"
				break
			;;
			
		-ad)	# Можете купить Мне кофе
				author_donate					
            shift
            ;;
			
		-af)	# Обратная связь
				author_feedback			
            shift
            ;;
			
		-start)	# Запуск Xray	
				add_chmod_init
				eval "busybox sh $initd_dir/S24xray start on"
				ip route flush cache
				exit 0
				
            shift
            ;;	
			
		-stop)	# Остановка Xray			
				add_chmod_init
				eval "busybox sh $initd_dir/S24xray stop"
				exit 0
				
            shift
            ;;		
			
		-restart)	# Перезапуск Xray			
				add_chmod_init
				eval "busybox sh $initd_dir/S24xray restart on"
				exit 0
				
            shift
            ;;				
			
		-status)	# Проверка Xray

				eval "busybox sh $initd_dir/S24xray status" 
				
            shift
            ;;		
			
		-auto)  # Переключение значения start_auto между "on" и "off"
			if grep -q 'start_auto="on"' $initd_dir/S24xray; then
				sed -i 's/start_auto="on"/start_auto="off"/' $initd_dir/S24xray
				echo -e "  Автозапуск Xray ${red}отключен${reset}"
			else
				sed -i 's/start_auto="off"/start_auto="on"/' $initd_dir/S24xray
				echo -e "  Автозапуск Xray ${green}включен${reset}"
			fi
			exit 0
			add_chmod_init
			
			shift
			;;
			
		-ap)	# Добавить порт Xray
			shift	
				add_ports_donor "$1" 
				sleep 2
				add_chmod_init
				
            shift
            ;;		
			
		-dp)	# Удалить порт Xray
			shift				
				dell_ports_donor "$1"
				sleep 2
				add_chmod_init
				
            shift
            ;;		
			
		-cp) # Получить список портов, на которых работает прокси	
			port_donor=$(grep -m1 '^port_donor=' /opt/etc/init.d/S24xray | cut -d'=' -f2 | tr -d '"' | tr ' ' '\n' | sed 's/^/     /')
				if [ -z "$port_donor" ] || [ "$port_donor" == "     " ]
				then
				  echo -e "  Xray работает ${yellow}на всех${reset} портах"
				else
				  echo -e "  Xray ${green}работает${reset} на портах\n$port_donor"
				fi
				add_chmod_init
			
			shift
            ;;
		-ape)	# Добавить порт-исключение Xray
			shift	
				add_ports_exclude "$1" 
				sleep 2

            shift
            ;;		
			
		-dpe)	# Удалить порт-исключение Xray
			shift				
				dell_ports_exclude "$1"
				sleep 2	
				add_chmod_init
				
            shift
            ;;		
			
		-cpe) # Получить список портов-исключение, на которых не работает прокси	
			port_exclude=$(grep -m1 '^port_exclude=' /opt/etc/init.d/S24xray | cut -d'=' -f2 | tr -d '"' | tr ' ' '\n' | sed 's/^/     /')
				if [ -z "$port_exclude" ] || [ "$port_exclude" == "     " ]
				then
				  echo -e "  ${yellow}Нет портов${reset} Xray для исключения"
				else
				  echo -e "  Xray ${red} не работает${reset} на портах\n$port_exclude"
				fi
				add_chmod_init
			
			shift
            ;;
			
		-modules)	# Переносит модули из прошивки в пользовательскую директорию
				migration_modules
				
            shift
            ;;
			
		-d)		
		shift
			update_start_delay "$1"
			sleep 2	
			add_chmod_init
			
		shift
		;;
			
		-diag)
			diagnostic	
				
			shift
            ;;
					
		-arch)
			archive_xkeen
				
            shift
            ;;
						
		-test)

			shift
            ;;
		
		-fixed)
			entware_fixed
			xkeen_info
			
			backup_configs
			download_xray

			install_xray
			install_configs

			register_xray_list
			register_xray_control
			register_xray_status
			
			register_xray_initd
			
			fixed_register_packages
			restore_backup_configs
			
			delete_tmp
			
			shift
            ;;
			
		-h)	#Помощь			
				echo
				echo -e "  ${light_blue}XKeen${reset} — утилита для обеспечения работы Xray на роутерах Keenetic"
				echo 
				echo -e "     Пример использования"
				echo -e "     xkeen -ap 443,80"
				echo -e "     xkeen   ${dark_gray}|  Утилита${reset}"
				echo -e "     -ap   ${dark_gray}|  Выбранный Вами ключ${reset}"
				echo -e "     443,80  ${dark_gray}|  Аргумент или аргументы ключа через запятую${reset}"
				echo
				echo -e "  ${yellow}Полный цикл установки${reset}"
				echo -e "     -i   ${dark_gray}|   Необходимые пакеты, Xray и сервисы XKeen${reset}"
				echo 
				echo -e "  ${yellow}Обновление${reset}"
				echo -e "     -ux   ${dark_gray}|   Xray${reset}"
				echo -e "     -uk   ${dark_gray}|   XKeen${reset}"
				echo -e "     -ugs   ${dark_gray}|   GeoSite${reset}"
				echo -e "     -ugi   ${dark_gray}|   GeoIP${reset}"
				echo 
				echo -e "  ${yellow}Включение или изменение правил обновления${reset}"
				echo -e "     -uac   ${dark_gray}|   Xray, XKeen, GeoSite, GeoIP${reset}"
				echo -e "     -uxc   ${dark_gray}|   Xray${reset}"
				echo -e "     -ukc   ${dark_gray}|   XKeen${reset}"
				echo -e "     -ugsc   ${dark_gray}|   GeoSite${reset}"
				echo -e "     -ugic   ${dark_gray}|   GeoIP${reset}"
				echo 
				echo -e "  ${yellow}Регистрация${reset}"
				echo -e "     -rx   ${dark_gray}|   Xray${reset}"
				echo -e "     -rk   ${dark_gray}|   XKeen${reset}"
				echo -e "     -ri   ${dark_gray}|   Автоматический запуск Xray средствами init.d${reset}"
				echo 
				echo -e "  ${red}Удаление${reset}  Автоматические обновления"
				echo -e "     -dac   ${dark_gray}|   Xray, XKeen, GeoSite, GeoIP${reset}"
				echo -e "     -dxc   ${dark_gray}|   Xray${reset}"
				echo -e "     -dkc   ${dark_gray}|   XKeen${reset}"
				echo -e "     -dgsc   ${dark_gray}|   GeoSite${reset}"
				echo -e "     -dgic   ${dark_gray}|   GeoIP${reset}"
				echo
				echo -e "  ${red}Удаление${reset}  Утилиты и компоненты"
				echo -e "     -dx   ${dark_gray}|   Xray${reset}"
				echo -e "     -dk   ${dark_gray}|   XKeen${reset}"
				echo -e "     -dgs   ${dark_gray}|   GeoSite${reset}"
				echo -e "     -dgi   ${dark_gray}|   GeoIP${reset}"
				echo -e "     -dс   ${dark_gray}|   Конфигурации Xray${reset}"
				echo -e "     -dt   ${dark_gray}|   Временные файлы${reset}"
				echo
				echo -e "  ${red}Удаление${reset}  Регистрации"			
				echo -e "     -drx   ${dark_gray}|    Xray${reset}"
				echo -e "     -drk   ${dark_gray}|   XKeen${reset}"
				echo
				echo -e "  ${green}Порты${reset}  Через которые будет работать клиент"		
				echo -e "     -ap   ${dark_gray}|   Добавить${reset}"
				echo -e "     -dp   ${dark_gray}|   Удалить${reset}"
				echo -e "     -cp   ${dark_gray}|   Список${reset}"
				echo
				echo -e "  ${green}Порты${reset}  Которые требуется исключить из работы клиента"		
				echo -e "     -ape   ${dark_gray}|   Добавить${reset}"
				echo -e "     -dpe   ${dark_gray}|   Удалить${reset}"
				echo -e "     -cpe   ${dark_gray}|   Список${reset}"
				echo
				echo -e "  ${green}Обновление регистрации утилит${reset}"			
				echo -e "     -rrx   ${dark_gray}|    Xray${reset}"
				echo -e "     -rrk   ${dark_gray}|   XKeen${reset}"
				echo
				echo -e "  ${green}Переустановка${reset}"		
				echo -e "     -x   ${dark_gray}|   Xray${reset}"
				echo -e "     -k   ${dark_gray}|   XKeen${reset}"
				echo -e "     -rc   ${dark_gray}|   Конфигурационные файлы Xray${reset}"
				echo
				echo -e "  ${green}Резервные копии${reset} / Создание"
				echo -e "     -xb   ${dark_gray}|   Xray${reset}"
				echo -e "     -kb   ${dark_gray}|   XKeen${reset}"
				echo -e "     -cb   ${dark_gray}|   Конфигурационные файлов Xray${reset}"
				echo
				echo -e "  ${green}Резервные копии${reset}  Восстановление последней${reset}"
				echo -e "     -xbr   ${dark_gray}|   Xray${reset}"
				echo -e "     -kbr   ${dark_gray}|   XKeen${reset}"
				echo -e "     -cbr   ${dark_gray}|   Конфигурационные файлы Xray${reset}"
				echo
				echo -e "  ${light_blue}Проверки${reset}"
				echo -e "     -tpx   ${dark_gray}|   Порты, шлюз и протокол прокси-клиента${reset}"
				echo -e "     -v   ${dark_gray}|   Версия XKeen${reset}"
				echo
				echo -e "  ${light_blue}Управление прокси-клиентом${reset}"
				echo -e "     -start   ${dark_gray}|   Запуск${reset}"
				echo -e "     -stop   ${dark_gray}|   Остановка${reset}"
				echo -e "     -restart   ${dark_gray}|   Перезапуск${reset}"
				echo -e "     -status   ${dark_gray}|   Статус работы${reset}"
				echo -e "     -auto   ${dark_gray}|   Включить  ${dark_gray}|  Отключить запуск прокси-клиента с роутером${reset}"
				echo -e "     -d   ${dark_gray}|   Установить начальное время запуска прокси-клиента с роутером${reset}"
				echo -e "     -diag   ${dark_gray}|   Выполнить диагностику${reset}"
				echo
				echo -e "  ${light_blue}Управление модулями${reset}"
				echo -e "     -modules   ${dark_gray}|   Перенос модулей для XKeen в пользовательскую директорию${reset}"
				echo
				echo -e "  ${light_blue}Автор${reset}"
				echo -e "     -ad   ${dark_gray}|   Если Вам полезна утилита, можете купить Мне кофе${reset}"
				echo -e "     -af   ${dark_gray}|    Обратная связь${reset}"
				echo
            shift
            ;;
			
        *)
            echo -e "     Неизвестный ключ: ${red}$1${reset}"
			echo -e "     Список доступных ключей: ${yellow}xkeen -h${reset}"
            shift
            ;;
			
    esac
done
