
@echo off
setlocal enabledelayedexpansion

:: Check administrator rights
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo ========================================
    echo   ERROR: Administrator rights required
    echo ========================================
    echo.
    echo Please run this script as administrator
    pause
    exit /b 1
)

:: Settings
set "HOSTS_FILE=%WINDIR%\System32\drivers\etc\hosts"
set "BACKUP_FILE=%WINDIR%\System32\drivers\etc\hosts.back"

:: List of entries to add (IP + domain)
set "ENTRIES[0]=127.0.0.1       localhost"
set "ENTRIES[1]=::1             localhost"
set "ENTRIES[2]=0.0.0.0         example.com"
set "ENTRIES[3]=0.0.0.0         ads.example.com"
set "ENTRIES[4]=0.0.0.0         tracker.example.com"
set "ENTRIES[5]=0.0.0.0         doubleclick.net"
set "ENTRIES[6]=192.168.10.36   vault.altsoft.pro"
set "ENTRIES[7]=192.168.10.45   1cserver.altsoft.pro"
set "ENTRIES[8]=192.168.10.25   nexus.altsoft.pro"
set "ENTRIES[9]=192.168.10.14   registry.altsoft.pro"
set "ENTRIES[10]=192.168.10.32  portainer.altsoft.pro"
set "ENTRIES[11]=192.168.10.21  repos.altsoft.pro"
set "ENTRIES[12]=192.168.10.23  demo-bus4you.ru"
set "ENTRIES[13]=192.168.10.25  corvus-int.altsoft.pro"
set "ENTRIES[14]=192.168.10.26  rust.altsoft.pro"
:: Number of entries
set "ENTRY_COUNT=15"
set /a "LAST_INDEX=ENTRY_COUNT-1"

echo ========================================
echo   Hosts File Update
echo ========================================
echo.
echo Checking and adding missing entries...

:: Step 1: Create backup
echo [1/3] Creating backup...
if exist "%BACKUP_FILE%" del /q /f "%BACKUP_FILE%" >nul 2>&1
copy /y "%HOSTS_FILE%" "%BACKUP_FILE%" >nul 2>&1
if %errorlevel% neq 0 (
    echo [ERROR] Failed to create backup!
    pause
    exit /b 1
)
echo [OK] Backup created: %BACKUP_FILE%

:: Step 2: Add missing entries
echo.
echo [2/3] Adding missing entries...

set "ADDED_COUNT=0"
set "SKIPPED_COUNT=0"

:: Loop through all entries
for /l %%i in (0,1,%LAST_INDEX%) do (
    set "entry=!ENTRIES[%%i]!"
    
    :: Extract domain from entry (second word)
    for /f "tokens=2" %%d in ("!entry!") do set "domain=%%d"
    
    :: Check if domain already exists in hosts file
    findstr /i /c:"!domain!" "%HOSTS_FILE%" >nul 2>&1
    
    if !errorlevel! equ 0 (
        set /a SKIPPED_COUNT+=1
        echo [SKIPPED] !domain! - already exists
    ) else (
        :: Add entry to hosts file
        echo !entry! >> "%HOSTS_FILE%"
        set /a ADDED_COUNT+=1
        echo [ADDED] !entry!
    )
)

:: Step 3: Clear DNS cache
echo.
echo [3/3] Clearing DNS cache...
ipconfig /flushdns >nul 2>&1
if %errorlevel% neq 0 (
    echo [WARNING] Failed to clear DNS cache
) else (
    echo [OK] DNS cache cleared
)

:: Summary
echo.
echo ========================================
echo   COMPLETE!
echo ========================================
echo.
echo Statistics:
echo   - Added: %ADDED_COUNT%
echo   - Skipped: %SKIPPED_COUNT%
echo.
echo Backup: %BACKUP_FILE%
echo.
pause
exit /b 0
