@echo off

REM  Hitachi SVP                               
REM  Apache Install tool for Hitachi SVP
REM       All Rights Reserved, Copyright (C) 2013-2020,Hitachi, Ltd.
REM
REM History  :Version    :DATE        : Coder        : Patch No
REM Hitachi SVP 
REM          :01-00      :2013.04.09  :
REM          :01-01      :2014.08.01  : S.Moriya     : Y8592222338 (Apache2.4.10 is supported) 
REM          :01-02      :2015.05.27  : S.Moriya     : Y8012223001 (Apache2.4.12 is supported) 
REM          :01-03      :2018.10.03  : S.Moriya     : #59383 (Apache2.4.34 is supported) 
REM          :01-04      :2019.05.29  : S.Moriya     : #76764
REM          :01-05      :2019.08.20  : J.Okuno      : #82714 (Apache2.4.39 is supported) 
REM          :01-06      :2020.03.12  : S.Moriya     : #98565 (Apache2.4.41 is supported) 
REM
REM Document
REM Apache2.4.4/Apache2.4.10/Apache2.4.12/Apache2.4.34/Apache2.4.39/Apache2.4.41 UnInstaller
REM
REM 

pushd %~dp0


set LOGFILE="C:\Error.txt"
echo ----- > %LOGFILE% 2>>&1
echo # Start Program >> %LOGFILE% 2>>&1
echo %date%-%time% >> %LOGFILE% 2>>&1
echo ----- >> %LOGFILE% 2>>&1

set flag="C:\DKC200\TMP\Apache_TMP\certificate_bak\NG_flg"
set certificate_bak=C:\DKC200\TMP\Apache_TMP\certificate_bak

REM Apacheに格納されている証明書が存在するか確認
IF NOT EXIST "C:\Program Files\Apache Group\Apache2\conf\ssl.crt\server.crt" (
	echo "C:\Program Files\Apache Group\Apache2\conf\ssl.crt\server.crt" does not exist >> %LOGFILE% 2>>&1
   goto :CERTIFICATE_END
)
IF NOT EXIST "C:\Program Files\Apache Group\Apache2\conf\ssl.key\server.key" (
	echo "C:\Program Files\Apache Group\Apache2\conf\ssl.key\server.key" does not exist >> %LOGFILE% 2>>&1
   goto :CERTIFICATE_END
)

REM フラグファイルが存在しないか？
IF EXIST %flag% (
	echo %flag% exist >> %LOGFILE% 2>>&1
   goto :CERTIFICATE_END
)

dir >> %LOGFILE% 2>>&1

echo Check fingerprint
pushd "C:\Program Files\Apache Group\Apache2"
REM Apacheに格納されている証明書の情報をテキストファイルに出力
for /f "tokens=2-21 delims=: " %%a in ('bin\openssl x509 -sha1 -in conf\ssl.crt\server.crt -noout -fingerprint') do (
	set WINDOWS_VER1=%%a
	set WINDOWS_VER2=%%b
	set WINDOWS_VER3=%%c
	set WINDOWS_VER4=%%d
	set WINDOWS_VER5=%%e
	set WINDOWS_VER6=%%f
	set WINDOWS_VER7=%%g
	set WINDOWS_VER8=%%h
	set WINDOWS_VER9=%%i
	set WINDOWS_VER10=%%j
	set WINDOWS_VER11=%%k
	set WINDOWS_VER12=%%l
	set WINDOWS_VER13=%%m
	set WINDOWS_VER14=%%n
	set WINDOWS_VER15=%%o
	set WINDOWS_VER16=%%p
	set WINDOWS_VER17=%%q
	set WINDOWS_VER18=%%r
	set WINDOWS_VER19=%%s
	set WINDOWS_VER20=%%t
)


echo "%WINDOWS_VER1%:%WINDOWS_VER2%:%WINDOWS_VER3%:%WINDOWS_VER4%:%WINDOWS_VER5%:%WINDOWS_VER6%:%WINDOWS_VER7%:%WINDOWS_VER8%:%WINDOWS_VER9%:%WINDOWS_VER10%:%WINDOWS_VER11%:%WINDOWS_VER12%:%WINDOWS_VER13%:%WINDOWS_VER14%:%WINDOWS_VER15%:%WINDOWS_VER16%:%WINDOWS_VER17%:%WINDOWS_VER18%:%WINDOWS_VER19%:%WINDOWS_VER20%" >> %LOGFILE% 2>>&1

IF NOT EXIST "%certificate_bak%" md "%certificate_bak%" >> %LOGFILE% 2>>&1

REM %certificate_bak%\fingerprint.txtファイル削除
IF EXIST "%certificate_bak%\fingerprint.txt" del /S /Q "%certificate_bak%\fingerprint.txt" >> %LOGFILE% 2>>&1
IF EXIST "%certificate_bak%\fingerprint.txt" (
	echo Error:delete "%certificate_bak%\fingerprint.txt"  >> %LOGFILE% 2>>&1
   goto :error
)

echo "%WINDOWS_VER1%:%WINDOWS_VER2%:%WINDOWS_VER3%:%WINDOWS_VER4%:%WINDOWS_VER5%:%WINDOWS_VER6%:%WINDOWS_VER7%:%WINDOWS_VER8%:%WINDOWS_VER9%:%WINDOWS_VER10%:%WINDOWS_VER11%:%WINDOWS_VER12%:%WINDOWS_VER13%:%WINDOWS_VER14%:%WINDOWS_VER15%:%WINDOWS_VER16%:%WINDOWS_VER17%:%WINDOWS_VER18%:%WINDOWS_VER19%:%WINDOWS_VER20%" > "%certificate_bak%\fingerprint.txt" 2>>&1
for %%F IN (%certificate_bak%\fingerprint.txt) DO IF %%~zF EQU 0 GOTO :error

REM %certificate_bak%\server.crtファイル削除
IF EXIST "%certificate_bak%\server.crt" del /S /Q "%certificate_bak%\server.crt" >> %LOGFILE% 2>>&1
IF EXIST "%certificate_bak%\server.crt" (
	echo Error:delete "%certificate_bak%\server.crt"  >> %LOGFILE% 2>>&1
   goto :error
)

REM %certificate_bak%\server.keyファイル削除
IF EXIST "%certificate_bak%\server.key" del /S /Q "%certificate_bak%\server.key" >> %LOGFILE% 2>>&1
IF EXIST "%certificate_bak%\server.key" (
	echo Error:delete "%certificate_bak%\server.key"  >> %LOGFILE% 2>>&1
   goto :error
)

xcopy /E /R /Q /Y /H "C:\Program Files\Apache Group\Apache2\conf\ssl.crt" "%certificate_bak%" >> %LOGFILE% 2>>&1
IF NOT EXIST "%certificate_bak%\server.crt" (
	echo Error:copy "server.crt"  >> %LOGFILE% 2>>&1
   goto :error
)


xcopy /E /R /Q /Y /H "C:\Program Files\Apache Group\Apache2\conf\ssl.key" "%certificate_bak%" >> %LOGFILE% 2>>&1
IF NOT EXIST "%certificate_bak%\server.key" (
	echo Error:copy "server.key"  >> %LOGFILE% 2>>&1
   goto :error
)


:CERTIFICATE_END


ECHO  Stop Apache Service
REM pushd "C:\Program Files\Apache Group\Apache2\bin"
cd "C:\Program Files\Apache Group\Apache2\bin"
httpd.exe -k stop 2>>"c:\Error.txt"
taskkill /F /IM "httpd.exe" 2>>"C:\Error.txt"
taskkill /F /IM "rotatelogs.exe" 2>>"C:\Error.txt"
httpd.exe -k uninstall 

REM IF EXIST "C:\Program Files\Apache Group\Apache2\conf\httpd.conf" del "c:\Program Files\Apache Group\Apache2\conf\httpd.conf"


ECHO Delete Registry key and value
REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache" /f 


ECHO Remove Files

cd "C:\"
REM rmdir <Directorys> /s /q 2>>"C:\Error.txt"
REM del <Files> [/s] /q 2>>"C:\Error.txt"
rmdir "C:\Program Files\Apache Group" /s /q 2>>"C:\Error.txt"

REM Uninstall the VC++Runtime.
set RUNTIME_UNINST_BAT="%~dp0..\vc_runtime\uninstall_vc_runtime.bat"

call %RUNTIME_UNINST_BAT%
if not %errorlevel%==0 (
	goto :error
)

exit

:error
echo Error: Failed to Uninstall >> %LOGFILE% 2>>&1
exit 5
