@echo off

rem -- http://PHPnow.org
rem -- By Yinz ( MSN / QQ / Email : Cwood@qq.com )

setlocal enableextensions
if exist Pn\Config.cmd pushd . & goto cfg
if exist ..\Pn\Config.cmd pushd .. & goto cfg
goto :eof

:cfg
call Pn\Config.cmd
if "%pause%"=="" exit /b

if "%1"=="x" if not "%2"=="" cmd /c "%2 %3 %4 %5 %6" & goto :eof
if not "%1"=="" (
call :%1 %2
goto :eof
)

prompt -$g
title PHPnow %pn_ver%  (Apache %htd_ver%)
goto menu


:restart_apache
if not exist %apadir%\logs\httpd.pid goto :eof
echo.
echo   Apache ...
pushd %apadir%
bin\%htd_exe% -k restart -n %htd_svc% || set errno=1
popd
if "%errno%"=="1" %pause%
goto :eof


:execmd
if exist %1 call %1 && goto :eof
if exist %cmdsdir%\%1 call %cmdsdir%\%1 && goto :eof
echo # Ҳ %1 !
%pause%
goto :eof


:menu
echo   ______________________________________________________________
echo  ^|                                                              ^|
echo  ^|        PHPnow  -  ɫ PHP + MySQL ׼  -           ^|
echo  ^|                                                              ^|
echo  ^|     0 - vhs          10 -        ^|
echo  ^|     1 - vhs ɾ         11 - ȡ       ^|
echo  ^|     2 - vhs ޸         12 - λ MySQL root    ^|
echo  ^|     3 -  eAccelerator        13 -  Apache ˿       ^|
echo  ^|     4 -  eAccelerator *      14 -  MySQL ݿ      ^|
echo  ^|     5 -  վĿ¼        15 -  MySQL ݿ      ^|
echo  ^|     6 -  վĿ¼ *      16 - ˿ʹ״̬       ^|
echo  ^|     7 - ־־(ж)   17 - -----------------      ^|
echo  ^|     8 - ȡ ־־     *      18 - -----------------      ^|
echo  ^|     9 -  error_reporting     19 - Pn Ŀ¼ʾ      ^|
echo  ^|     ( * ŵΪĬѡ)                                    ^|
echo  ^|                                                              ^|
echo  ^|     20 - Start.cmd               30 - Stop.cmd               ^|
echo  ^|     21 - Apa_Start.cmd           31 - Apa_Stop.cmd           ^|
echo  ^|     22 - My_Start.cmd            32 - My_Stop.cmd            ^|
echo  ^|     23 - Apa_Restart.cmd         33 - ǿֹ̲ж     ^|
echo  ^|______________________________________________________________^|
set /p input=-^> ѡ: 
cls
if "%input%"=="20" call :execmd Start.cmd 
if "%input%"=="21" call :execmd Apa_Start.cmd
if "%input%"=="22" call :execmd My_Start.cmd
if "%input%"=="23" call :execmd Apa_Restart.cmd
if "%input%"=="30" call :execmd Stop.cmd
if "%input%"=="31" call :execmd Apa_Stop.cmd
if "%input%"=="32" call :execmd My_Stop.cmd
echo.
if "%input%"=="0" goto add_vhost
if "%input%"=="1" goto del_vhost
if "%input%"=="2" goto mod_vhost
if "%input%"=="3" goto en_ea
if "%input%"=="4" goto dis_ea
if "%input%"=="5" goto en_index
if "%input%"=="6" goto dis_index
if "%input%"=="7" goto pipelog
if "%input%"=="8" goto unpipelog
if "%input%"=="9" goto err_report
if "%input%"=="10" goto set_proxy
if "%input%"=="11" goto un_proxy
if "%input%"=="12" goto reset_mypwd
if "%input%"=="13" goto chg_port
if "%input%"=="14" goto my_dump
if "%input%"=="15" goto my_import
if "%input%"=="16" goto chkport
if "%input%"=="17" goto --
if "%input%"=="18" goto --
if "%input%"=="19" cmd /K echo  # ǰĿ¼ [ %CD% ]
if "%input%"=="33" goto fstop
goto end


:chg_port
set /p nport=-^> ¶˿(1-65535): 
if "%nport%"=="" goto end
%pl% $p='%nport%';$p=abs($p);if(is_int($p)^&^&$p^>0^&^&$p^<65536)exit(0);else exit(1); || goto end
%pl% chg_port('%nport%'); || %pause% && goto end
if "%1"=="nors" goto end
call :restart_apache
goto end


:add_vhost
echo  # б #
%pl% showvhs(); || %pause% && goto end
echo.
echo  [ ʶͬ.  abc.com  www.abc.com ]
set /p hname=-^> : 
if "%hname%"=="" goto end
echo.
echo  [ ڰĶ.  www.abc.com  *.abc.com()
echo    ÿո俪,  www.abc.com 51lvse.cn *.phpnow.org ]
set /p alias=-^> (ѡ): 
:add_vhost_1
echo.
echo  [ ָվĿ¼. ĬΪ vhosts\%hname%]
set htdocs=
set /p htdocs=-^> վĿ¼(ѡ): 
if "%htdocs%"=="" goto add_vhost_2
%pl% exit(strpos('%htdocs%#',':')); && ( echo  # ʹþ· D:\www & %pause% & goto add_vhost_1 )
if exist %htdocs% goto add_vhost_2
md %htdocs%>nul 2>nul || ( echo  # ָĿ¼ڡԶʧܣ& %pause% & goto add_vhost_1 )
:add_vhost_2
echo.
echo  [ û, Ȩ,  "y";
echo    ,  "n". Ĭ Y ]
set /p p=-^> Ȩ? (Y/n): 
%pl% addvhost('%hname%', '%htdocs% ', %htd_port%, '%alias%', '%p%'); || %pause% && goto end
call :restart_apache
goto end


:del_vhost
echo  # б #
%pl% showvhs(); || %pause% && goto end
echo.
set /p hname=-^> Ҫɾ: 
if "%hname%"=="" goto end
%pl% delvhost('%hname%'); || %pause% && goto end
call :restart_apache
goto end


:mod_vhost
echo  # б #
%pl% showvhs(); || %pause% && goto end
echo.
set /p hname=-^> Ҫ޸ĵ: 
if "%hname%"=="" goto end
echo.
echo  [ µ, ԭݽ! ]
echo  [ ʹ + ԭ. Ҫԭ,  +phpnow.org ]
set /p alias=-^> : 
if "%alias%"=="" goto end
:mod_vhost_1
echo.
echo  [  %hname% Ϊ "%alias%" ]
echo.
set /p sure=-^> ȷ? (y/n)
if /i "%sure%"=="n" goto end
if /i "%sure%"=="y" goto mod_vhost_2
goto mod_vhost_1
:mod_vhost_2
%pl% modvhost('%hname%', '%alias%'); || %pause% && goto end
call :restart_apache
goto end


:set_proxy
echo  [  Apache ˿, ʵ http  80 ˿ ]
echo.
echo  # б #
%pl% showvhs(); || %pause% && goto end
echo.
echo  [ µ.  abc.com  bbs.abc.com ]
set /p hname=-^> : 
if "%hname%"=="" goto end
echo.
echo  [ .  www.abc.com  *.abc.com(); ÿո ]
set /p alias=-^> (ѡ): 
if "%alias%"=="" set alias=*.%hname%
echo.
echo  [ : localhost:8080192.168.0.100  google.com]
echo  [ ĬΪ: localhost:8080 ]
set /p pryto=-^> Ŀ: 
if "%pryto%"=="" set pryto=localhost:8080
%pl% conf($htdcf, '^#(Load.*proxy_mod.*)$', '$1'); conf($htdcf, '^#(Load.*proxy_http.*)$', '$1'); || %pause% && goto end
echo.>>%vh%
echo ^<VirtualHost *^>>>%vh%
echo     ServerName %hname%:%htd_port%>>%vh%
echo     ServerAlias %alias%>>%vh%
echo     ProxyPass / http://%pryto%/>>%vh%
echo     ProxyPassReverse / http://%pryto%/>>%vh%
echo ^</VirtualHost^>>>%vh%
call :restart_apache
goto end


:un_proxy
echo  [ ɾд¼! ]
echo.
set /p sure=-^> ȷ? (y/n)
if /i "%sure%"=="n" goto end
if /i "%sure%"=="y" goto un_proxy_1
goto un_proxy
:un_proxy_1
%pl% conf($htdcf,'^(Load.*proxy_mod.*)$', '#$1');conf($htdcf, '^(Load.*proxy_http.*)$', '#$1'); || %pause% && goto end
%pl% "$s=rfile($vhcf);$s=regrpl('\r\n<VirtualHost \*>[^<]*ProxyPass [^<]*<\/VirtualHost>\r\n','',$s);wfile($vhcf,$s);" || %pause% && goto end
call :restart_apache
goto end


:en_ea
if not exist %phpdir%\ext\eAccelerator*.dll if exist Pn\eAccelerator*.dll (
copy Pn\eAccelerator*.dll %phpdir%\ext /y>nul
) else ( echo # eAccelerator dll ûҵ & %pause% & goto end )
for /f %%i in ('dir /b /o %phpdir%\ext\eAccelerator*.dll') do set ea_dll=%%i
%pl% conf(`$phpdir\php-apache2handler.ini`, '^[;]*(zend_extension_ts=).*eAccelerator.*\r?$', `$1\`..\..\\$phpdir\ext\%ea_dll%\``); || %pause% && goto end
call :restart_apache
goto end


:dis_ea
%pl% conf(`$phpdir\php-apache2handler.ini`, '^(zend_extension_ts=.*eAccelerator.*\r?$)', ';;$1'); || %pause% && goto end
call :restart_apache
goto end


:en_index
%pl% "$s=rfile($htdcf); $s=regrpl('^##(Load.*autoindex.*\.so)', '$1', $s); $s=regrpl('^##?(Inc.*autoindex.*)', '$1', $s); $s=regrpl('Options -Indexes', 'Options Indexes', $s); wfile($htdcf, $s);
%pl% conf($vhcf, 'Options -Indexes', 'Options Indexes'); || %pause% && goto end
call :restart_apache
goto end


:dis_index
%pl% "$s=rfile($htdcf); $s=regrpl('^(Load.*autoindex.*\.so)', '##$1', $s); $s=regrpl('^(Inc.*autoindex.*)', '##$1', $s); $s=regrpl('Options Indexes', 'Options -Indexes', $s); wfile($htdcf, $s);
%pl% conf($vhcf, 'Options Indexes', 'Options -Indexes'); || %pause% && goto end
call :restart_apache
goto end


:pipelog
%pl% pipelog(1);
call :restart_apache
goto end


:unpipelog
%pl% pipelog(0);
call :restart_apache
goto end


:err_report
echo   ______________________________________________________________
echo  ^|                                                              ^|
echo  ^|        php error_reporting (󱨸) ѡ               ^|
echo  ^|                                                              ^|
echo  ^|     0 - E_ALL ^& ~E_NOTICE ^& ~E_WARNING      [ Ĭ; Ƽ ]   ^|
echo  ^|     1 - E_ALL                                 [ ģʽ ]   ^|
echo  ^|______________________________________________________________^|
set /p input=-^> ѡ: 
if "%input%"=="0" %pl% conf(`$phpdir\php-apache2handler.ini`, '^^(error_reporting =) .+(\r?)', '$1 E_ALL ^& ~E_NOTICE ^& ~E_WARNING$2');
if "%input%"=="1" %pl% conf(`$phpdir\php-apache2handler.ini`, '^^(error_reporting =) .+(\r?)', '$1 E_ALL$2');
call :restart_apache
goto end


:reset_mypwd
set /p newpwd=-^>  root : 
if "%newpwd%"=="" goto reset_mypwd
echo.
set tmpsql=%SystemRoot%\Temp\%RANDOM%.sql
echo SET PASSWORD FOR 'root'@'localhost' = PASSWORD('%newpwd%');>%tmpsql%
if exist %mysqldir%\data\%COMPUTERNAME%.pid net stop %my_svc%
set myini=%CD%\%mysqldir%\my.ini
start /b %mysqldir%\bin\mysqld-nt --defaults-file="%myini%" --init-file=%tmpsql%
%mysqldir%\bin\mysqladmin.exe shutdown -uroot -p"%newpwd%"
echo  ȴ MySQL ...
echo.
%pl% while(@file_exists('%mysqldir%\data\%COMPUTERNAME%.pid')) usleep(50000);
echo.>%tmpsql%
del %tmpsql% /Q
net start %my_svc% || %pause%
goto end


:my_dump
set /p dbn=-^> ݿ: 
if "%dbn%"=="" goto my_dump
:my_dump_u
set /p u=-^> û: 
if "%u%"=="" goto my_dump_u
set /p p=-^> : 
:my_dump_fn
set /p fn=-^> ļ: 
if "%fn%"=="" goto my_dump_fn

%mysqldir%\bin\mysqldump.exe -u%u% -p%p% %dbn%>%fn% || %pause% && del %fn% /Q
goto end


:my_import
set /p dbn=-^> ݿ(ֶյ): 
if "%dbn%"=="" goto my_import
:my_import_u
set /p u=-^> û: 
if "%u%"=="" goto my_import_u
set /p p=-^> : 
:my_import_fn
set /p fn=-^> ļ: 
if "%fn%"=="" goto my_import_fn

%mysqldir%\bin\mysql.exe -u%u% -p%p% -D%dbn%<%fn% || %pause%
goto end


:chkport
%pl% chkport(%htd_port%);
if not errorlevel 1 echo   ָ httpd ˿ %htd_port% ûбκνʹá
%pl% chkport(%my_port%);
if not errorlevel 1 echo   ָ MySQL ˿ %my_port% ûбκνʹá
echo.
%pause% & goto end


:fstop
taskkill /fi "SERVICES eq %htd_svc%" /f /t
taskkill /fi "SERVICES eq %my_svc%" /f /t
net stop %my_svc%>nul 2>nul
net stop %htd_svc%>nul 2>nul
%apadir%\bin\%htd_exe% -k uninstall -n %htd_svc%>nul 2>nul
%mysqldir%\bin\mysqld-nt.exe --remove %my_svc%>nul 2>nul
del %mysqldir%\data\%COMPUTERNAME%.pid %apadir%\logs\httpd.pid /q>nul 2>nul
%pause%
goto end


:end
prompt
popd
