#!/bin/sh
OS=$1
PARTION_LAYOUT=$2

if [ -z $OS ]; then
	echo "Передайте все параметры: .../win_installer.sh | sh -s (win25/win22/win19/win16/win12/pass) (gpt/mbr)"
	exit
fi

########################################

OS_INSTALL=""
QEMU_BIOS=""
IP=$(curl -s -4 ifconfig.me)

########################################

BIOS=$( [ -d /sys/firmware/efi ] && echo "UEFI" || echo "LEGACY" )
if [ -z $PARTION_LAYOUT ]; then
    PARTION_LAYOUT=$( [ $BIOS = "UEFI" ] && echo "gpt" || echo "mbr" )
fi

if [ $BIOS = "UEFI" ]; then
    QEMU_BIOS=" -bios /tmp/uefi.bin"
	echo -n "Uefi downloading... "
    wget -qO- https://files.yukikras.net/iso/windows/uefi.tar.gz | tar -xz -C /tmp
	echo "OK"
fi

########################################

clear_storage() {
    local storage="$1"
    mkfs.ext4 -q -F "$storage"
    echo "CLEARED $storage"
}

if [ $OS != "pass" ]; then
	for md_device in /dev/md*; do
		if [ -b "$md_device" ]; then
			mdadm --quiet --stop "$md_device"
		fi
	done
	if [ -b /dev/nvme0n1 ]; then
		STORAGE="/dev/nvme0n1"
		clear_storage $STORAGE
		if [ -b /dev/nvme1n1 ]; then
			clear_storage "/dev/nvme1n1"
		fi
	elif [ -b /dev/nvme1n1 ]; then
		STORAGE="/dev/nvme1n1"
		clear_storage $STORAGE
		if [ -b /dev/nvme1n1 ]; then
			clear_storage "/dev/nvme1n1"
		fi
	elif [ -b /dev/sda ]; then
		STORAGE="/dev/sda"
		clear_storage $STORAGE
		if [ -b /dev/sdb ]; then
			clear_storage "/dev/sdb"
		fi
	else
		echo "Диск на сервере не найден"
		exit
	fi
else
    if [ -b /dev/nvme0n1 ]; then
        STORAGE="/dev/nvme0n1"
    elif [ -b /dev/nvme1n1 ]; then
        STORAGE="/dev/nvme1n1"
    elif [ -b /dev/sda ]; then
        STORAGE="/dev/sda"
    else
        echo "Диск на сервере не найден"
        exit
    fi
fi

########################################

if [ $OS != "pass" ]; then
	if [ $OS = "win25" ]; then
		OS_INSTALL="WinServ2025_ENG_${PARTION_LAYOUT}"
	elif [ $OS = "win22" ]; then
		OS_INSTALL="WinServ2022_ENG_${PARTION_LAYOUT}"
	elif [ $OS = "win19" ]; then
		OS_INSTALL="WinServ2019_ENG_${PARTION_LAYOUT}"
	elif [ $OS = "win16" ]; then
		OS_INSTALL="WinServ2016_ENG_${PARTION_LAYOUT}"
	elif [ $OS = "win12" ]; then
		OS_INSTALL="WinServ2012_ENG_${PARTION_LAYOUT}"
	else
		echo "Указанной ОС нет на сервере"
		exit
	fi
fi

########################################

echo -n "KVM downloading... "
wget -qO- /tmp https://files.yukikras.net/iso/windows/kvm.tar.gz | tar -xz -C /tmp
echo "OK"

if [ "$OS" != "pass" ]; then
	echo -n "ISO downloading... "
	wget -qN "https://files.yukikras.net/iso/windows/$OS_INSTALL.iso" -P "/tmp"
	echo "OK"
else
	OS_INSTALL="WinServ20XX_ENG_${PARTION_LAYOUT}"
	echo "wget -qN \"https://files.yukikras.net/iso/windows/$OS_INSTALL.iso\" -P \"/tmp\""
	echo " -cdrom /tmp/${OS_INSTALL}.iso"
fi

########################################

if [ "$OS" != "pass" ]; then
	EXEC="/tmp/qemu-system-x86_64${QEMU_BIOS} -net nic -net user,hostfwd=tcp::3389-:3389 -m 13G -localtime -enable-kvm -smp 2 -usbdevice tablet -k en-us -cdrom /tmp/${OS_INSTALL}.iso -hda ${STORAGE} -vnc :1 -boot d"
else
	EXEC="/tmp/qemu-system-x86_64${QEMU_BIOS} -net nic -net user,hostfwd=tcp::3389-:3389 -m 13G -localtime -enable-kvm -smp 2 -usbdevice tablet -k en-us -hda ${STORAGE} -vnc :1 -boot d"
fi
echo "QEMU running: ${EXEC}"
echo "VNC is available at ${IP}:1"
eval "$EXEC"

reboot