#!/bin/bash

set -u

WINBOX_VERSION="3.43"
WINBOX_URL="https://download.mikrotik.com/routeros/winbox/${WINBOX_VERSION}/winbox64.exe"

INSTALL_DIR="$HOME/.local/share/MikroTik/Winbox3"
WINBOX_EXE="$INSTALL_DIR/winbox.exe"
WINBOX_SCRIPT="$INSTALL_DIR/winbox3.sh"

echo "Installing MikroTik WinBox ${WINBOX_VERSION}..."

# Проверяем Wine
if ! command -v wine >/dev/null 2>&1; then
    echo "Error: Wine is not installed."
    echo
    echo "Install Wine first:"
    echo "  openSUSE: sudo zypper install wine"
    echo "  Debian:   sudo apt install wine"
    exit 1
fi

# Проверяем wget/curl
if command -v wget >/dev/null 2>&1; then
    DOWNLOAD_CMD="wget"
elif command -v curl >/dev/null 2>&1; then
    DOWNLOAD_CMD="curl"
else
    echo "Error: neither wget nor curl is installed."
    exit 1
fi

# Создаём каталог
mkdir -p "$INSTALL_DIR" || {
    echo "Error: cannot create $INSTALL_DIR"
    exit 1
}

# Временный файл
TMP_FILE=$(mktemp) || {
    echo "Error: cannot create temporary file."
    exit 1
}

# Удаляем временный файл при завершении
trap 'rm -f "$TMP_FILE"' EXIT

echo "Downloading:"
echo "$WINBOX_URL"
echo

# Скачиваем
if [ "$DOWNLOAD_CMD" = "wget" ]; then
    if ! wget -O "$TMP_FILE" "$WINBOX_URL"; then
        echo "Error: failed to download WinBox."
        exit 1
    fi
else
    if ! curl -L --fail --show-error -o "$TMP_FILE" "$WINBOX_URL"; then
        echo "Error: failed to download WinBox."
        exit 1
    fi
fi

# Проверяем, что файл действительно существует и не пустой
if [ ! -s "$TMP_FILE" ]; then
    echo "Error: downloaded file is empty."
    exit 1
fi

# Перемещаем скачанный файл на место
if ! mv -f "$TMP_FILE" "$WINBOX_EXE"; then
    echo "Error: cannot install WinBox to:"
    echo "$WINBOX_EXE"
    exit 1
fi

chmod +x "$WINBOX_EXE"

# Создаём скрипт запуска WinBox
cat > "$WINBOX_SCRIPT" <<'EOF'
#!/bin/bash

export FREETYPE_PROPERTIES="truetype:interpreter-version=35"

exec wine "$HOME/.local/share/MikroTik/Winbox3/winbox.exe" "$@"
EOF

chmod +x "$WINBOX_SCRIPT"

echo
echo "WinBox installed successfully:"
echo "  $WINBOX_EXE"
echo

# Запускаем установленный WinBox напрямую.
# ВАЖНО: здесь больше нет вызова winbox3-launcher.
exec "$WINBOX_SCRIPT" "$@"
