*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see .
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe .
*/
ini_set('display_errors', 1);
error_reporting(E_ALL|E_STRICT);
define('EASYWIDIR', dirname(dirname(__FILE__)));
class UpdateResponse {
public $response = '';
function __construct() {
$this->response = '';
}
function add ($newtext) {
$this->response .= $newtext;
}
function __destruct() {
unset($this->response);
}
}
require_once(EASYWIDIR . '/stuff/methods/functions.php');
require_once(EASYWIDIR . '/stuff/methods/vorlage.php');
$currentStep = (isset($_GET['step']) and $_GET['step'] > 0 and $_GET['step'] < 10) ? (int) $_GET['step'] : 0;
$developer = (isset($_GET['developer']) and $_GET['developer'] == 'Y') ? 'Y' : 'N';
$developerGetParameter = '&developer=' . $developer;
$progressPercent = (100 / 9) * $currentStep ;
$acceptLanguage = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0 , 2));
$fallbackLanguage = (file_exists(EASYWIDIR . '/install/languages/' . $acceptLanguage . '.xml')) ? $acceptLanguage : 'en';
$menuLanguage = (isset($_GET['language']) and strlen($_GET['language']) == 2 and file_exists(EASYWIDIR . '/install/languages/' . $_GET['language'] . '.xml')) ? $_GET['language'] : $fallbackLanguage;
$languageGetParameter = '&language=' . $menuLanguage;
$languageObject = simplexml_load_file(EASYWIDIR . '/install/languages/' . $menuLanguage . '.xml');
$displayToUser = '';
$systemCheckOk = array();
$systemCheckError = array();
$easyWiVersion = ($developer == 'Y') ? '6.2.2' : '6.2.2';
if ($currentStep == 0) {
$selectedDeveloper = ($developer == 'Y') ? "selected='selected'" : '';
$apiResponse = webhostRequest('api.github.com', $_SERVER['HTTP_HOST'], '/repos/easy-wi/developer/' . (($developer == 'Y') ? 'tags' : 'releases/latest'), null, 443);
$json = @json_decode($apiResponse);
$displayToUser = "
";
if (!$json or ($developer == 'N' and !is_object($json)) or ($developer == 'Y' and !is_array($json)) or ($developer == 'N' and property_exists($json, 'tag_name') and $easyWiVersion == $json->tag_name) or ($developer == 'Y' and is_object($json[0]) and property_exists($json[0], 'name') and $easyWiVersion == $json[0]->name )) {
$displayToUser .= "{$languageObject->welcome_header} {$languageObject->welcome_text}
";
} else {
$apiVersion = ($developer == 'Y') ? $json[0]->name : $json->tag_name;
$displayToUser .= "{$languageObject->welcome_header} {$languageObject->welcome_text}
";
}
} else {
if (version_compare(PHP_VERSION, '7.4.0') >= 0) {
$systemCheckOk['php'] = $languageObject->system_ok_php_version . PHP_VERSION;
} else {
$systemCheckError['php'] = $languageObject->error_system_php_version . PHP_VERSION;
}
$modules = array('openssl', 'json', 'hash', 'ftp', 'SimpleXML', 'curl', 'gd', 'PDO', 'pdo_mysql', 'zip');
foreach ($modules as $module) {
if (extension_loaded($module)) {
$okField = "system_ok_$module";
$systemCheckOk[$module] = $languageObject->$okField;
} else {
$errorField = "error_system_$module";
$systemCheckError[$module] = $languageObject->$errorField;
}
}
$functions = array('fopen');
foreach ($functions as $function) {
if (function_exists($function)) {
$okField = "system_ok_$function";
$systemCheckOk[$function] = $languageObject->$okField;
} else {
$errorField = "error_system_$function";
$systemCheckError[$function] = $languageObject->$errorField;
}
}
$folderArray = array(
'css/',
'css/default/',
'images/',
'images/flags',
'images/games/',
'images/games/icons/',
'js/',
'js/default/',
'keys/',
'languages/',
'languages/default/',
'languages/default/de/',
'languages/default/dk/',
'languages/default/uk',
'languages/default/it',
'languages/default/pt',
'languages/default/ru',
'stuff/',
'stuff/admin/',
'stuff/api/',
'stuff/cms/',
'stuff/custom_modules/',
'stuff/jobs/',
'stuff/methods/',
'stuff/user/',
'template/',
'template/default/',
'third_party/',
'tmp/'
);
foreach ($folderArray as $folder) {
if (is_dir(EASYWIDIR . "/{$folder}")) {
$handle = @fopen(EASYWIDIR . "/{$folder}test.txt", "w+");
if ($handle) {
fclose($handle);
unlink(EASYWIDIR . "/{$folder}test.txt");
$systemCheckOk['folders'][] = "{$languageObject->system_check_ok_folder_1} {$folder} {$languageObject->system_check_ok_folder_2}";
} else {
$systemCheckError['folders'][] = "{$languageObject->system_check_error_folder_not_writable_1} {$folder} {$languageObject->system_check_error_folder_not_writable_2}";
}
} else {
$systemCheckError['folders'][] = "{$languageObject->system_check_error_folder_not_exist_1} {$folder} {$languageObject->system_check_error_folder_not_exist_2}";
}
}
}
if ($currentStep == 1) {
if (count($systemCheckError) == 0) {
$displayToUser .= "";
}
foreach ($systemCheckError as $v) {
if (is_array($v)) {
foreach ($v as $v2) {
$displayToUser .= "{$v2}
";
}
} else {
$displayToUser .= "{$v}
";
}
}
foreach ($systemCheckOk as $v) {
if (is_array($v)) {
foreach ($v as $v2) {
$displayToUser .= "{$v2}
";
}
} else {
$displayToUser .= "{$v}
";
}
}
if (count($systemCheckError) == 0) {
$displayToUser .= "";
}
}
if ($currentStep == 2 and count($systemCheckError) == 0) {
$host = 'localhost';
$db = '';
$user = '';
$pwd = '';
$aeskey = passwordgenerate(20);
if (file_exists(EASYWIDIR . '/stuff/config.php')) {
require_once(EASYWIDIR . '/stuff/config.php');
}
if (file_exists(EASYWIDIR . '/stuff/keyphrasefile.php')) {
require_once(EASYWIDIR . '/stuff/keyphrasefile.php');
}
$displayToUser = "
";
} else if ($currentStep > 2 and count($systemCheckError) == 0) {
if ($currentStep == 3 and isset($_POST['db'])) {
try {
$sql = new PDO("mysql:host={$_POST['host']};dbname={$_POST['db']}", $_POST['user'], $_POST['pwd'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$configFp = @fopen(EASYWIDIR . '/stuff/config.php', "w+");
if ($configFp) {
$configdata = "{$languageObject->error_config_php_data}";
}
$keyFp = @fopen(EASYWIDIR . '/stuff/keyphrasefile.php', "w+");
if ($keyFp) {
$configdata='{$languageObject->error_keyphrase_php_create}";
}
} catch(PDOException $error) {
$systemCheckError['db_connect'] = "{$error->getMessage()}
";
}
}
if (!isset($sql) ) {
if (file_exists(EASYWIDIR . '/stuff/config.php') and file_exists(EASYWIDIR . '/stuff/keyphrasefile.php')) {
if ($currentStep == 3 and isset($_POST['db'])) {
$displayToUser .= "{$languageObject->ok_files_created}
";
}
require_once(EASYWIDIR . '/stuff/config.php');
require_once(EASYWIDIR . '/stuff/keyphrasefile.php');
if (isset($host) and isset($db) and isset($user) and isset($pwd)) {
try {
$sql = new PDO("mysql:host={$host};dbname={$db}", $user, $pwd, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $error) {
$systemCheckError['db_connect'] = "{$error->getMessage()}
";
}
} else {
$systemCheckError['config.php'] = "{$languageObject->error_config_php_data}
";
}
} else {
if (isset($_POST['db'])) {
$systemCheckError['keyphrasefile.php'] = "{$languageObject->error_keyphrase_php_create}
";
} else {
$systemCheckError['config.php'] = "{$languageObject->error_config_keyphrase_php_missing}
";
}
}
}
}
if ($currentStep == 3 and count($systemCheckError) == 0) {
$displayToUser .= "{$languageObject->ok_files_created}
";
$displayToUser .= "{$languageObject->ok_db_connect}
";
$displayToUser .= "";
}
if ($currentStep == 4 and count($systemCheckError) == 0) {
try {
$response = new UpdateResponse();
require_once(EASYWIDIR . '/stuff/methods/class_tables.php');
$tables = new Tables($db);
$tables->createMissingTables();
foreach($tables->getExecutedSql() as $change){
if ($change) {
$response->add($change . ' ');
}
}
if (strlen($response->response) > 0) {
$displayToUser .= "{$languageObject->ok_db_tables_create}
";
$displayToUser .= "{$response->response}
";
} else {
$displayToUser .= "{$languageObject->ok_db_tables_create}
";
}
$displayToUser .= "";
} catch(PDOException $error) {
$systemCheckError['tables_add.php'] = "{$error->getMessage()}" . implode("\r\n", $tables->getExecutedSql()) . "
";
}
}
if ($currentStep == 5 and count($systemCheckError) == 0) {
try {
$response = new UpdateResponse();
require_once(EASYWIDIR . '/stuff/methods/class_tables.php');
$tables = new Tables($db);
$response->add('Repairing tables if needed. ');
$tables->correctTablesStatus();
$tables->correctExistingTables();
foreach($tables->getExecutedSql() as $change){
$response->add($change . ' ');
}
if (strpos($response->response, 'Error: no such table:') !== false) {
$systemCheckError['tables_repair.php'] = "{$response->response}
";
} else {
if (strlen($response->response) > 0) {
$displayToUser .= "{$languageObject->ok_db_tables_check_repair}
";
$displayToUser .= "{$response->response}
";
} else {
$displayToUser .= "{$languageObject->ok_db_tables_check}
";
}
$displayToUser .= "";
}
} catch(PDOException $error) {
$systemCheckError['tables_repair.php'] = "{$error->getMessage()}
";
}
}
if ($currentStep == 6 and count($systemCheckError) == 0) {
$cname = '';
$email = '';
$query = $sql->prepare("SELECT `cname`,`mail` FROM `userdata` WHERE `id`=1");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$cname = $row['cname'];
$email = $row['mail'];
}
if (isset($_POST['passw1'])) {
if ($_POST['passw1'] != $_POST['passw2']) {
$displayToUser .= "{$languageObject->error_password}
";
}
if (!preg_match('/^[\w\S]{6,120}$/', $_POST['passw1'])) {
$displayToUser .= "{$languageObject->passwords_not_meet_req}
";
}
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$email = $_POST['email'];
} else {
$displayToUser .= "{$languageObject->error_email}
";
}
if (strlen($_POST['cname']) == 0) {
$displayToUser .= "{$languageObject->error_cname}
";
} else {
$cname = $_POST['cname'];
}
}
if (!isset($_POST['passw1']) or strlen($displayToUser) > 0) {
$displayToUser .= "
";
} else {
try {
$query = $sql->prepare("INSERT INTO `userdata` (`id`,`cname`,`mail`,`security`,`accounttype`,`creationTime`,`updateTime`) VALUES (1,?,?,?,'a',NOW(),NOW()) ON DUPLICATE KEY UPDATE `cname`=VALUES(`cname`),`mail`=VALUES(`mail`)");
$query->execute(array($cname, $email, md5($_POST['passw1'])));
$query = $sql->prepare("INSERT INTO `usergroups` (`id`,`defaultgroup`,`name`,`grouptype`,`root`,`miniroot`) VALUES (1,'Y','Admin Default','a','Y','N') ON DUPLICATE KEY UPDATE `id`=VALUES(`id`)");
$query->execute();
$query = $sql->prepare("INSERT INTO `usergroups` (`id`,`defaultgroup`,`name`,`grouptype`,`root`,`miniroot`) VALUES (2,'Y','Reseller Default','r','Y','N') ON DUPLICATE KEY UPDATE `id`=VALUES(`id`)");
$query->execute();
$query = $sql->prepare("INSERT INTO `usergroups` (`id`,`defaultgroup`,`name`,`grouptype`,`root`,`miniroot`) VALUES (3,'Y','User Default','u','N','Y') ON DUPLICATE KEY UPDATE `id`=VALUES(`id`)");
$query->execute();
$query = $sql->prepare("INSERT INTO `userdata_groups` (`userID`,`groupID`) VALUES (1,1) ON DUPLICATE KEY UPDATE `userID`=VALUES(`userID`)");
$query->execute();
$displayToUser .= "{$languageObject->ok_admin_user}
";
$displayToUser .= "";
} catch(PDOException $error) {
$systemCheckError['tables_repair.php'] = "{$error->getMessage()}
";
}
}
}
if ($currentStep == 7 and count($systemCheckError) == 0) {
$languages = array();
$language = '';
$prefix1 = "Y";
$prefix2 = "user";
$faillogins = 5;
$brandname = "by myhost.com";
$selectedCaptcha = '';
$selectedPrefix = '';
$query = $sql->prepare("SELECT `pageurl` FROM `page_settings` WHERE `resellerid`=0");
$query->execute();
$installUrl = (string) $query->fetchColumn();
if (strlen($installUrl) == 0) {
$installUrl = 'http://' . $_SERVER['SERVER_NAME'] . '/';
}
if (strlen($_SERVER['SERVER_NAME']) == 0 and isset($_SERVER['HTTP_REFERER'])) {
$installUrl = str_replace(array('&language=de', '&language=en', '&language=dk'), '', str_replace('install/install.php?step=6', '', $_SERVER['HTTP_REFERER']));
}
while (substr($installUrl, -2) == '//') {
$installUrl = substr($installUrl, 0, strlen($installUrl) -1 );
}
$defaultTimeZone = (@ini_get('date.timezone') != "") ? ini_get('date.timezone') : 'Europe/Berlin';
$query = $sql->prepare("SELECT `mail` FROM `userdata` WHERE `id`=1");
$query->execute();
$email = $query->fetchColumn();
$query = $sql->prepare("SELECT `language`,`prefix1`,`prefix2`,`faillogins`,`brandname` FROM `settings` WHERE `resellerid`=0 LIMIT 1");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$language = $row['language'];
$prefix1 = $row['prefix1'];
$prefix2 = $row['prefix2'];
$faillogins = $row['faillogins'];
$brandname = $row['brandname'];
}
$query = $sql->prepare("SELECT `email_setting_value` FROM `settings_email` WHERE `reseller_id`=0 AND `email_setting_name`='email' LIMIT 1");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$email = $row['email_setting_value'];
}
if (isset($_POST['email'])) {
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$email = $_POST['email'];
} else {
$displayToUser .= "{$languageObject->error_email}
";
}
}
if ($captcha == 1) {
$selectedCaptcha = 'selected="selected"';
}
if ($prefix1 == 'Y') {
$selectedPrefix = 'selected="selected"';
}
if (is_dir(EASYWIDIR . "/languages/default/")){
$dirs = scandir(EASYWIDIR . "/languages/default/");
foreach ($dirs as $row) {
if (preg_match("/^[a-z]{2}+$/", $row)) {
$languages[] = ($row == $menuLanguage) ? "$row " : "$row ";
}
}
}
$languages = implode('', $languages);
if (!isset($_POST['email']) or strlen($displayToUser) > 0) {
$displayToUser .= "
";
} else {
try {
$query = $sql->prepare("INSERT INTO `easywi_statistics_current` (`userID`) VALUES (0) ON DUPLICATE KEY UPDATE `userID`=`userID`");
$query->execute();
$query = $sql->prepare("INSERT INTO `page_settings` (`id`,`pageurl`,`resellerid`) VALUES (1,?,0) ON DUPLICATE KEY UPDATE `pageurl`=VALUES(`pageurl`)");
$query->execute(array($_POST['installUrl']));
$query = $sql->prepare("INSERT INTO `settings` (`id`,`template`,`language`,`prefix1`,`prefix2`,`faillogins`,`brandname`,`developer`,`cronjob_ips`,`imageserver`,`resellerid`) VALUES (1,'default',?,?,?,?,?,?,'','images.easy-wi.com::easy-wi',0) ON DUPLICATE KEY UPDATE `language`=VALUES(`language`),`prefix1`=VALUES(`prefix1`),`prefix2`=VALUES(`prefix2`),`faillogins`=VALUES(`faillogins`),`brandname`=VALUES(`brandname`),`developer`=VALUES(`developer`),`imageserver`=VALUES(`imageserver`)");
$query->execute(array($_POST['language'], $_POST['prefix1'], $_POST['prefix2'], $_POST['faillogins'], $_POST['brandname'], $developer));
$query = $sql->prepare("INSERT INTO `settings_email` (`reseller_id`,`email_setting_name`,`email_setting_value`) VALUES (0,'email',?) ON DUPLICATE KEY UPDATE `email_setting_value`=VALUES(`email_setting_value`)");
$query->execute(array($_POST['email']));
$query = $sql->prepare("INSERT INTO `eac` (`id`,`resellerid`) VALUES (1,0) ON DUPLICATE KEY UPDATE `resellerid`=`resellerid`");
$query->execute();
$query = $sql->prepare("INSERT INTO `lendsettings` (`id`,`resellerid`) VALUES (1,0) ON DUPLICATE KEY UPDATE `resellerid`=`resellerid`");
$query->execute();
$query = $sql->prepare("INSERT INTO `traffic_settings` (`id`,`type`) VALUES (1,'mysql') ON DUPLICATE KEY UPDATE `type`=`type`");
$query->execute();
$query = $sql->prepare("INSERT INTO `easywi_version` (`id`,`version`,`de`,`en`) VALUES (1,'{$easyWiVersion}','','') ON DUPLICATE KEY UPDATE `id`=`id`");
$query->execute();
$query = $sql->prepare("INSERT INTO `page_pages` (`id`,`authorid`,`type`) VALUES (1,0,'about') ON DUPLICATE KEY UPDATE `id`=`id`");
$query->execute();
$query = $sql->prepare("INSERT INTO `feeds_settings` (`settingsID`,`resellerID`) VALUES (1,0) ON DUPLICATE KEY UPDATE `settingsID`=`settingsID`");
$query->execute();
$query = $sql->prepare("INSERT INTO `settings_email_category` (`id`, `name`, `reseller_id`) VALUES (1, 'vServer', 0), (2, 'Server', 0), (3, 'Ticket', 0), (4, 'General', 0), (5, 'VoiceServer', 0), (6, 'GameServer', 0) ON DUPLICATE KEY UPDATE `id`=`id`");
$query->execute();
//Install E-Mail template
include(EASYWIDIR . '/stuff/data/email_templates.php');
foreach ($emailTemplates as $template) {
$query = $sql->prepare($template['query']);
$query->execute(array(0));
}
$query = $sql->prepare("INSERT INTO `resellerimages` (`id`, `distro`, `description`, `bitversion`, `pxelinux`) VALUES (1, 'other', 'Rescue 32bit', 32, 'DISPLAY boot.txt\r\nDEFAULT rescue\r\nTIMEOUT 10\r\n\r\nLABEL default\r\n kernel /rescue/vmlinuz-rescue\r\n append initrd=/rescue/initram.igz setkmap=de dodhcp rootpass=%rescuepass% scandelay=5 boothttp=http://1.1.1.1/rescue/32/sysrcd.dat') ON DUPLICATE KEY UPDATE `id`=`id`");
$query->execute();
$query = $sql->prepare("INSERT INTO `resellerimages` (`id`, `distro`, `description`, `bitversion`, `pxelinux`) VALUES (2, 'other', 'Rescue 64bit', 64, 'DISPLAY boot.txt\r\nDEFAULT rescue\r\nTIMEOUT 10\r\n\r\nLABEL default\r\n kernel /rescue/vmlinuz-rescue\r\n append initrd=/rescue/initram.igz setkmap=de dodhcp rootpass=%rescuepass% scandelay=5 boothttp=http://1.1.1.1/rescue/64/sysrcd.dat') ON DUPLICATE KEY UPDATE `id`=`id`");
$query->execute();
$configFp = @fopen(EASYWIDIR . '/stuff/config.php', "w+");
if ($configFp) {
$configdata = "{$languageObject->ok_configuration}";
$displayToUser .= "";
} catch(PDOException $error) {
$displayToUser = "{$error->getMessage()}
";
}
}
}
if ($currentStep == 8 and count($systemCheckError) == 0) {
if (!isset($_POST['submit'])) {
$displayToUser .= "{$languageObject->games_insert}
";
$displayToUser .= "
";
} else {
try {
include(EASYWIDIR . '/stuff/data/gameslist.php');
$displayToUser .= "";
$displayToUser .= "{$languageObject->ok_gameserver_data}
";
$query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `servertypes` WHERE `shorten`=? AND `resellerid`=0 LIMIT 1");
$query2 = $sql->prepare("INSERT INTO `servertypes` (`type`,`steamgame`,`appID`,`serverID`,`updates`,`shorten`,`description`,`gamebinary`,`gamebinaryWin`,`binarydir`,`modfolder`,`fps`,`slots`,`map`,`cmd`,`modcmds`,`tic`,`gameq`,`gamemod`,`gamemod2`,`configs`,`configedit`,`portStep`,`portMax`,`portOne`,`portTwo`,`portThree`,`portFour`,`portFive`,`useQueryPort`,`mapGroup`,`protected`,`protectedSaveCFGs`,`ramLimited`,`os`,`copyStartBinary`,`steamGameserverToken`) VALUES ('',:steamgame,:appID,:serverID,:updates,:shorten,:description,:gamebinary,:gamebinaryWin,:binarydir,:modfolder,:fps,:slots,:map,:cmd,:modcmds,:tic,:gameq,:gamemod,:gamemod2,:configs,:configedit,:portStep,:portMax,:portOne,:portTwo,:portThree,:portFour,:portFive,:useQueryPort,:mapGroup,:protected,:protectedSaveCFGs,:ramLimited,:os,:copyStartBinary,:steamGameserverToken)");
$query3 = $sql->prepare("UPDATE `servertypes` SET `steamgame`=:steamgame,`appID`=:appID,`serverID`=:serverID,`updates`=:updates,`shorten`=:shorten,`description`=:description,`gamebinary`=:gamebinary,`gamebinaryWin`=:gamebinaryWin,`binarydir`=:binarydir,`modfolder`=:modfolder,`fps`=:fps,`slots`=:slots,`map`=:map,`cmd`=:cmd,`modcmds`=:modcmds,`tic`=:tic,`gameq`=:gameq,`gamemod`=:gamemod,`gamemod2`=:gamemod2,`configs`=:configs,`configedit`=:configedit,`portStep`=:portStep,`portMax`=:portMax,`portOne`=:portOne,`portTwo`=:portTwo,`portThree`=:portThree,`portFour`=:portFour,`portFive`=:portFive,`useQueryPort`=:useQueryPort,`mapGroup`=:mapGroup,`protected`=:protected,`protectedSaveCFGs`=:protectedSaveCFGs,`ramLimited`=:ramLimited,`os`=:os,`copyStartBinary`=:copyStartBinary,`steamGameserverToken`=:steamGameserverToken WHERE `shorten`=:shorten AND `resellerid`=0 LIMIT 1");
foreach ($gameImages as $image) {
if (count($image) == 36) {
$query->execute(array($image[':shorten']));
$imageExists = (int) $query->fetchColumn();
if ($imageExists == 0) {
$query2->execute($image);
$affectedRows = $query2->rowCount();
} else {
$query3->execute($image);
$affectedRows = $query3->rowCount();
}
if ($affectedRows == 1) {
$displayToUser .= "{$image[':description']}
";
}
} else {
$displayToUser .= "{$languageObject->error_game_insert} " . count($image) . " {$image[':description']}
";
}
}
require_once(EASYWIDIR . '/stuff/data/addonslist.php');
$query = $sql->prepare("SELECT `id` FROM `addons` WHERE `addon`=? AND `resellerid`=0 LIMIT 1");
$query2 = $sql->prepare("INSERT INTO `addons` (`active`,`depending`,`paddon`,`addon`,`type`,`folder`,`menudescription`,`configs`,`cmd`,`rmcmd`,`resellerid`) VALUES ('Y',?,?,?,?,?,?,?,?,?,0)");
$query3 = $sql->prepare("SELECT `id` FROM `servertypes` WHERE `shorten`=? AND `resellerid`=0 LIMIT 1");
$query4 = $sql->prepare("INSERT INTO `addons_allowed` (`addon_id`,`servertype_id`,`reseller_id`) VALUES (?,?,0)");
foreach ($gameAddons as $addon) {
if (count($addon) == 10) {
$query->execute(array($addon[':addon']));
$addonID = $query->fetchColumn();
if ($addonID < 1) {
$dependsID = 0;
if (strlen($addon[':depends']) > 0) {
$query->execute(array($addon[':depends']));
$dependsID = (int) $query->fetchColumn();
}
$query2->execute(array($dependsID, $addon[':paddon'], $addon[':addon'], $addon[':type'], $addon[':folder'], $addon[':menudescription'], $addon[':configs'], $addon[':cmd'], $addon[':rmcmd']));
$addonID = (int) $sql->lastInsertId();
if (preg_match('/^[\d]{1,}$/', $addonID) and $addonID != 0) {
foreach ($addon[':supported'] as $supported) {
$query3->execute(array($supported));
$serverTypeID = (int) $query3->fetchColumn();
if (preg_match('/^[\d]{1,}$/', $serverTypeID) and $serverTypeID != 0) {
$query4->execute(array($addonID, $serverTypeID));
}
}
}
$displayToUser .= "{$addon[':menudescription']}
";
}
}
}
$displayToUser .= "";
} catch(PDOException $error) {
$displayToUser = "{$error->getMessage()}
";
}
}
}
if ($currentStep == 9 and count($systemCheckError) == 0) {
// Deactivate CMS module by default
$query = $sql->prepare("SELECT `id` FROM `modules` WHERE `get`='pn' LIMIT 1");
$query->execute();
$cmdModuleId = (int) $query->fetchColumn();
if ($cmdModuleId > 0) {
$query = $sql->prepare("UPDATE `modules` SET `active`='N' WHERE `id`=? LIMIT 1");
$query->execute(array($cmdModuleId));
} else {
$query = $sql->prepare("INSERT INTO `modules` (`get`,`sub`,`file`,`active`,`type`) VALUES ('pn','pn','','N','C')");
$query->execute();
}
function rmr($dir) {
if (is_dir($dir)) {
$dircontent = scandir($dir);
foreach ($dircontent as $c) {
if ($c != '.' and $c != '..' and is_dir($dir . '/' . $c)) {
rmr($dir . '/' . $c);
} else if ($c != '.' and $c != '..') {
@unlink($dir . '/' . $c);
}
}
@rmdir($dir);
} else {
@unlink($dir);
}
}
rmr(EASYWIDIR . "/install");
$query = $sql->prepare("UPDATE `settings` SET `lastCronReboot`=:futuretime,`lastCronCloud`=:futuretime,`lastCronJobs`=:futuretime,`lastCronUpdates`=:futuretime,`lastCronStatus`=:futuretime");
$query->execute(array(':futuretime' => strtotime("+2 hours")));
if (file_exists(EASYWIDIR . "/install")) {
$displayToUser .= "{$languageObject->install_done_folder}
";
}
$displayToUser .= "{$languageObject->install_done}
";
$displayPHPUser = (isset($_SERVER['USER'])) ? $_SERVER['USER'] : 'changeToPHPUser';
$displayToUser .= "
{$languageObject->cron_internal} (/etc/crontab)
{$languageObject->cron_internal_text}
0 */1 * * * {$displayPHPUser} cd " . EASYWIDIR . " && timeout 300 php ./reboot.php >/dev/null 2>&1
*/5 * * * * {$displayPHPUser} cd " . EASYWIDIR . " && timeout 290 php ./statuscheck.php >/dev/null 2>&1
*/1 * * * * {$displayPHPUser} cd " . EASYWIDIR . " && timeout 290 php ./startupdates.php >/dev/null 2>&1
*/5 * * * * {$displayPHPUser} cd " . EASYWIDIR . " && timeout 290 php ./jobs.php >/dev/null 2>&1
*/10 * * * * {$displayPHPUser} cd " . EASYWIDIR . " && timeout 290 php ./cloud.php >/dev/null 2>&1";
$displayToUser .= "
{$languageObject->cron_internal} (crontab -e)
{$languageObject->cron_internal_text}
0 */1 * * * cd " . EASYWIDIR . " && timeout 300 php ./reboot.php >/dev/null 2>&1
*/5 * * * * cd " . EASYWIDIR . " && timeout 290 php ./statuscheck.php >/dev/null 2>&1
*/1 * * * * cd " . EASYWIDIR . " && timeout 290 php ./startupdates.php >/dev/null 2>&1
*/5 * * * * cd " . EASYWIDIR . " && timeout 290 php ./jobs.php >/dev/null 2>&1
*/10 * * * * cd " . EASYWIDIR . " && timeout 290 php ./cloud.php >/dev/null 2>&1";
$query = $sql->prepare("SELECT `pageurl` FROM `page_settings` WHERE `id`=1 LIMIT 1");
$query->execute();
$pageUrl = $query->fetchColumn();
$displayToUser .= "
{$languageObject->cron_external} (/etc/crontab)
{$languageObject->cron_external_text}
0 */1 * * * ExternalSSH2User wget -q --no-check-certificate -O - {$pageUrl}reboot.php >/dev/null 2>&1
*/5 * * * * ExternalSSH2User wget -q --no-check-certificate -O - {$pageUrl}statuscheck.php >/dev/null 2>&1
*/1 * * * * ExternalSSH2User wget -q --no-check-certificate -O - {$pageUrl}startupdates.php >/dev/null 2>&1
*/5 * * * * ExternalSSH2User wget -q --no-check-certificate -O - {$pageUrl}jobs.php >/dev/null 2>&1
*/10 * * * * ExternalSSH2User wget -q --no-check-certificate -O - {$pageUrl}cloud.php >/dev/null 2>&1";
$displayToUser .= "
{$languageObject->cron_external} (crontab -e)
{$languageObject->cron_external_text}
0 */1 * * * wget -q --no-check-certificate -O - {$pageUrl}reboot.php >/dev/null 2>&1
*/5 * * * * wget -q --no-check-certificate -O - {$pageUrl}statuscheck.php >/dev/null 2>&1
*/1 * * * * wget -q --no-check-certificate -O - {$pageUrl}startupdates.php >/dev/null 2>&1
*/5 * * * * wget -q --no-check-certificate -O - {$pageUrl}jobs.php >/dev/null 2>&1
*/10 * * * * wget -q --no-check-certificate -O - {$pageUrl}cloud.php >/dev/null 2>&1";
}
if (strlen($displayToUser) == 0 and count($systemCheckError) > 0) {
foreach ($systemCheckError as $v) {
if (is_array($v)) {
foreach ($v as $v2) {
$displayToUser .= "{$v2}
";
}
} else {
$displayToUser .= "{$v}
";
}
}
}
?>
Easy-WI Installer