#!/bin/bash
# ==============================================================================
#  DIJITALALAN LISANS YONETIM SISTEMI - ENTERPRISE v6.3
#  Copyright (c) 2026 Dijital Alan. All rights reserved.
# ==============================================================================

# Kurumsal Renk Paleti
export NC='\033[0m'
export BOLD='\033[1m'
export WHITE='\033[97m'
export GRAY='\033[38;5;244m'
export BLUE='\033[38;5;25m'
export CYAN='\033[36m'
export RED='\033[31m'
export GREEN='\033[32m'

# Whiptail Kurumsal Tema (Net & Keskin)
export NEWT_COLORS='
  root=,black
  window=,black
  border=white,black
  shadow=black,black
  button=white,blue
  actbutton=black,white
  title=white,black
  msgbox=white,black
  textbox=white,black
  listbox=white,black
  actlistbox=black,white
  checkbox=white,black
'

PRE_URL="https://mirror.resellercenter.ir/pre.sh"

# ------------------------------------------------------------------------------
# Görsel Fonksiyonlar
# ------------------------------------------------------------------------------

draw_header() {
    clear
    echo -e "${WHITE}${BOLD}------------------------------------------------------------------${NC}"
    echo -e "${WHITE}${BOLD}  DIJITAL ALAN LISANS YONETIM PANELI - ENTERPRISE v6.3            ${NC}"
    echo -e "${GRAY}  $(date '+%d.%m.%Y %H:%M:%S') | Sunucu: $(hostname) ${NC}"
    echo -e "${WHITE}${BOLD}------------------------------------------------------------------${NC}"
}

ui_info() { echo -e "${BLUE}[BILGI]${NC} $1"; }
ui_done() { echo -e "${GREEN}[OK]   ${NC} $1"; }
ui_fail() { echo -e "${RED}[HATA ]${NC} $1"; }

# ------------------------------------------------------------------------------
# Kapsamlı Sistem Analiz Fonksiyonu
# ------------------------------------------------------------------------------

show_system_report() {
    draw_header
    ui_info "Sistem verileri analiz ediliyor, lütfen bekleyin..."

    local OS_NAME=$(grep -P '^PRETTY_NAME' /etc/os-release | cut -d'"' -f2)
    local KERNEL=$(uname -sr)
    local UPTIME=$(uptime -p | sed 's/up //')
    local CPU_MODEL=$(grep -m1 'model name' /proc/cpuinfo | awk -F: '{print $2}' | xargs)
    local CPU_CORE=$(grep -c ^processor /proc/cpuinfo)
    local RAM_TOTAL=$(free -h | awk '/Mem:/ {print $2}')
    local RAM_USAGE=$(free -h | awk '/Mem:/ {print $3}')
    local DISK_USAGE=$(df -h / | awk 'NR==2 {print $5 " (Boş: " $4 ")"}')
    local LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}' | xargs)
    local IP_PUB=$(curl -s --connect-timeout 5 https://ifconfig.me || echo "Tespit Edilemedi")
    local IP_LOC=$(hostname -I | awk '{print $1}')

    local REPORT="[ DONANIM BILGILERI ]
--------------------------------------------------
Islemci     : $CPU_MODEL
Cekirdek    : $CPU_CORE Core
Bellek      : Toplam $RAM_TOTAL (Kullanilan: $RAM_USAGE)
Disk (/)    : Doluluk $DISK_USAGE

[ YAZILIM & ISLETIM SISTEMI ]
--------------------------------------------------
OS          : $OS_NAME
Kernel      : $KERNEL
Calisma     : $UPTIME saattir aktif
Yuk (Load)  : $LOAD_AVG

[ AG BILGILERI ]
--------------------------------------------------
Yerel IP    : $IP_LOC
Dis IP      : $IP_PUB
--------------------------------------------------"

    whiptail --title "KAPSAMLI SISTEM RAPORU" --msgbox "$REPORT" 23 65
}

# ------------------------------------------------------------------------------
# Lisans Satın Alma Fonksiyonu
# ------------------------------------------------------------------------------

buy_license() {
    local STORE_URL="https://dijitalalan.com.tr/sunucu-lisanslari/"
    whiptail --title "LISANS SATIN ALMA" \
             --msgbox "Yeni bir lisans satın almak veya mevcut lisansınızı yenilemek için aşağıdaki adresi ziyaret edebilirsiniz:\n\n$STORE_URL\n\n(Linki kopyalamak için farenizle seçmeniz yeterlidir.)" 12 65
}

# ------------------------------------------------------------------------------
# Kurulum Motoru
# ------------------------------------------------------------------------------

execute_engine() {
    local NAME=$1; local P_CODE=$2; local L_CODE=$3
    
    whiptail --title "KURULUM TEYIDI" \
             --yes-button "Devam Et" \
             --no-button "Vazgec" \
             --yesno "$NAME lisans kurulumu başlatılacak. Onaylıyor musunuz?" 8 60 || return 1

    draw_header
    ui_info "$NAME sistem dosyaları doğrulanıyor..."
    
    bash <(curl -sL "$PRE_URL") "$P_CODE" && eval "$L_CODE"
    
    EXIT_CODE=$?

    if [[ $EXIT_CODE -eq 0 ]]; then
        ui_done "$NAME başarıyla kuruldu."
        whiptail --title "BAŞARILI" --msgbox "$NAME kurulumu başarıyla tamamlandı." 8 50
    else
        ui_fail "$NAME kurulumunda hata kodu: $EXIT_CODE"
        whiptail --title "HATA" --msgbox "Kurulum tamamlanamadı. Lütfen ağ bağlantınızı kontrol edin." 8 50
    fi
}

# ------------------------------------------------------------------------------
# Menü Navigasyonu
# ------------------------------------------------------------------------------

license_catalog() {
    while true; do
        SEL=$(whiptail --title "URUN KATALOGU" \
            --cancel-button "Geri" \
            --menu "Kurulacak yazılımı seçin:" 20 75 11 \
            "1" "cPanel / WHM (Cloud & Dedicated)" \
            "2" "LiteSpeed Web Server" \
            "3" "CloudLinux OS Management" \
            "4" "Imunify360 Security" \
            "5" "WP Squared (WP2)" \
            "6" "Plesk Panel (All Editions)" \
            "7" "DirectAdmin Control Panel" \
            "8" "Virtualizor (VPS Panel)" \
            "9" "Softaculous Auto Installer" \
            "10" "Sitepad Website Builder" \
            "11" "JetBackup Manager" \
            "0" "ANA MENU" 3>&1 1>&2 2>&3)

        [[ $? -ne 0 || "$SEL" == "0" ]] && break

        case "$SEL" in
            "1")  execute_engine "cPanel" "cPanel" "RcLicenseCP" ;;
            "2")  execute_engine "LiteSpeed" "liteSpeed" "RcLicenseLSWS" ;;
            "3")  execute_engine "CloudLinux" "CloudLinux" "RcLicenseCLN" ;;
            "4")  execute_engine "Imunify360" "Imunify360" "RcLicenseImunify360" ;;
            "5")  execute_engine "WP Squared" "wp2" "RcLicenseWP" ;;
            "6")  execute_engine "Plesk" "Plesk" "RcLicensePlesk" ;;
            "7")  execute_engine "DirectAdmin" "DirectAdmin" "RcLicenseDA" ;;
            "8")  execute_engine "Virtualizor" "Virtualizor" "RcLicenseVirtualizor" ;;
            "9")  execute_engine "Softaculous" "Softaculous" "RcLicenseSoftaculous" ;;
            "10") execute_engine "Sitepad" "Sitepad" "RcLicenseSitepad" ;;
            "11") execute_engine "JetBackup" "JetBackup" "RcLicenseJetBackup" ;;
        esac
    done
}

extra_tools() {
    SEL=$(whiptail --title "YARDIMCI SERVISLER" \
        --menu "Diğer kurulumlar ve eklentiler:" 18 70 8 \
        "1" "CPGuard Security" \
        "2" "CXS Exploit Scanner" \
        "3" "WHMReseller Manager" \
        "4" "WHMSonic Shoutcast Panel" \
        "5" "DAReseller (DirectAdmin)" \
        "6" "OSM (On-Screen Manager)" \
        "0" "Geri" 3>&1 1>&2 2>&3)

    case "$SEL" in
        "1") execute_engine "CPGuard" "CPGuard" "RcLicenseCPGuard" ;;
        "2") execute_engine "CXS" "CXS" "RcLicenseCXS" ;;
        "3") execute_engine "WHMReseller" "WHMReseller" "RcLicenseWHMReseller" ;;
        "4") execute_engine "WHMSonic" "WHMSonic" "RcLicenseWHMSonic" ;;
        "5") execute_engine "DAReseller" "DAReseller" "RcLicenseDAReseller" ;;
        "6") execute_engine "OSM" "OSM" "RcLicenseOSM" ;;
    esac
}

# ------------------------------------------------------------------------------
# Ana Kontrol Merkezi
# ------------------------------------------------------------------------------

main_hub() {
    while true; do
        draw_header
        CHOICE=$(whiptail --title "DIJITAL ALAN - ANA MENU" \
            --cancel-button "Cıkış" \
            --menu "Yapmak istediğiniz işlemi seçin:" 16 65 6 \
            "1" "Lisans Kurulum Kataloğu" \
            "2" "Yardımcı Servisler & Reseller" \
            "3" "Lisans Onarım (Repair/Fix)" \
            "4" "Sistem Bilgilerini Görüntüle" \
            "5" "🛒 LISANS SATIN AL (Web Sitesi)" \
            "6" "GUVENLI CIKIS" 3>&1 1>&2 2>&3)

        if [[ $? -ne 0 || "$CHOICE" == "6" ]]; then
            clear
            echo -e "${WHITE}${BOLD}Dijital Alan - Yönetim oturumu güvenli bir şekilde kapatıldı.${NC}"
            exit 0
        fi

        case "$CHOICE" in
            "1") license_catalog ;;
            "2") extra_tools ;;
            "3") 
                draw_header
                ui_info "Onarım işlemleri yürütülüyor..."
                RcLicenseCP -fix && RcLicenseCP -fleetssl
                ui_done "Sistem onarımı ve FleetSSL güncellemesi tamamlandı."
                sleep 2
                ;;
            "4") show_system_report ;;
            "5") buy_license ;;
        esac
    done
}

# ------------------------------------------------------------------------------
# Başlatıcı
# ------------------------------------------------------------------------------

if [[ "$EUID" -ne 0 ]]; then 
    echo -e "${RED}[HATA]${NC} Bu panelin çalışması için root yetkisi gereklidir."
    exit 1
fi

# Bağımlılık Kontrolü
command -v whiptail &>/dev/null || yum install -y newt || apt install -y whiptail -y &>/dev/null

main_hub