123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- <?php
- use DevCoder\DotEnv;
- use PHPMailer\PHPMailer\Exception;
- use PHPMailer\PHPMailer\PHPMailer;
- require 'dotenv.php';
- require 'phpmailer/Exception.php';
- require 'phpmailer/PHPMailer.php';
- require 'phpmailer/SMTP.php';
- (new DotEnv(dirname(__FILE__, 3).'/.env'))->load();
- include 'functions.php';
- if (isset($_POST['checkDB'])) {
- $values = [
- //SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form)
- 'DB_HOST' => 'databasehost',
- 'DB_DATABASE' => 'database',
- 'DB_USERNAME' => 'databaseuser',
- 'DB_PASSWORD' => 'databaseuserpass',
- 'DB_PORT' => 'databaseport',
- 'DB_CONNECTION' => 'databasedriver',
- ];
- $db = new mysqli($_POST['databasehost'], $_POST['databaseuser'], $_POST['databaseuserpass'], $_POST['database'], $_POST['databaseport']);
- if ($db->connect_error) {
- wh_log($db->connect_error);
- header('LOCATION: index.php?step=2&message=Could not connect to the Database');
- exit();
- }
- foreach ($values as $key => $value) {
- $param = $_POST[$value];
- // if ($key == "DB_PASSWORD") {
- // $param = '"' . $_POST[$value] . '"';
- // }
- setEnvironmentValue($key, $param);
- }
- header('LOCATION: index.php?step=2.5');
- }
- if (isset($_POST['checkGeneral'])) {
- $appname = '"'.$_POST['name'].'"';
- $appurl = $_POST['url'];
- if (substr($appurl, -1) === '/') {
- $appurl = substr_replace($appurl, '', -1);
- }
- setEnvironmentValue('APP_NAME', $appname);
- setEnvironmentValue('APP_URL', $appurl);
- header('LOCATION: index.php?step=4');
- }
- if (isset($_POST['feedDB'])) {
- $logs = '';
- //$logs .= run_console(putenv('COMPOSER_HOME=' . dirname(__FILE__, 3) . '/vendor/bin/composer'));
- //$logs .= run_console('composer install --no-dev --optimize-autoloader');
- $logs .= run_console('php artisan migrate --seed --force');
- $logs .= run_console('php artisan db:seed --class=ExampleItemsSeeder --force');
- if (strpos(getEnvironmentValue('APP_KEY'), 'base64') === false) {
- $logs .= run_console('php artisan key:generate --force');
- } else {
- $logs .= "Key already exists. Skipping\n";
- }
- $logs .= run_console('php artisan storage:link');
- wh_log($logs);
- if (strpos(getEnvironmentValue('APP_KEY'), 'base64') !== false) {
- header('LOCATION: index.php?step=3');
- } else {
- header('LOCATION: index.php?step=2.5&message=There was an error. Please check the .txt file in /var/www/controlpanel/public/install/logs !');
- }
- }
- if (isset($_POST['checkSMTP'])) {
- try {
- $mail = new PHPMailer(true);
- //Server settings
- $mail->isSMTP(); // Send using SMTP
- $mail->Host = $_POST['host']; // Set the SMTP server to send through
- $mail->SMTPAuth = true; // Enable SMTP authentication
- $mail->Username = $_POST['user']; // SMTP username
- $mail->Password = $_POST['pass']; // SMTP password
- $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
- $mail->Port = $_POST['port']; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS`
- //Recipients
- $mail->setFrom($_POST['user'], $_POST['user']);
- $mail->addAddress($_POST['user'], $_POST['user']); // Add a recipient
- // Content
- $mail->isHTML(true); // Set email format to HTML
- $mail->Subject = 'It Worked!';
- $mail->Body = 'Your E-Mail Settings are correct!';
- $mail->send();
- } catch (Exception $e) {
- header('LOCATION: index.php?step=4&message=Something wasnt right when sending the E-Mail!');
- exit();
- }
- $db = new mysqli(getEnvironmentValue('DB_HOST'), getEnvironmentValue('DB_USERNAME'), getEnvironmentValue('DB_PASSWORD'), getEnvironmentValue('DB_DATABASE'), getEnvironmentValue('DB_PORT'));
- if ($db->connect_error) {
- wh_log($db->connect_error);
- header('LOCATION: index.php?step=4&message=Could not connect to the Database: ');
- exit();
- }
- $values = [
- 'SETTINGS::MAIL:MAILER' => $_POST['method'],
- 'SETTINGS::MAIL:HOST' => $_POST['host'],
- 'SETTINGS::MAIL:PORT' => $_POST['port'],
- 'SETTINGS::MAIL:USERNAME' => $_POST['user'],
- 'SETTINGS::MAIL:PASSWORD' => $_POST['pass'],
- 'SETTINGS::MAIL:ENCRYPTION' => $_POST['encryption'],
- 'SETTINGS::MAIL:FROM_ADDRESS' => $_POST['user'],
- ];
- foreach ($values as $key => $value) {
- $query = 'UPDATE `'.getEnvironmentValue('DB_DATABASE')."`.`settings` SET `value` = '$value' WHERE (`key` = '$key')";
- $db->query($query);
- }
- header('LOCATION: index.php?step=5');
- }
- if (isset($_POST['checkPtero'])) {
- $url = $_POST['url'];
- $key = $_POST['key'];
- $clientkey = $_POST['clientkey'];
- if (substr($url, -1) === '/') {
- $url = substr_replace($url, '', -1);
- }
- $callpteroURL = $url.'/api/client/account';
- $call = curl_init();
- curl_setopt($call, CURLOPT_URL, $callpteroURL);
- curl_setopt($call, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($call, CURLOPT_HTTPHEADER, [
- 'Accept: application/json',
- 'Content-Type: application/json',
- 'Authorization: Bearer '.$clientkey,
- ]);
- $callresponse = curl_exec($call);
- $callresult = json_decode($callresponse, true);
- curl_close($call); // Close the connection
- $pteroURL = $url.'/api/application/users';
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $pteroURL);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HTTPHEADER, [
- 'Accept: application/json',
- 'Content-Type: application/json',
- 'Authorization: Bearer '.$key,
- ]);
- $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!');
- wh_log('API CALL ERROR: '.$result['errors'][0]['code']);
- exit();
- } elseif (! is_array($callresult) or in_array($result['errors'][0]['code'], $result) or $callresult['attributes']['admin'] == false) {
- header('LOCATION: index.php?step=5&message=Your ClientAPI Key is wrong or the account is not an admin!');
- wh_log('API CALL ERROR: '.$result['errors'][0]['code']);
- exit();
- } else {
- $query1 = 'UPDATE `'.getEnvironmentValue('DB_DATABASE')."`.`settings` SET `value` = '$url' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:URL')";
- $query2 = 'UPDATE `'.getEnvironmentValue('DB_DATABASE')."`.`settings` SET `value` = '$key' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN')";
- $query3 = 'UPDATE `'.getEnvironmentValue('DB_DATABASE')."`.`settings` SET `value` = '$clientkey' WHERE (`key` = 'SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN')";
- $db = new mysqli(getEnvironmentValue('DB_HOST'), getEnvironmentValue('DB_USERNAME'), getEnvironmentValue('DB_PASSWORD'), getEnvironmentValue('DB_DATABASE'), getEnvironmentValue('DB_PORT'));
- if ($db->connect_error) {
- wh_log($db->connect_error);
- header('LOCATION: index.php?step=5&message=Could not connect to the Database');
- exit();
- }
- if ($db->query($query1) && $db->query($query2) && $db->query($query3)) {
- header('LOCATION: index.php?step=6');
- } else {
- wh_log($db->error);
- header('LOCATION: index.php?step=5&message=Something went wrong when communicating with the Database!');
- }
- }
- }
- if (isset($_POST['createUser'])) {
- $db = new mysqli(getEnvironmentValue('DB_HOST'), getEnvironmentValue('DB_USERNAME'), getEnvironmentValue('DB_PASSWORD'), getEnvironmentValue('DB_DATABASE'), getEnvironmentValue('DB_PORT'));
- if ($db->connect_error) {
- wh_log($db->connect_error);
- header('LOCATION: index.php?step=6&message=Could not connect to the Database');
- exit();
- }
- $pteroID = $_POST['pteroID'];
- $pass = $_POST['pass'];
- $repass = $_POST['repass'];
- $key = $db->query('SELECT `value` FROM `'.getEnvironmentValue('DB_DATABASE')."`.`settings` WHERE `key` = 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN'")->fetch_assoc();
- $pterobaseurl = $db->query('SELECT `value` FROM `'.getEnvironmentValue('DB_DATABASE')."`.`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, [
- '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']) {
- header('LOCATION: index.php?step=6&message=Could not find the user with pterodactyl ID '.$pteroID);
- exit();
- }
- if ($pass !== $repass) {
- header('LOCATION: index.php?step=6&message=The Passwords did not match!');
- exit();
- }
- $mail = $result['attributes']['email'];
- $name = $result['attributes']['username'];
- $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, [
- 'Accept: application/json',
- 'Content-Type: application/json',
- 'Authorization: Bearer '.$key['value'],
- ]);
- curl_setopt($ch, CURLOPT_POSTFIELDS, [
- '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!');
- exit();
- }
- $random = generateRandomString();
- $query1 = 'INSERT INTO `'.getEnvironmentValue('DB_DATABASE')."`.`users` (`name`, `role`, `credits`, `server_limit`, `pterodactyl_id`, `email`, `password`, `created_at`, `referral_code`) VALUES ('$name', 'admin', '250', '1', '$pteroID', '$mail', '$pass', CURRENT_TIMESTAMP, '$random')";
- if ($db->query($query1)) {
- wh_log('[USER MAKER] Created user with Email '.$mail.' and pterodactyl ID '.$pteroID);
- header('LOCATION: index.php?step=7');
- } else {
- wh_log($db->error);
- header('LOCATION: index.php?step=6&message=Something went wrong when communicating with the Database');
- }
- }
|