#!/data/data/com.termux/files/usr/bin/bash

GREEN="\033[1;32m"
RED="\033[1;31m"
YELLOW="\033[1;33m"
BLUE="\033[1;34m"
CYAN="\033[1;36m"
RESET="\033[0m"

MASTER_KEY=$(echo "VkxfSU5URVJOQUxfMjAyNg==" | base64 -d)
LICENSE_FILE="$HOME/.vl_license"

APK="/storage/emulated/0/Download/varna_tv_1.1.1.apk"
PKG="bg.varnalan.tv"

# ================= UI =================

get_width() {
  COLS=$(stty size 2>/dev/null | awk '{print $2}')
  [ -z "$COLS" ] && COLS=80
  echo $COLS
}

draw_line() {
  WIDTH=$(get_width)
  printf '%*s\n' "$WIDTH" '' | tr ' ' '='
}

center_text() {
  WIDTH=$(get_width)
  TEXT="$1"
  PADDING=$(( (WIDTH - ${#TEXT}) / 2 ))
  printf "%*s%s\n" "$PADDING" "" "$TEXT"
}

header() {
  clear
  echo -e "${GREEN}"
  draw_line
  center_text "TVLink"
  center_text "Deployment System"
  draw_line
  echo -e "${RESET}"
  echo ""
}

# ================= MACHINE ID =================

get_machine_id() {
  ANDROID_ID=$(settings get secure android_id 2>/dev/null)
  BUILD=$(getprop ro.build.fingerprint)
  echo "$(echo -n "$ANDROID_ID$BUILD" | sha256sum | cut -c1-10 | tr 'a-z' 'A-Z')"
}

MACHINE_ID=$(get_machine_id)

# ================= LICENSE =================

check_license() {

  [ ! -f "$LICENSE_FILE" ] && return 1
  source "$LICENSE_FILE"

  NOW=$(date +%s)

  # ===== ANTI ROLLBACK PROTECTION =====
  if [ ! -z "$LAST_RUN" ]; then
    if [ "$NOW" -lt "$LAST_RUN" ]; then
      echo -e "${RED}⛔ Засечена манипулация на системната дата!${RESET}"
      echo "Лицензът е изтрит."
      rm -f "$LICENSE_FILE"
      exit 1
    fi
  fi
  # ====================================

  TODAY=$(date +"%Y-%m-%d")
  [[ "$TODAY" > "$EXPIRE" ]] && return 2

  RAW="${TEAM}${MACHINE_ID}${EXPIRE}${MASTER_KEY}"
  HASH=$(echo -n "$RAW" | sha256sum | awk '{print $1}' | tr 'a-z' 'A-Z')
  EXPECTED="VL-$(echo $HASH | cut -c1-4)-$(echo $HASH | cut -c5-8)-$(echo $HASH | cut -c9-12)"

  [ "$CODE" != "$EXPECTED" ] && return 1

  DAYS_LEFT=$(( ( $(date -d "$EXPIRE" +%s) - NOW ) / 86400 ))

  # Обновяване на LAST_RUN
  echo "TEAM=$TEAM" > "$LICENSE_FILE"
  echo "EXPIRE=$EXPIRE" >> "$LICENSE_FILE"
  echo "CODE=$CODE" >> "$LICENSE_FILE"
  echo "LAST_RUN=$NOW" >> "$LICENSE_FILE"

  return 0
}

activate_license() {
  while true; do
    header
    echo -e "${YELLOW}🔐 Активиране на лиценз${RESET}"
    echo ""
    echo "🆔 Machine ID: $MACHINE_ID"
    echo "👥 Екип: $TEAM"
    echo ""
    read -p "Въведете лицензен код: " CODE

    VALID=0
    for M in {1..12}; do
      EXPIRE=$(date -d "+$M months" +"%Y-%m-%d")
      RAW="${TEAM}${MACHINE_ID}${EXPIRE}${MASTER_KEY}"
      HASH=$(echo -n "$RAW" | sha256sum | awk '{print $1}' | tr 'a-z' 'A-Z')
      EXPECTED="VL-$(echo $HASH | cut -c1-4)-$(echo $HASH | cut -c5-8)-$(echo $HASH | cut -c9-12)"
      [ "$CODE" == "$EXPECTED" ] && VALID=1 && break
    done

    if [ $VALID -eq 1 ]; then
      NOW=$(date +%s)
      echo "TEAM=$TEAM" > "$LICENSE_FILE"
      echo "EXPIRE=$EXPIRE" >> "$LICENSE_FILE"
      echo "CODE=$CODE" >> "$LICENSE_FILE"
      echo "LAST_RUN=$NOW" >> "$LICENSE_FILE"

      echo -e "${GREEN}✅ Лиценз активиран до $EXPIRE${RESET}"
      sleep 2
      break
    else
      echo -e "${RED}❌ Невалиден лиценз.${RESET}"
      sleep 2
    fi
  done
}

# ================= ADMIN =================

admin_mode() {

  read -s -p "Админ парола: " PASS
  echo ""

  if [ "$PASS" != "Eagames004057214@" ]; then
    echo "❌ Грешна парола."
    sleep 2
    return
  fi

  while true; do
    clear
    echo "=============================="
    echo "         ADMIN PANEL"
    echo "=============================="
    echo ""
    echo "1) Информация за лиценз"
    echo "2) Удължи лиценз"
    echo "3) Диагностика ADB"
    echo "4) Нулирай лиценз"
    echo "5) Деинсталирай VarnaLan TV"
    echo "6) Назад"
    echo ""
    read -p "Избор: " A

    case "$A" in
      1)
        source "$LICENSE_FILE"
        echo ""
        echo "Екип: $TEAM"
        echo "Machine ID: $MACHINE_ID"
        echo "Валиден до: $EXPIRE"
        echo "Код: $CODE"
        read -p "ENTER..." D
        ;;
      2)
        activate_license
        ;;
      3)
        echo ""
        adb devices
        read -p "ENTER..." D
        ;;
      4)
        rm -f "$LICENSE_FILE"
        echo "Лиценз изтрит."
        sleep 2
        ;;
      5)
        adb uninstall "$PKG"
        read -p "ENTER..." D
        ;;
      6)
        break
        ;;
    esac
  done
}

# ================= TEAM =================

header
echo "Изберете екип:"
echo "1) Тополи"
echo "2) Виница"
echo "3) Приселци"
echo "4) Център"
echo "5) Офис"

while true; do
  read -p "Избор (1-5): " T
  case "$T" in
    1) TEAM="Тополи"; break;;
    2) TEAM="Виница"; break;;
    3) TEAM="Приселци"; break;;
    4) TEAM="Център"; break;;
    5) TEAM="Офис"; break;;
    *) echo "Невалиден избор";;
  esac
done

while true; do
  check_license
  [ $? -eq 0 ] && break
  activate_license
done

# ================= MAIN LOOP =================

while true; do
  header
  echo -e "👥 Екип: ${CYAN}$TEAM${RESET}"
  echo -e "🆔 Machine ID: ${CYAN}$MACHINE_ID${RESET}"
  echo -e "📅 Лиценз до: ${CYAN}$EXPIRE${RESET} (${DAYS_LEFT} дни)"
  draw_line
  echo ""
  echo "1) 📡 Свържи се с телевизор"
  echo "2) 📦 Инсталирай приложение"
  echo "3) 🚪 Изход"
  echo ""
  read -p "Избор: " C

  case "$C" in

    77)
      admin_mode
      ;;

    1)
      echo ""
      read -p "📡 Въведи IP адрес на телевизора: " IP
      echo ""
      echo "⏳ Изчакване за разрешение от телевизора (30 секунди)..."

      adb disconnect >/dev/null 2>&1
      adb connect $IP:5555 >/dev/null 2>&1

      CONNECTED=0
      for i in {1..30}; do
        STATUS=$(adb devices | grep "$IP" | awk '{print $2}')
        if [ "$STATUS" == "device" ]; then
          CONNECTED=1
          break
        fi
        echo -ne "⏳ $i сек\r"
        sleep 1
      done
      echo ""

      if [ $CONNECTED -eq 1 ]; then
        echo -e "${GREEN}✅ Успешно свързване.${RESET}"
      else
        echo -e "${RED}❌ Неуспешна връзка.${RESET}"
      fi

      read -p "Натиснете ENTER за връщане в главното меню..." D
      ;;

    2)
      DEVICE=$(adb devices | grep device | grep -v List | awk '{print $1}')
      if [ -z "$DEVICE" ]; then
        echo "❌ Няма свързано устройство."
        sleep 2
        continue
      fi

      echo ""
      echo -e "${BLUE}📊 HEALTH CHECK${RESET}"
      draw_line

      MODEL=$(adb shell getprop ro.product.model | tr -d '\r')
      ANDROID=$(adb shell getprop ro.build.version.release | tr -d '\r')
      APP_VERSION=$(adb shell dumpsys package "$PKG" 2>/dev/null | grep versionName | awk -F= '{print $2}')

      FREE_KB=$(adb shell df /data | tail -1 | awk '{print $4}')
      FREE_MB=$((FREE_KB / 1024))

      FILE_SIZE_BYTES=$(stat -c%s "$APK")
      FILE_SIZE_MB=$((FILE_SIZE_BYTES / 1024 / 1024))

      echo "📺 Устройство: $MODEL"
      echo "🤖 Android версия: $ANDROID"

      if [ -z "$APP_VERSION" ]; then
        echo "📦 VarnaLan TV: ❌ Не е инсталирано"
        FIRST_INSTALL=1
      else
        echo "📦 VarnaLan TV версия: $APP_VERSION"
        FIRST_INSTALL=0
      fi

      echo "💾 Свободна памет: ${FREE_MB} MB"
      echo "📦 Размер на APK: ${FILE_SIZE_MB} MB"

      read -p "❓ Желаете ли да инсталирате приложение VarnaLan TV NEW? (y/n): " CONFIRM
      [[ "$CONFIRM" != "y" ]] && continue

      echo ""
      echo "📤 Качване на файла..."

      adb shell rm -f /data/local/tmp/app.apk >/dev/null 2>&1
      START_TIME=$(date +%s)

      adb push "$APK" /data/local/tmp/app.apk >/dev/null 2>&1 &
      PID=$!

      while kill -0 $PID 2>/dev/null; do
        CURRENT=$(adb shell stat -c%s /data/local/tmp/app.apk 2>/dev/null)
        if [ ! -z "$CURRENT" ]; then
          PERCENT=$((CURRENT * 100 / FILE_SIZE_BYTES))
          MB_DONE=$((CURRENT / 1024 / 1024))
          [ $PERCENT -gt 100 ] && PERCENT=100
          echo -ne "📤 Качване: $PERCENT% (${MB_DONE}/${FILE_SIZE_MB} MB)\r"
        fi
        sleep 0.5
      done

      wait $PID
      echo -ne "📤 Качване: 100% (${FILE_SIZE_MB}/${FILE_SIZE_MB} MB)\n"

      echo "📦 Инсталиране..."
      adb shell pm install -r /data/local/tmp/app.apk >/dev/null 2>&1

      echo -e "${GREEN}✅ Инсталацията завърши успешно.${RESET}"

      if [ $FIRST_INSTALL -eq 1 ]; then
        echo "🚀 Стартиране на приложението..."
        adb shell monkey -p "$PKG" -c android.intent.category.LAUNCHER 1 >/dev/null 2>&1
      fi

      END_TIME=$(date +%s)
      echo "⏱ Време: $((END_TIME - START_TIME)) секунди"

      read -p "Натиснете ENTER за връщане в главното меню..." D
      ;;

    3)
      exit 0
      ;;

  esac
done
