2022-01-11 11:45:36 +00:00
< ? php
2023-01-05 17:01:42 +00:00
include 'functions.php' ;
2022-01-11 13:17:37 +00:00
2023-01-05 17:01:42 +00:00
if ( file_exists ( '../../install.lock' )) {
exit ( " The installation has been completed already. Please delete the File 'install.lock' to re-run " );
2022-01-11 18:54:32 +00:00
}
2023-04-04 16:06:05 +00:00
function cardStart ( $title , $subtitle = null )
{
return "
< div class = 'flex flex-col gap-4 sm:w-auto w-full sm:min-w-[550px] my-6' >
< h1 class = 'text-center font-bold text-3xl' > ControlPanel . gg Installation </ h1 >
< div class = 'border-4 border-[#2E373B] bg-[#242A2E] rounded-2xl p-6 pt-3 mx-2' >
< h2 class = 'text-xl text-center mb-2' > $title </ h2 > "
. ( isset ( $subtitle ) ? " <p class='text-neutral-400 mb-1'> $subtitle </p> " : " " );
}
2022-01-11 13:09:20 +00:00
?>
2022-01-11 11:45:36 +00:00
2022-01-11 13:09:20 +00:00
< html >
2023-04-04 16:06:05 +00:00
2022-01-11 18:54:32 +00:00
< head >
2022-01-11 13:09:20 +00:00
< title > Controlpanel . gg installer Script </ title >
2023-04-04 16:06:05 +00:00
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " >
< link href = " styles.css " rel = " stylesheet " >
2022-01-11 13:09:20 +00:00
< style >
2022-01-11 18:54:32 +00:00
body {
2023-04-04 16:06:05 +00:00
color - scheme : dark ;
2022-01-11 18:54:32 +00:00
}
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
. check {
display : flex ;
gap : 5 px ;
align - items : center ;
margin - bottom : 5 px ;
}
. check :: before {
width : 20 px ;
height : 20 px ;
display : block ;
2022-01-11 18:54:32 +00:00
}
2022-01-11 11:45:36 +00:00
2022-01-11 18:54:32 +00:00
. ok {
2023-04-04 16:06:05 +00:00
color : lightgreen ;
2022-01-11 18:54:32 +00:00
}
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
/* Green Checkmark */
2022-01-11 18:54:32 +00:00
. ok :: before {
2023-04-04 16:06:05 +00:00
content : url ( " data:image/svg+xml,%3Csvg fill='none' stroke='lightgreen' stroke-width='1.5' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z'%3E%3C/path%3E%3C/svg%3E " );
2022-01-11 18:54:32 +00:00
}
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
. not - ok {
color : lightcoral ;
2022-01-11 18:54:32 +00:00
}
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
/* Red Cross */
. not - ok :: before {
content : url ( " data:image/svg+xml,%3Csvg fill='none' stroke='lightcoral' stroke-width='1.5' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z'%3E%3C/path%3E%3C/svg%3E " );
2022-01-11 18:54:32 +00:00
}
</ style >
</ head >
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
< body class = " w-full flex items-center justify-center bg-[#1D2125] text-white " >
2022-01-12 06:57:59 +00:00
2023-04-04 16:06:05 +00:00
< ? php
2022-01-11 11:45:36 +00:00
2023-04-04 16:06:05 +00:00
// Getting started
if ( ! isset ( $_GET [ 'step' ]) || $_GET [ 'step' ] == 1 ) {
if ( ! file_exists ( '../../.env' )) {
echo run_console ( 'cp .env.example .env' );
};
?>
< ? php echo cardStart ( $title = " Mandatory Checks before Installation " , $subtitle = " This installer will lead you through the most crucial Steps of Controlpanel.gg's setup " ); ?>
2022-01-26 14:17:51 +00:00
2023-04-04 16:06:05 +00:00
< ul class = " list-none mb-2 " >
2023-01-11 15:44:44 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo checkHTTPS() == true ? 'ok' : 'not-ok'; ?> check " > HTTPS is required </ li >
2022-01-11 13:09:20 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo checkWriteable() == true ? 'ok' : 'not-ok'; ?> check " > Write - permissions on . env - file </ li >
< li class = " <?php echo checkPhpVersion() === 'OK' ? 'ok' : 'not-ok'; ?> check " > php
version : < ? php echo phpversion (); ?> (minimum required <?php echo $requirements['minPhp']; ?>)</li>
2022-01-24 11:12:50 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo getMySQLVersion() === 'OK' ? 'ok' : 'not-ok'; ?> check " > mysql
version : < ? php echo getMySQLVersion (); ?> (minimum required <?php echo $requirements['mysql']; ?>)</li>
2022-01-24 11:12:50 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo count(checkExtensions()) == 0 ? 'ok' : 'not-ok'; ?> check " > Missing
php - extentions : < ? php echo count ( checkExtensions ()) == 0 ? 'none' : '' ;
foreach ( checkExtensions () as $ext ) {
echo $ext . ', ' ;
}
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
echo count ( checkExtensions ()) == 0 ? '' : '(Proceed anyway)' ; ?> </li>
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
<!-- < li class = " <?php echo getZipVersion() === 'OK' ? 'ok' : 'not-ok'; ?> check " > Zip
version : < ? php echo getZipVersion (); ?> </li> -->
2022-01-11 13:09:20 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo getGitVersion() === 'OK' ? 'ok' : 'not-ok'; ?> check " > Git
version : < ? php echo getGitVersion (); ?> </li>
2022-01-11 13:09:20 +00:00
2023-04-04 16:06:05 +00:00
< li class = " <?php echo getTarVersion() === 'OK' ? 'ok' : 'not-ok'; ?> check " > Tar
version : < ? php echo getTarVersion (); ?> </li>
</ ul >
</ div >
< a href = " ?step=2 " class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " > Lets
go </ button >
</ a >
2022-01-11 18:54:32 +00:00
< ? php
2023-04-04 16:06:05 +00:00
}
// DB Config
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 2 ) {
echo cardStart ( $title = " Database Configuration " ); ?>
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " checkDB " >
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
< div class = " row " >
< div class = " col-md-12 " >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " databasedriver " > Database Driver </ label >
< input x - model = " databasedriver " id = " databasedriver " name = " databasedriver " type = " text " required value = " mysql " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " databasehost " > Database Host </ label >
< input x - model = " databasehost " id = " databasehost " name = " databasehost " type = " text " required value = " 127.0.0.1 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " databaseport " > Database Port </ label >
< input x - model = " databaseport " id = " databaseport " name = " databaseport " type = " number " required value = " 3306 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " databaseuser " > Database User </ label >
< input x - model = " databaseuser " id = " databaseuser " name = " databaseuser " type = " text " required value = " controlpaneluser " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " databaseuserpass " > Database User Password </ label >
< input x - model = " databaseuserpass " id = " databaseuserpass " name = " databaseuserpass " type = " text " required class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2022-01-11 13:09:20 +00:00
2023-04-04 16:06:05 +00:00
< div class = " form-group " >
< div class = " flex flex-col " >
< label for = " database " > Database </ label >
< input x - model = " database " id = " database " name = " database " type = " text " required value = " controlpanel " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
2022-01-11 13:09:20 +00:00
</ div >
2023-03-29 23:10:55 +00:00
2022-01-12 07:08:14 +00:00
</ div >
2023-04-04 16:06:05 +00:00
</ div >
< div class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " checkDB " > Submit </ button >
</ div >
</ form >
2022-01-11 18:54:32 +00:00
</ div >
2022-01-12 07:08:14 +00:00
2023-04-04 16:06:05 +00:00
< ? php
}
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
// DB Migration & APP_KEY Generation
2023-04-05 13:15:00 +00:00
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 2.5 ) { ?>
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " feedDB " >
2022-01-11 19:03:59 +00:00
2023-04-05 13:15:00 +00:00
< ? php echo cardStart ( $title = " Database Migration and Encryption Key Generation " , $subtitle = " Lets feed your Database and generate some security keys! <br> This process might take a while. Please do not refresh or close this page! " ); ?> <form method="POST" enctype="multipart/form-data" class="m-0" action="/install/forms.php" name="feedDB">
2022-01-11 13:09:20 +00:00
2023-04-04 16:06:05 +00:00
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
2022-01-20 08:26:46 +00:00
2023-04-05 13:15:00 +00:00
</ div >
< div class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " feedDB " > Submit </ button >
</ div >
2023-04-04 16:06:05 +00:00
</ form >
< ? php
}
2022-01-12 07:08:14 +00:00
2023-04-04 16:06:05 +00:00
// Dashboard Config
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 3 ) {
2022-01-24 11:12:50 +00:00
2023-04-04 16:06:05 +00:00
echo cardStart ( $title = " Dashboard Configuration " ); ?>
2022-01-12 07:08:14 +00:00
2023-04-04 16:06:05 +00:00
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " checkGeneral " >
2022-01-24 11:12:50 +00:00
2023-04-04 16:06:05 +00:00
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
< div class = " row " >
< div class = " col-md-12 " >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " database " > Dashboard URL </ label >
< input id = " url " name = " url " type = " text " required value = " <?php echo 'https://' . $_SERVER['SERVER_NAME'] ; ?> " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col " >
< label for = " name " > Host Name </ label >
< input id = " name " name = " name " type = " text " required value = " " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
2022-01-12 07:08:14 +00:00
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
2022-01-11 14:09:00 +00:00
</ div >
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
< div class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " checkGeneral " > Submit </ button >
</ div >
</ form >
2022-01-12 07:08:14 +00:00
</ div >
2022-01-11 18:54:32 +00:00
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< ? php
}
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
// Email Config
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 4 ) {
echo cardStart ( $title = " E-Mail Configuration " , $subtitle = " This process might take a few seconds when submitted.<br>Please do not refresh or close this page! " ); ?>
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " checkSMTP " >
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
< div class = " row " >
< div class = " col-md-12 " >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " method " > Your E - Mail Method </ label >
< input id = " method " name = " method " type = " text " required value = " smtp " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " host " > Your Mailer - Host </ label >
< input id = " host " name = " host " type = " text " required value = " smtp.google.com " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " port " > Your Mail Port </ label >
< input id = " port " name = " port " type = " number " required value = " 567 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " user " > Your Mail User </ label >
< input id = " user " name = " user " type = " text " required value = " info@mydomain.com " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " pass " > Your Mail - User Password </ label >
< input id = " pass " name = " pass " type = " password " required value = " " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col " >
< label for = " encryption " > Your Mail encryption method </ label >
< input id = " encryption " name = " encryption " type = " text " required value = " tls " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
</ div >
2022-01-11 14:09:00 +00:00
2022-01-11 18:54:32 +00:00
2022-01-11 19:03:59 +00:00
2022-01-26 14:41:42 +00:00
</ div >
2022-01-11 15:12:48 +00:00
2022-01-12 07:08:14 +00:00
</ div >
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
< div class = " flex w-full justify-around mt-4 gap-8 px-8 " >
< button type = " submit " class = " w-full px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " checkSMTP " > Submit </ button >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< a href = " ?step=5 " class = " w-full " >
< button type = " button " class = " w-full px-4 py-2 font-bold rounded-md bg-yellow-500/90 hover:bg-yellow-600 shadow-yellow-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-yellow-600 " > Skip
For Now </ button >
</ a >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
</ form >
</ div >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< ? php
}
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
// Pterodactyl Config
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 5 ) {
echo cardStart ( $title = " Pterodactyl Configuration " , $subtitle = " Lets get some info about your Pterodactyl Installation! " ); ?>
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " checkPtero " >
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
< div class = " row " >
< div class = " col-md-12 " >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " url " > Pterodactyl URL </ label >
< input id = " url " name = " url " type = " text " required value = " https://ptero.example.com " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col mb-3 " >
< label for = " key " > Application API Key </ label >
< input id = " key " name = " key " type = " text " required value = " " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
< span class = " text-neutral-400 " > [ Found at : ptero . example . com / admin / api ] < br /> The key needs all
Read & Write permissions ! </ span >
</ div >
</ div >
< div class = " form-group " >
< div class = " flex flex-col " >
< label for = " clientkey " > Admin User Client API Key </ label >
< input id = " clientkey " name = " clientkey " type = " text " required value = " " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
< span class = " text-neutral-400 " > [ Found at : ptero . example . com / account / api ] < br /> Your Account
needs to be an Admin !</ span >
</ div >
</ div >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
</ div >
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
</ div >
</ div >
< div class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " checkPtero " > Submit </ button >
</ div >
</ form >
</ div >
2022-01-11 19:03:59 +00:00
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< ? php
}
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
// Admin Creation Form
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 6 ) {
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
echo cardStart ( $title = " First Admin Creation " , $subtitle = " Lets create the first admin user! " ); ?>
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< form method = " POST " enctype = " multipart/form-data " class = " m-0 " action = " /install/forms.php " name = " createUser " >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< ? php if ( isset ( $_GET [ 'message' ])) {
echo " <p class='not-ok check'> " . $_GET [ 'message' ] . '</p>' ;
} ?>
2023-03-29 23:10:55 +00:00
< div class = " form-group " >
2023-04-04 16:06:05 +00:00
< div class = " flex flex-col mb-3 " >
< label for = " pteroID " > Pterodactyl User ID </ label >
< input id = " pteroID " name = " pteroID " type = " text " required value = " 1 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
< span class = " text-neutral-400 " > Found in the users - list on your pterodactyl dashboard </ span >
2023-03-29 23:10:55 +00:00
</ div >
</ div >
2023-04-04 16:06:05 +00:00
2023-03-29 23:10:55 +00:00
< div class = " form-group " >
2023-04-04 16:06:05 +00:00
< div class = " flex flex-col mb-3 " >
< label for = " pass " > Password </ label >
< input id = " pass " name = " pass " type = " password " required value = " " minlength = " 8 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
< span class = " text-neutral-400 " > This will be your new pterodactyl password aswell !</ span >
2023-03-29 23:10:55 +00:00
</ div >
</ div >
< div class = " form-group " >
2023-04-04 16:06:05 +00:00
< div class = " flex flex-col " >
< label for = " repass " > Confirm Password </ label >
< input id = " repass " name = " repass " type = " password " required value = " " minlength = " 8 " class = " px-2 py-1 bg-[#1D2125] border-2 focus:border-sky-500 box-border rounded-md border-transparent outline-none " >
2022-01-12 07:08:14 +00:00
</ div >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
</ div >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< div class = " w-full flex justify-center " >
< button class = " w-1/3 min-w-fit mt-2 px-4 py-2 font-bold rounded-md bg-sky-500 hover:bg-sky-600 shadow-sky-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-sky-500 " name = " createUser " > Submit </ button >
</ div >
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
</ form >
2023-03-29 23:10:55 +00:00
</ div >
2023-04-04 16:06:05 +00:00
< ? php
}
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
// Install Finished
if ( isset ( $_GET [ 'step' ]) && $_GET [ 'step' ] == 7 ) {
$lockfile = fopen ( '../../install.lock' , 'w' ) or exit ( 'Unable to open file!' );
fwrite ( $lockfile , 'locked' );
fclose ( $lockfile );
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
echo cardStart ( $title = " Installation Complete! " , $subtitle = " You may navigate to your Dashboard now and log in! " );
?>
2023-03-29 23:10:55 +00:00
2023-04-04 16:06:05 +00:00
< a href = " <?php echo getenv('APP_URL'); ?> " class = " w-full flex justify-center " >
< button class = " mt-2 px-4 py-2 font-bold rounded-md bg-green-500/90 hover:bg-green-600 shadow-green-400 focus:outline-2 focus:outline focus:outline-offset-2 focus:outline-green-500 " > Lets
Go !</ button >
</ a >
2022-01-11 18:54:32 +00:00
2023-04-04 16:06:05 +00:00
</ div >
</ div >
< ? php
}
?>
2022-01-11 18:54:32 +00:00
</ body >
2023-04-04 16:06:05 +00:00
</ html >