@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
title Assistance a distance - ODI
color 0A

echo.
echo ========================================================
echo    Assistance a distance - ODI
echo ========================================================
echo.
echo Recherche de la derniere version disponible...
echo.

REM ============================================================
REM  1) Recuperer les infos de la derniere version (API GitHub)
REM ============================================================
set "INFO_FILE=%TEMP%\rustdesk_info.txt"
if exist "%INFO_FILE%" del "%INFO_FILE%" >nul 2>&1

powershell -NoProfile -Command "try { $r = Invoke-RestMethod -Uri 'https://api.github.com/repos/rustdesk/rustdesk/releases/latest' -TimeoutSec 20; $a = $r.assets | Where-Object { $_.name -like '*x86_64.exe' -and $_.name -notlike '*sciter*' } | Select-Object -First 1; if ($a) { Write-Output ($r.tag_name + '|' + $a.name + '|' + $a.browser_download_url) } } catch { }" > "%INFO_FILE%" 2>nul

set "RUSTDESK_INFO="
set "VERSION="
set "FILENAME="
set "DOWNLOAD_URL="

if exist "%INFO_FILE%" set /p RUSTDESK_INFO=<"%INFO_FILE%"
del "%INFO_FILE%" >nul 2>&1

for /f "tokens=1,2,3 delims=|" %%a in ("%RUSTDESK_INFO%") do (
    set "VERSION=%%a"
    set "FILENAME=%%b"
    set "DOWNLOAD_URL=%%c"
)

REM --- Sans reponse exploitable de GitHub, on ne continue pas ---
if not defined FILENAME goto :erreur_reseau
if not defined DOWNLOAD_URL goto :erreur_reseau

echo Version detectee : !VERSION!
echo.

set "DOCS_DIR=%USERPROFILE%\Documents"
set "RUSTDESK_FILE=!DOCS_DIR!\!FILENAME!"

REM --- Version deja presente : on la reutilise telle quelle ---
if exist "!RUSTDESK_FILE!" (
    echo Cette version est deja presente dans vos Documents.
    echo Utilisation de la copie existante...
    echo.
    goto :configurer
)

REM ============================================================
REM  2) Telechargement
REM ============================================================
set "TEMP_DIR=%TEMP%\RustDeskSetup"
if not exist "!TEMP_DIR!" mkdir "!TEMP_DIR!"

echo [1/4] Telechargement en cours, veuillez patienter...
curl -L --fail --retry 2 --connect-timeout 20 -o "!TEMP_DIR!\!FILENAME!" "!DOWNLOAD_URL!"
if errorlevel 1 goto :erreur_telechargement
if not exist "!TEMP_DIR!\!FILENAME!" goto :erreur_telechargement

REM --- Controle de plausibilite : un telechargement tronque ou une
REM     page d'erreur HTML pesent bien moins que l'executable reel ---
set "DL_SIZE=0"
for %%A in ("!TEMP_DIR!\!FILENAME!") do set "DL_SIZE=%%~zA"
if !DL_SIZE! LSS 1000000 goto :erreur_telechargement

echo [2/4] Sauvegarde dans vos Documents...
copy /y "!TEMP_DIR!\!FILENAME!" "!RUSTDESK_FILE!" >nul
if not exist "!RUSTDESK_FILE!" goto :erreur_copie
del "!TEMP_DIR!\!FILENAME!" >nul 2>&1

REM --- Menage des versions precedentes (uniquement celles deposees
REM     par ce script, une fois la nouvelle copie bien en place) ---
for %%F in ("!DOCS_DIR!\rustdesk-*.exe") do (
    if /I not "%%~nxF"=="!FILENAME!" (
        echo       Suppression de l'ancienne version : %%~nxF
        del "%%F" >nul 2>&1
    )
)

:configurer
REM ============================================================
REM  3) Configuration du serveur ODI
REM ============================================================
echo [3/4] Configuration du serveur ODI...
set "CONFIG_DIR=%APPDATA%\RustDesk\config"
if not exist "!CONFIG_DIR!" mkdir "!CONFIG_DIR!"

(
echo rendezvous_server = 'rustdesk.odi.i234.me:21116'
echo nat_type = 1
echo serial = 0
echo.
echo [options]
echo relay-server = 'rustdesk.odi.i234.me:21117'
echo api-server = 'http://rustdesk.odi.i234.me:21114'
echo key = 'J2QiAk3mDJaO7kduQsse00+2gQI8ytxiI57RRuYdFZM='
echo custom-rendezvous-server = 'rustdesk.odi.i234.me:21116'
) > "!CONFIG_DIR!\RustDesk2.toml"

REM ============================================================
REM  4) Raccourci bureau + lancement
REM ============================================================
echo [4/4] Creation du raccourci sur le bureau...
set "SHORTCUT=%USERPROFILE%\Desktop\Assistance a distance ODI.lnk"
powershell -NoProfile -Command "try { $WS = New-Object -ComObject WScript.Shell; $SC = $WS.CreateShortcut('!SHORTCUT!'); $SC.TargetPath = '!RUSTDESK_FILE!'; $SC.WorkingDirectory = '!DOCS_DIR!'; $SC.Description = 'Assistance a distance ODI'; $SC.Save() } catch { }" >nul 2>&1

start "" "!RUSTDESK_FILE!"

echo.
echo ========================================================
echo    Tout est pret ^^!
echo ========================================================
echo.
echo La fenetre d'assistance va s'ouvrir dans quelques secondes.
echo Communiquez l'ID et le mot de passe affiches a ODI.
echo.
echo Un raccourci "Assistance a distance ODI" a ete place
echo sur votre bureau pour les prochaines fois.
echo.
echo Vous pouvez fermer cette fenetre.
echo.
pause
exit /b 0

REM ============================================================
REM  Messages d'erreur
REM ============================================================
:erreur_reseau
echo.
echo ---------------------------------------------------------
echo  Impossible de contacter le serveur de telechargement.
echo ---------------------------------------------------------
echo.
echo Verifiez votre connexion Internet, puis relancez ce fichier.
echo Si le probleme persiste, appelez ODI au 0475/978.678.
echo.
pause
exit /b 1

:erreur_telechargement
echo.
echo ---------------------------------------------------------
echo  Le telechargement n'a pas abouti correctement.
echo ---------------------------------------------------------
echo.
echo Verifiez votre connexion Internet, puis relancez ce fichier.
echo Si le probleme persiste, appelez ODI au 0475/978.678.
echo.
pause
exit /b 1

:erreur_copie
echo.
echo ---------------------------------------------------------
echo  Impossible d'enregistrer le fichier dans vos Documents.
echo ---------------------------------------------------------
echo.
echo Un antivirus bloque peut-etre l'operation.
echo Appelez ODI au 0475/978.678, je vous guiderai.
echo.
pause
exit /b 1
