formatting and user creating

This commit is contained in:
1day2die 2022-01-11 19:54:32 +01:00
parent f589f26e23
commit 2218ec21a5
4 changed files with 710 additions and 504 deletions

1
.gitignore vendored
View file

@ -21,3 +21,4 @@ yarn-error.log
storage/invoices.zip storage/invoices.zip
storage/app/public/logo.png storage/app/public/logo.png
*vscode *vscode
- Kopie.env

View file

@ -1,20 +1,20 @@
<?php <?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
use DevCoder\DotEnv;
require 'dotenv.php'; use DevCoder\DotEnv;
require 'phpmailer/Exception.php'; use PHPMailer\PHPMailer\Exception;
require 'phpmailer/PHPMailer.php'; use PHPMailer\PHPMailer\PHPMailer;
require 'phpmailer/SMTP.php';
require 'dotenv.php';
require 'phpmailer/Exception.php';
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
(new DotEnv(dirname(__FILE__,3)."/.env"))->load(); (new DotEnv(dirname(__FILE__, 3) . "/.env"))->load();
include("functions.php"); include("functions.php");
if(isset($_POST['checkDB'])){ if (isset($_POST['checkDB'])) {
$values = [ $values = [
//SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form) //SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form)
@ -27,7 +27,6 @@ if(isset($_POST['checkDB'])){
]; ];
$db = new mysqli($_POST["databasehost"], $_POST["databaseuser"], $_POST["databaseuserpass"], $_POST["database"], $_POST["databaseport"]); $db = new mysqli($_POST["databasehost"], $_POST["databaseuser"], $_POST["databaseuserpass"], $_POST["database"], $_POST["databaseport"]);
if ($db->connect_error) { if ($db->connect_error) {
header("LOCATION: index.php?step=2&message=Could not connect to the Database"); header("LOCATION: index.php?step=2&message=Could not connect to the Database");
@ -40,28 +39,29 @@ if(isset($_POST['checkDB'])){
} }
header("LOCATION: index.php?step=3"); header("LOCATION: index.php?step=3");
}
if (isset($_POST['checkGeneral'])) {
$appname = '"' . $_POST['name'] . '"';
$appurl = $_POST['url'];
if (substr($appurl, -1) === "/") {
$appurl = substr_replace($appurl, "", -1);
} }
if(isset($_POST['checkGeneral'])){ setEnvironmentValue("APP_NAME", $appname);
setEnvironmentValue("APP_URL", $url);
$values = [
//SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form)
"APP_NAME" => "name",
"APP_URL" => "url"
];
foreach ($values as $key => $value) {
$param = $_POST[$value];
setEnvironmentValue($key, $param);
}
header("LOCATION: index.php?step=4"); header("LOCATION: index.php?step=4");
} }
if(isset($_POST['checkSMTP'])){ if (isset($_POST['checkSMTP'])) {
try{ try {
$mail = new PHPMailer(true); $mail = new PHPMailer(true);
//Server settings //Server settings
@ -84,7 +84,7 @@ if(isset($_POST['checkSMTP'])){
$mail->send(); $mail->send();
}catch (Exception $e){ } catch (Exception $e) {
header("LOCATION: index.php?step=4&message=Something wasnt right when sending the E-Mail!"); header("LOCATION: index.php?step=4&message=Something wasnt right when sending the E-Mail!");
die(); die();
} }
@ -107,19 +107,18 @@ if(isset($_POST['checkSMTP'])){
header("LOCATION: index.php?step=5"); header("LOCATION: index.php?step=5");
}
} if (isset($_POST['checkPtero'])) {
if(isset($_POST['checkPtero'])){
$url = $_POST['url']; $url = $_POST['url'];
$key = $_POST['key']; $key = $_POST['key'];
if(substr($url, -1)==="/"){ if (substr($url, -1) === "/") {
$url = substr_replace($url ,"", -1); $url = substr_replace($url, "", -1);
} }
$pteroURL = $url."/api/application/users"; $pteroURL = $url . "/api/application/users";
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $pteroURL); curl_setopt($ch, CURLOPT_URL, $pteroURL);
@ -134,12 +133,12 @@ if(isset($_POST['checkPtero'])){
curl_close($ch); // Close the connection curl_close($ch); // Close the connection
if(!is_array($result) or in_array($result["errors"][0]["code"],$result)){ if (!is_array($result) or in_array($result["errors"][0]["code"], $result)) {
header("LOCATION: index.php?step=5&message=Couldnt connect to Pterodactyl. Make sure your API key has all read and write permissions!"); header("LOCATION: index.php?step=5&message=Couldnt connect to Pterodactyl. Make sure your API key has all read and write permissions!");
die(); die();
}else{ } else {
$query1= "UPDATE `dashboard`.`settings` SET `value` = '$url' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:URL')"; $query1 = "UPDATE `dashboard`.`settings` SET `value` = '$url' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:URL')";
$query2= "UPDATE `dashboard`.`settings` SET `value` = '$key' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN')"; $query2 = "UPDATE `dashboard`.`settings` SET `value` = '$key' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN')";
$db = new mysqli(getenv("DB_HOST"), getenv("DB_USERNAME"), getenv("DB_PASSWORD"), getenv("DB_DATABASE"), getenv("DB_PORT")); $db = new mysqli(getenv("DB_HOST"), getenv("DB_USERNAME"), getenv("DB_PASSWORD"), getenv("DB_DATABASE"), getenv("DB_PORT"));
if ($db->connect_error) { if ($db->connect_error) {
@ -147,15 +146,97 @@ if(isset($_POST['checkPtero'])){
die(); die();
} }
if($db->query($query1) && $db->query($query2)){ if ($db->query($query1) && $db->query($query2)) {
header("LOCATION: index.php?step=6"); header("LOCATION: index.php?step=6");
}else{ } else {
header("LOCATION: index.php?step=5&message=Something went wrong when communicating with the Database!"); header("LOCATION: index.php?step=5&message=Something went wrong when communicating with the Database!");
} }
} }
}
if (isset($_POST['createUser'])) {
$db = new mysqli(getenv("DB_HOST"), getenv("DB_USERNAME"), getenv("DB_PASSWORD"), getenv("DB_DATABASE"), getenv("DB_PORT"));
if ($db->connect_error) {
header("LOCATION: index.php?step=6&message=Could not connect to the Database");
die();
} }
$name = $_POST['user'];
$mail = $_POST['email'];
$pteroID = $_POST['pteroID'];
$pass = $_POST['pass'];
$repass = $_POST['repass'];
$key = $db->query("SELECT `value` FROM dashboard.settings WHERE `key` = 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN'")->fetch_assoc();
$pterobaseurl = $db->query("SELECT `value` FROM dashboard.settings WHERE `key` = 'SETTINGS::SYSTEM:PTERODACTYL:URL'")->fetch_assoc();
$pteroURL = $pterobaseurl["value"] . "/api/application/users/" . $pteroID;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $pteroURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Accept: application/json",
"Content-Type: application/json",
"Authorization: Bearer " . $key["value"]
));
$response = curl_exec($ch);
$result = json_decode($response, true);
curl_close($ch); // Close the connection
if ($result["attributes"]["email"] !== $mail) {
header("LOCATION: index.php?step=6&message=The Email is not the same as the one used on Pterodactyl");
die();
}
if ($pass !== $repass) {
header("LOCATION: index.php?step=6&message=The Passwords did not match!");
die();
}
$pass = password_hash($pass, PASSWORD_DEFAULT);
$pteroURL = $pterobaseurl["value"] . "/api/application/users/" . $pteroID;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $pteroURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Accept: application/json",
"Content-Type: application/json",
"Authorization: Bearer " . $key["value"]
));
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"email" => $mail,
"username" => $name,
"first_name" => $name,
"last_name" => $name,
"password" => $pass
));
$response = curl_exec($ch);
$result = json_decode($response, true);
curl_close($ch); // Close the connection
if (!is_array($result) or in_array($result["errors"][0]["code"], $result)) {
header("LOCATION: index.php?step=5&message=Couldnt connect to Pterodactyl. Make sure your API key has all read and write permissions!");
die();
}
$query1 = "INSERT INTO `dashboard`.`users` (`name`, `role`, `credits`, `server_limit`, `pterodactyl_id`, `email`, `password`) VALUES ('$name', 'admin', '250', '1', '$pteroID', '$mail', '$pass')";
if ($db->query($query1)) {
header("LOCATION: index.php?step=7");
} else {
header("LOCATION: index.php?step=6&message=Something went wrong when communicating with the Database!");
}
}
?> ?>

View file

@ -1,24 +1,26 @@
<?php <?php
$required_extentions=array("openssl","gd","mysql","PDO","mbstring","tokenizer","bcmath","xml","curl","zip","fpm"); $required_extentions = array("openssl", "gd", "mysql", "PDO", "mbstring", "tokenizer", "bcmath", "xml", "curl", "zip", "fpm");
$requirements = [ $requirements = [
"php"=> "7.4", "php" => "7.4",
"mysql"=>"5.7.22", "mysql" => "5.7.22",
]; ];
function checkPhpVersion(){ function checkPhpVersion()
{
global $requirements; global $requirements;
if (version_compare(phpversion(), $requirements["php"], '>=')){ if (version_compare(phpversion(), $requirements["php"], '>=')) {
return "OK"; return "OK";
} }
return "not OK"; return "not OK";
} }
function getMySQLVersion() { function getMySQLVersion()
{
global $requirements; global $requirements;
$output = shell_exec('mysql -V'); $output = shell_exec('mysql -V');
@ -26,10 +28,11 @@ function getMySQLVersion() {
$versionoutput = $version[0] ?? "0"; $versionoutput = $version[0] ?? "0";
return (intval($versionoutput) > intval($requirements["mysql"]) ? "OK":$versionoutput);; return (intval($versionoutput) > intval($requirements["mysql"]) ? "OK" : $versionoutput);
} }
function getZipVersion() { function getZipVersion()
{
global $requirements; global $requirements;
$output = shell_exec('zip -v'); $output = shell_exec('zip -v');
@ -37,10 +40,11 @@ function getZipVersion() {
$versionoutput = $version[0] ?? 0; $versionoutput = $version[0] ?? 0;
return ($versionoutput!=0 ? "OK":"not OK");; return ($versionoutput != 0 ? "OK" : "not OK");
} }
function getGitVersion() { function getGitVersion()
{
global $requirements; global $requirements;
$output = shell_exec('git --version'); $output = shell_exec('git --version');
@ -48,10 +52,11 @@ function getGitVersion() {
$versionoutput = $version[0] ?? 0; $versionoutput = $version[0] ?? 0;
return ($versionoutput!=0 ? "OK":"not OK");; return ($versionoutput != 0 ? "OK" : "not OK");
} }
function getTarVersion() { function getTarVersion()
{
global $requirements; global $requirements;
$output = shell_exec('tar --version'); $output = shell_exec('tar --version');
@ -59,28 +64,29 @@ function getTarVersion() {
$versionoutput = $version[0] ?? 0; $versionoutput = $version[0] ?? 0;
return ($versionoutput!=0 ? "OK":"not OK");; return ($versionoutput != 0 ? "OK" : "not OK");
} }
function checkExtensions(){ function checkExtensions()
{
global $required_extentions; global $required_extentions;
$not_ok = []; $not_ok = [];
$extentions = get_loaded_extensions(); $extentions = get_loaded_extensions();
foreach($required_extentions as $ext){ foreach ($required_extentions as $ext) {
if(!in_array($ext,$extentions)){ if (!in_array($ext, $extentions)) {
array_push($not_ok,$ext); array_push($not_ok, $ext);
} }
} }
return $not_ok; return $not_ok;
} }
function setEnvironmentValue($envKey, $envValue) function setEnvironmentValue($envKey, $envValue)
{ {
$envFile = dirname(__FILE__,3)."/.env"; $envFile = dirname(__FILE__, 3) . "/.env";
$str = file_get_contents($envFile); $str = file_get_contents($envFile);
$str .= "\n"; // In case the searched variable is in the last line without \n $str .= "\n"; // In case the searched variable is in the last line without \n
@ -93,8 +99,7 @@ function checkExtensions(){
$fp = fopen($envFile, 'w'); $fp = fopen($envFile, 'w');
fwrite($fp, $str); fwrite($fp, $str);
fclose($fp); fclose($fp);
} }
?> ?>

View file

@ -1,17 +1,20 @@
<?php <?php
include ("functions.php"); include("functions.php");
if (file_exists("install.lock")){ if (file_exists("install.lock")) {
die("The installation has been completed already. Please delete the File 'install.lock' to re-run"); die("The installation has been completed already. Please delete the File 'install.lock' to re-run");
} }
?> ?>
<html> <html>
<head> <head>
<title>Controlpanel.gg installer Script</title> <title>Controlpanel.gg installer Script</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<style> <style>
body {background-color: powderblue;} body {
background-color: powderblue;
}
.card { .card {
position: absolute; position: absolute;
@ -20,50 +23,66 @@ if (file_exists("install.lock")){
margin-right: -50%; margin-right: -50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
.ok{
.ok {
color: green; color: green;
} }
.ok::before{
.ok::before {
content: "✔️"; content: "✔️";
} }
.notok{
.notok {
color: red; color: red;
} }
.notok::before{
.notok::before {
content: ""; content: "";
} }
</style> </style>
</head> </head>
<body> <body>
<?php if(!isset($_GET['step'])){ ?> <?php if (!isset($_GET['step'])) { ?>
<div class="card card-outline card-primary"> <div class="card card-outline card-primary">
<div class="card-header text-center"> <div class="card-header text-center">
<b class="mr-1">Controlpanel.GG</b> <b class="mr-1">Controlpanel.GG</b>
</div> </div>
<div class="card-body"> <div class="card-body">
<p class="login-box-msg">This installer will lead you through the most crucial Steps of Controlpanel.gg`s setup</p> <p class="login-box-msg">This installer will lead you through the most crucial Steps of Controlpanel.gg`s
setup</p>
<p class="<?php print(checkPhpVersion()==="OK"?"ok":"notok");?>"> php version: <?php echo phpversion();?> (required <?php echo $requirements["php"];?>)</p> <p class="<?php print(checkPhpVersion() === "OK" ? "ok" : "notok"); ?>"> php
<p class="<?php print(getMySQLVersion()==="OK"?"ok":"notok");?>"> mysql version: <?php echo getMySQLVersion();?> (minimum required <?php echo $requirements["mysql"];?>)</p> version: <?php echo phpversion(); ?> (required <?php echo $requirements["php"]; ?>)</p>
<p class="<?php print(getMySQLVersion() === "OK" ? "ok" : "notok"); ?>"> mysql
version: <?php echo getMySQLVersion(); ?> (minimum required <?php echo $requirements["mysql"]; ?>)</p>
<p class="<?php print(sizeof(checkExtensions()) == 0?"ok":"notok");?>"> Missing extentions: <?php print(sizeof(checkExtensions()) == 0?"None":"");foreach(checkExtensions() as $ext){ echo $ext.", ";};?> (try to install anyway)</p> <p class="<?php print(sizeof(checkExtensions()) == 0 ? "ok" : "notok"); ?>"> Missing
extentions: <?php print(sizeof(checkExtensions()) == 0 ? "None" : "");
foreach (checkExtensions() as $ext) {
echo $ext . ", ";
} ?> (try to install anyway)</p>
<p class="<?php print(getZipVersion()==="OK"?"ok":"notok");?>"> Zip version: <?php echo getZipVersion();?> </p> <p class="<?php print(getZipVersion() === "OK" ? "ok" : "notok"); ?>"> Zip
version: <?php echo getZipVersion(); ?> </p>
<p class="<?php print(getGitVersion()==="OK"?"ok":"notok");?>"> Git version: <?php echo getGitVersion();?> </p> <p class="<?php print(getGitVersion() === "OK" ? "ok" : "notok"); ?>"> Git
version: <?php echo getGitVersion(); ?> </p>
<p class="<?php print(getTarVersion()==="OK"?"ok":"notok");?>"> Tar version: <?php echo getTarVersion();?> </p> <p class="<?php print(getTarVersion() === "OK" ? "ok" : "notok"); ?>"> Tar
version: <?php echo getTarVersion(); ?> </p>
<a href="?step=2"><button class="btn btn-primary">Lets go</button></a> <a href="?step=2">
<button class="btn btn-primary">Lets go</button>
</a>
</div> </div>
</div> </div>
<?php <?php
} }
if (isset($_GET['step']) && $_GET['step']==2){ if (isset($_GET['step']) && $_GET['step'] == 2) {
?> ?>
@ -74,8 +93,8 @@ if (isset($_GET['step']) && $_GET['step']==2){
<div class="card-body"> <div class="card-body">
<p class="login-box-msg">Lets start with your Database</p> <p class="login-box-msg">Lets start with your Database</p>
<?php if(isset($_GET['message'])){ <?php if (isset($_GET['message'])) {
echo "<p class='notok'>".$_GET['message']."</p>"; echo "<p class='notok'>" . $_GET['message'] . "</p>";
} }
?> ?>
@ -146,10 +165,7 @@ if (isset($_GET['step']) && $_GET['step']==2){
} }
if (isset($_GET['step']) && $_GET['step'] == 3) {
if (isset($_GET['step']) && $_GET['step']==3){
?> ?>
@ -160,8 +176,8 @@ if (isset($_GET['step']) && $_GET['step']==3){
<div class="card-body"> <div class="card-body">
<p class="login-box-msg">Tell us something about your Host</p> <p class="login-box-msg">Tell us something about your Host</p>
<?php if(isset($_GET['message'])){ <?php if (isset($_GET['message'])) {
echo "<p class='notok'>".$_GET['message']."</p>"; echo "<p class='notok'>" . $_GET['message'] . "</p>";
} }
?> ?>
@ -199,7 +215,7 @@ if (isset($_GET['step']) && $_GET['step']==3){
</div> </div>
<?php <?php
} }
if (isset($_GET['step']) && $_GET['step']==4){ if (isset($_GET['step']) && $_GET['step'] == 4) {
?> ?>
@ -211,8 +227,8 @@ if (isset($_GET['step']) && $_GET['step']==4){
<div class="card-body"> <div class="card-body">
<p class="login-box-msg">Lets get your E-Mails going! </p> <p class="login-box-msg">Lets get your E-Mails going! </p>
<p class="login-box-msg">This might take a few seconds when submitted! </p> <p class="login-box-msg">This might take a few seconds when submitted! </p>
<?php if(isset($_GET['message'])){ <?php if (isset($_GET['message'])) {
echo "<p class='notok'>".$_GET['message']."</p>"; echo "<p class='notok'>" . $_GET['message'] . "</p>";
} }
?> ?>
@ -286,8 +302,8 @@ if (isset($_GET['step']) && $_GET['step']==4){
</div> </div>
<?php <?php
} }
if (isset($_GET['step']) && $_GET['step']==5){ if (isset($_GET['step']) && $_GET['step'] == 5) {
if (isset($_GET['exec'])){ if (isset($_GET['exec'])) {
shell_exec('php artisan migrate --seed --force'); shell_exec('php artisan migrate --seed --force');
} }
@ -301,10 +317,13 @@ if (isset($_GET['step']) && $_GET['step']==5){
<div class="card-body"> <div class="card-body">
<p class="login-box-msg">Almost done! </p> <p class="login-box-msg">Almost done! </p>
<p class="login-box-msg">Lets get some info about your Pterodactyl Installation!</p> <p class="login-box-msg">Lets get some info about your Pterodactyl Installation!</p>
<p class="login-box-msg">Before this Step make sure you ran <b>php artisan migrate --seed --force</b> in your Linux Terminal!</p> <p class="login-box-msg">Before this Step make sure you ran <b>php artisan migrate --seed --force</b> in
<a href="?step=5&exec"><button class="btn btn-success">You can also try to click here</button></a> your Linux Terminal!</p>
<?php if(isset($_GET['message'])){ <a href="?step=5&exec">
echo "<p class='notok'>".$_GET['message']."</p>"; <button class="btn btn-success">You can also try to click here</button>
</a>
<?php if (isset($_GET['message'])) {
echo "<p class='notok'>" . $_GET['message'] . "</p>";
} }
?> ?>
@ -318,7 +337,7 @@ if (isset($_GET['step']) && $_GET['step']==5){
<label for="url">Pterodactyl URL</label> <label for="url">Pterodactyl URL</label>
<input id="url" name="url" <input id="url" name="url"
type="text" required type="text" required
value="" class="form-control"> value="https://ptero.example.com" class="form-control">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -326,7 +345,8 @@ if (isset($_GET['step']) && $_GET['step']==5){
<label for="key">Pterodactyl API-Key</label> <label for="key">Pterodactyl API-Key</label>
<input id="key" name="key" type="text" <input id="key" name="key" type="text"
required required
value="" class="form-control" placeholder="The Key needs ALL read&write Permissions!"> value="" class="form-control"
placeholder="The Key needs ALL read&write Permissions!">
</div> </div>
</div> </div>
@ -338,6 +358,104 @@ if (isset($_GET['step']) && $_GET['step']==5){
</div> </div>
</div>
</div>
<?php
}
if (isset($_GET['step']) && $_GET['step'] == 6) {
?>
<div class="card card-outline card-primary">
<div class="card-header text-center">
<b class="mr-1">Controlpanel.GG</b>
</div>
<div class="card-body">
<p class="login-box-msg">Lets create yourself!</p>
<p class="login-box-msg">We're making the first Admin user</p>
<?php if (isset($_GET['message'])) {
echo "<p class='notok'>" . $_GET['message'] . "</p>";
}
?>
<form method="POST" enctype="multipart/form-data" class="mb-3"
action="/install/forms.php" name="createUser">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="custom-control mb-3">
<label for="user">Your Username</label>
<input id="user" name="user"
type="text" required
value="" class="form-control">
</div>
</div>
<div class="form-group">
<div class="custom-control mb-3">
<label for="email">Your Email Adress (used to Login)</label>
<input id="email" name="email"
type="text" required
value="" class="form-control">
</div>
</div>
<div class="form-group">
<div class="custom-control mb-3">
<label for="pass">Password</label>
<input id="pass" name="pass" type="password"
required
value="" class="form-control">
</div>
</div>
<div class="form-group">
<div class="custom-control mb-3">
<label for="repass">Retype Pass</label>
<input id="repass" name="repass" type="password"
required
value="" class="form-control">
</div>
</div>
<div class="form-group">
<div class="custom-control mb-3">
<label for="repass">Your Pterodactyl User-ID</label>
<input id="pteroID" name="pteroID" type="text"
required
value="" class="form-control">
</div>
</div>
</div>
<button class="btn btn-primary" name="createUser">Submit</button>
</div>
</div>
</div>
</div>
<?php
}
if (isset($_GET['step']) && $_GET['step'] == 7) {
?>
<div class="card card-outline card-primary">
<div class="card-header text-center">
<b class="mr-1">Controlpanel.GG</b>
</div>
<div class="card-body">
<p class="login-box-msg">All done!</p>
<p class="login-box-msg">You may navigate to your Dashboard now and log in!</p>
<a href="<?php echo "https://" . $_SERVER['SERVER_NAME']; ?>">
<button class="btn btn-success">Lets go!</button>
</a>
</div>
</div> </div>
</div> </div>
<?php <?php
@ -345,7 +463,8 @@ if (isset($_GET['step']) && $_GET['step']==5){
?> ?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
</body> crossorigin="anonymous"></script>
</body>
</html> </html>