@echo off
REM ============================================================
REM  Miss You Live Messenger - configurador automatico
REM
REM  Hace dos cosas:
REM    1. Apunta tu Messenger a nuestro servidor
REM    2. Instala Flash Player, necesario para ver los guinos
REM
REM  Doble clic y listo. Pedira permiso de administrador.
REM ============================================================

net session >nul 2>&1
if %errorLevel% neq 0 (
    echo Pidiendo permiso de administrador...
    powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
    exit /b
)

setlocal enabledelayedexpansion
set SERVIDOR=messenger.gelionzcode.com
set BASE=https://messenger.gelionzcode.com/archivos
set FLASH_EXE=my-flashplayer-32.0.0.371.exe
set FLASH_SHA=EE87688F3C9B37B5AE28847F2B856C5EDB49715533AB48F42A55E231532CA6E1
set HECHOS=0

echo.
echo  ============================================
echo    Miss You Live Messenger
echo  ============================================
echo.
echo   Servidor: %SERVIDOR%
echo.
echo  --------------------------------------------
echo   Paso 1 de 2: configurando tu Messenger
echo  --------------------------------------------

call :configurar "%ProgramFiles(x86)%\MSN Messenger\msnmsgr.exe-escargot.ini"
call :configurar "%ProgramFiles%\MSN Messenger\msnmsgr.exe-escargot.ini"
call :configurar "%ProgramFiles(x86)%\MSN Messenger\msmsgs.exe-escargot.ini"
call :configurar "%ProgramFiles(x86)%\Windows Live\Messenger\msnmsgr.exe-escargot.ini"
call :configurar "%ProgramFiles%\Windows Live\Messenger\msnmsgr.exe-escargot.ini"
call :configurar "%ProgramFiles(x86)%\Windows Live\Contacts\wlcomm.exe-escargot.ini"
call :configurar "%ProgramFiles%\Windows Live\Contacts\wlcomm.exe-escargot.ini"

if %HECHOS%==0 (
    echo.
    echo   [!] No encontre ningun Messenger instalado.
    echo       Instala primero MSN Messenger 7.5 desde la web
    echo       y vuelve a ejecutar este archivo.
    echo.
    pause
    exit /b
)

echo.
echo  --------------------------------------------
echo   Paso 2 de 2: Flash Player ^(para los guinos^)
echo  --------------------------------------------
echo.

REM --- ¿Ya esta instalado? ---
set FLASH_OK=0
if exist "%SystemRoot%\SysWOW64\Macromed\Flash\Flash*.ocx" set FLASH_OK=1
if exist "%SystemRoot%\System32\Macromed\Flash\Flash*.ocx" set FLASH_OK=1

if !FLASH_OK!==1 (
    echo   [OK] Flash Player ya esta instalado.
    goto :final
)

echo   Flash Player es un componente descontinuado por Adobe
echo   en 2020. MSN Messenger lo necesita para animar los
echo   guinos. Se instalara la ultima version que funciona.
echo.
echo   Descargando...

set DEST=%TEMP%\%FLASH_EXE%
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
  "$ErrorActionPreference='Stop';" ^
  "try { Invoke-WebRequest -Uri '%BASE%/%FLASH_EXE%' -OutFile '%DEST%' -UseBasicParsing -TimeoutSec 180; exit 0 }" ^
  "catch { exit 1 }"

if not exist "%DEST%" (
    echo   [X] No se pudo descargar. Revisa tu conexion.
    goto :final
)

REM --- Comprobar que el archivo es exactamente el esperado ---
REM Se miran tres cosas, porque una descarga cortada pasa desapercibida:
REM   1. que el ejecutable este completo (un PE truncado no arranca)
REM   2. que el contenido sea byte a byte el esperado (SHA256)
REM   3. que lleve la firma digital de Adobe
echo   Comprobando el archivo...

for /f %%H in ('powershell -NoProfile -Command "(Get-FileHash -Algorithm SHA256 '%DEST%').Hash"') do set HASH=%%H
if /i not "!HASH!"=="%FLASH_SHA%" (
    echo   [X] El archivo no coincide con el esperado ^(descarga incompleta?^).
    echo       Por seguridad no se instalara.
    del "%DEST%" >nul 2>&1
    goto :final
)

for /f %%F in ('powershell -NoProfile -Command "(Get-AuthenticodeSignature '%DEST%').Status"') do set FIRMA=%%F
if /i not "!FIRMA!"=="Valid" (
    echo   [X] El archivo no tiene una firma digital valida ^(!FIRMA!^).
    echo       Por seguridad no se instalara.
    del "%DEST%" >nul 2>&1
    goto :final
)

echo   [OK] Verificado: firmado por Adobe y sin alteraciones.

echo   Instalando ^(puede tardar un momento^)...
"%DEST%" -install >nul 2>&1

set FLASH_OK=0
if exist "%SystemRoot%\SysWOW64\Macromed\Flash\Flash*.ocx" set FLASH_OK=1
if exist "%SystemRoot%\System32\Macromed\Flash\Flash*.ocx" set FLASH_OK=1

if !FLASH_OK!==1 (
    echo   [OK] Flash Player instalado.
) else (
    echo   [!] No se pudo confirmar la instalacion.
    echo       Los guinos llegaran igual, pero sin animacion.
)
del "%DEST%" >nul 2>&1

:final
echo.
echo  ============================================
echo    Listo. Ya puedes abrir el Messenger.
echo  ============================================
echo.
echo    Si lo tenias abierto, cierralo del todo
echo    ^(clic derecho en el icono junto al reloj
echo    - Salir^) y vuelve a abrirlo.
echo.
pause
exit /b

REM --- Escribe server= en un .ini, respetando lo que ya tuviera ---
:configurar
set "ARCHIVO=%~1"
if not exist "%ARCHIVO%" exit /b

powershell -NoProfile -ExecutionPolicy Bypass -Command ^
  "$f = '%ARCHIVO%';" ^
  "$s = '%SERVIDOR%';" ^
  "if (Test-Path $f) { $l = @(Get-Content -LiteralPath $f -Encoding ASCII) } else { $l = @() };" ^
  "$i = -1; for ($k=0; $k -lt $l.Count; $k++) { if ($l[$k] -match '^\s*server\s*=') { $i = $k; break } };" ^
  "if ($i -ge 0) { $l[$i] = \"server = $s\" }" ^
  "else { $sec = -1; for ($k=0; $k -lt $l.Count; $k++) { if ($l[$k] -match '^\s*\[options\]\s*$') { $sec = $k; break } };" ^
  "      if ($sec -ge 0) { $n = @(); $n += $l[0..$sec]; $n += \"server = $s\"; if ($sec+1 -lt $l.Count) { $n += $l[($sec+1)..($l.Count-1)] }; $l = $n }" ^
  "      else { $l += '[options]'; $l += \"server = $s\" } };" ^
  "Set-Content -LiteralPath $f -Value $l -Encoding ASCII"

if errorlevel 1 (
    echo   [X] No se pudo escribir: %~nx1
) else (
    echo   [OK] %~nx1
    set /a HECHOS+=1
)
exit /b
