refactor: all users set up together during install

Closes #278
This commit is contained in:
Martin Ambrus
2017-11-07 13:26:18 +01:00
parent 312507fe9f
commit c685c87621
10 changed files with 203 additions and 188 deletions
+87
View File
@@ -0,0 +1,87 @@
<?php
// verify form
if (empty($_POST['mhpw']) || empty($_POST['spw'])) {
header("Location: ../index.php?s=4&err=1");
exit;
}
// don't let SQL time out when 30-500 seconds (depending on php.ini) is not enough
@set_time_limit(0);
$gameinstall = 1;
$configFile = "../../GameEngine/config.php";
include_once($configFile);
include_once("../../GameEngine/Database.php");
include_once("../../GameEngine/Admin/database.php");
include_once("../../GameEngine/Lang/" . LANG . ".php");
// update Admin details first
$gameConfig = file_get_contents($configFile);
// easy string replacements
$findReplace["%AEMAIL%"] = $_POST['aemail'];
$findReplace["%ANAME%"] = $_POST['aname'];
$gameConfig = str_replace(array_keys($findReplace), array_values($findReplace), $gameConfig);
// more complicated regex replacements
$regexFindReplace = [
'/define\("ADMIN_RECEIVE_SUPPORT_MESSAGES",[^)]+\);/' => 'define("ADMIN_RECEIVE_SUPPORT_MESSAGES", '.($_POST['admin_support_msgs'] == 'true' ? 'true' : 'false').');',
'/define\("ADMIN_ALLOW_INCOMING_RAIDS",[^)]+\);/' => 'define("ADMIN_ALLOW_INCOMING_RAIDS", '.($_POST['admin_raidable'] == 'true' ? 'true' : 'false').');',
'/define\("INCLUDE_ADMIN",[^)]+\);/' => 'define("INCLUDE_ADMIN", '.($_POST['admin_rank'] == 'true' ? 'true' : 'false').');'
];
$gameConfig = preg_replace(array_keys($regexFindReplace), array_values($regexFindReplace), $gameConfig);
file_put_contents($configFile, $gameConfig);
// create Admin user, if details were provided and was not created yet
if (
!empty($_POST['aname']) &&
!empty($_POST['aemail']) &&
!empty($_POST['apass']) &&
!empty($_POST['atribe']) &&
strtolower($_POST['aname']) != 'multihunter' &&
strtolower($_POST['aname']) != 'support'
) {
mysqli_query($database->dblink, "INSERT INTO " . TB_PREFIX . "users SET username = '".$database->escape($_POST['aname'])."', password = '" . password_hash($_POST['apass'], PASSWORD_BCRYPT, ['cost' => 12]) . "', email = '".$database->escape($_POST['aemail'])."', tribe = ".(int) $_POST['atribe'].", access = 9, is_bcrypt = 1") OR DIE (mysqli_error($database->dblink));
$uid = mysqli_insert_id($database->dblink);
$admin_village_created = false;
$xcoor = 50;
while (!$admin_village_created) {
$wid = $admin->getWref($xcoor++, 50);
$status = $database->getVillageState($wid);
if($status == 0) {
$database->setFieldTaken($wid);
$database->addVillage($wid, $uid, $_POST['aname'], 1);
$database->addResourceFields($wid, $database->getVillageType($wid));
$database->addUnits($wid);
$database->addTech($wid);
$database->addABTech($wid);
$admin_village_created = true;
}
}
}
// set up MultiHunter
$password = $_POST['mhpw'];
mysqli_query($database->dblink, "UPDATE " . TB_PREFIX . "users SET password = '" . password_hash($password, PASSWORD_BCRYPT,['cost' => 12]) . "' WHERE username = 'Multihunter'");
$wid = $admin->getWref(0, 0);
$uid = 5;
$status = $database->getVillageState($wid);
if($status == 0) {
$database->setFieldTaken($wid);
$database->addVillage($wid, $uid, 'Multihunter', '0');
$database->addResourceFields($wid, $database->getVillageType($wid));
$database->addUnits($wid);
$database->addTech($wid);
$database->addABTech($wid);
}
// set up Support
$password = $_POST['spw'];
mysqli_query($database->dblink, "UPDATE " . TB_PREFIX . "users SET password = '" . password_hash($password, PASSWORD_BCRYPT,['cost' => 12]) . "' WHERE username = 'Support'");
$gameinstall = 0;
header("Location: ../index.php?s=5");
?>
-34
View File
@@ -1,34 +0,0 @@
<?php
// don't let SQL time out when 30-500 seconds (depending on php.ini) is not enough
@set_time_limit(0);
$gameinstall = 1;
include ("../../GameEngine/config.php");
include ("../../GameEngine/Database.php");
include ("../../GameEngine/Admin/database.php");
include ("../../GameEngine/Lang/" . LANG . ".php");
$conn = mysqli_connect(SQL_SERVER, SQL_USER, SQL_PASS);
mysqli_select_db($conn, SQL_DB);
if(isset($_POST['mhpw'])) {
$password = $_POST['mhpw'];
mysqli_query($conn, "UPDATE " . TB_PREFIX . "users SET password = '" . password_hash($password, PASSWORD_BCRYPT,['cost' => 12]) . "' WHERE username = 'Multihunter'");
$wid = $admin->getWref(0, 0);
$uid = 5;
$status = $database->getVillageState($wid);
if($status == 0) {
$database->setFieldTaken($wid);
$database->addVillage($wid, $uid, 'Multihunter', '0');
$database->addResourceFields($wid, $database->getVillageType($wid));
$database->addUnits($wid);
$database->addTech($wid);
$database->addABTech($wid);
}
}
$gameinstall = 0;
header("Location: ../index.php?s=5");
?>
-23
View File
@@ -1,23 +0,0 @@
<?php
// don't let SQL time out when 30-500 seconds (depending on php.ini) is not enough
@set_time_limit(0);
$gameinstall = 1;
include ("../../GameEngine/config.php");
include ("../../GameEngine/Database.php");
include ("../../GameEngine/Admin/database.php");
include ("../../GameEngine/Lang/" . LANG . ".php");
$conn = mysqli_connect(SQL_SERVER, SQL_USER, SQL_PASS);
mysqli_select_db($conn, SQL_DB);
if(isset($_POST['spw'])) {
$password = $_POST['spw'];
mysqli_query($conn, "UPDATE " . TB_PREFIX . "users SET password = '" . password_hash($password, PASSWORD_BCRYPT,['cost' => 12]) . "' WHERE username = 'Support'");
}
$gameinstall = 0;
header("Location: ../index.php?s=6");
?>
+2 -5
View File
@@ -82,7 +82,7 @@ function proceed() {
<div id="content" class="login">
<?php
IHG_Progressbar::draw_css();
$bar = new IHG_Progressbar(7, 'Step %d from %d ');
$bar = new IHG_Progressbar(6, 'Step %d from %d ');
$bar->draw();
for($i = 0; $i < ($_GET['s']+1); $i++) {
$bar->tick();
@@ -114,12 +114,9 @@ function proceed() {
include("templates/wdata.tpl");
break;
case 4:
include("templates/multihunter.tpl");
include("templates/accounts.tpl");
break;
case 5:
include("templates/support.tpl");
break;
case 6:
include("templates/end.tpl");
break;
}
+3 -5
View File
@@ -77,10 +77,8 @@ class Process {
$findReplace["%SDB%"] = $_POST['sdb'];
$findReplace["%PREFIX%"] = $_POST['prefix'];
$findReplace["%CONNECTT%"] = $_POST['connectt'];
$findReplace["%AEMAIL%"] = $_POST['aemail'];
$findReplace["%ANAME%"] = $_POST['aname'];
$findReplace["%ASUPPMSGS%"] = ($_POST['admin_support_msgs'] == 'true' ? 'true' : 'false');
$findReplace["%ARAIDS%"] = ($_POST['admin_raidable'] == 'true' ? 'true' : 'false');
$findReplace["%ASUPPMSGS%"] = 'true';
$findReplace["%ARAIDS%"] = 'false';
//$findReplace["%SUBDOM%"] = $_POST['subdom'];
$findReplace["%LOGBUILD%"] = $_POST['log_build'];
$findReplace["%LOGTECH%"] = $_POST['log_tech'];
@@ -94,7 +92,7 @@ class Process {
//$findReplace["%MINPASSLENGTH%"] = $_POST['passlength'];
//$findReplace["%SPECIALCHARS%"] = $_POST['specialchars'];
$findReplace["%ACTIVATE%"] = $_POST['activate'];
$findReplace["%ARANK%"] = $_POST['admin_rank'];
$findReplace["%ARANK%"] = 'false';
$findReplace["%QUEST%"] = $_POST['quest'];
$findReplace["%QTYPE%"] = $_POST['qtype'];
$findReplace["%BEGINNER%"] = $_POST['beginner'];
+105
View File
@@ -0,0 +1,105 @@
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Project: TravianZ ##
## Version: 22.06.2015 ##
## Filename multihunter.tpl ##
## Developed by: Mr.php , Advocaite , brainiacX , yi12345 , Shadow , ronix ##
## Fixed by: Shadow - STARVATION , HERO FIXED COMPL. ##
## Fixed by: InCube - double troops ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2015. All rights reserved. ##
## URLs: http://travian.shadowss.ro ##
## Source code: https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
if(isset($_GET['err']) && $_GET['err'] == 1) {
echo "<br /><hr /><br /><div class=\"headline\"><span class=\"f10 c5\">At least MultiHunter &amp; Support password are required in this form.</span></div><br /><br />";
}
?>
<form action="include/accounts.php" method="post" id="dataform">
<p>
<span class="f10 c">Multihunter account</span>
<table>
<tr><td>Name:</td><td><input type="text" name="mhuser" id="mhuser" value="Multihunter" disabled="disabled"></td></tr>
<tr><td>Password:</td><td><input type="password" name="mhpw" id="mhpw" value=""></td></tr>
<tr><td>Note: Rember this password! You need it for the Admin</td><td></td></tr>
</table>
</p>
<p>
<span class="f10 c">Support account</span>
<table>
<tr><td>Name:</td><td><input type="text" name="suser" id="suser" value="Support" disabled="disabled"></td></tr>
<tr><td>Password:</td><td><input type="password" name="spw" id="spw" value=""></td></tr>
<tr><td>Note: Rember this password! You need it for the Admin</td><td></td></tr>
</table>
</p>
<p>
<span class="f10 c">Admin account</span>
<table>
<tr>
<td><span class="f9 c6">Admin name:</span></td>
<td><input type="text" name="aname" id="aname" value=""></td>
</tr>
<tr>
<td><span class="f9 c6">Admin email:</span></td>
<td><input type="text" name="aemail" id="aemail" value=""></td>
</tr>
<tr>
<td><span class="f9 c6">Admin password:</span></td>
<td><input type="password" name="apass" id="apass" value=""></td>
</tr>
<tr>
<td><span class="f9 c6">Admin tribe:</span></td>
<td>
<select name="atribe" id="atribe">
<option value="1" selected="selected">Romans</option>
<option value="2">Teutons</option>
<option value="3">Gauls</option>
</select>
</td>
</tr>
<tr>
<td><span class="f9 c6">Show admin in stats:</span></td>
<td>
<select name="admin_rank">
<option value="true">true</option>
<option value="false" selected="selected">false</option>
</select>
</td>
</tr>
<tr>
<td><span class="f9 c6">Include Support Messages in Admin Mailbox:</span></td>
<td>
<select name="admin_support_msgs">
<option value="true" selected="selected">true</option>
<option value="false">false</option>
</select>
</td>
</tr>
<tr>
<td><span class="f9 c6">Allow Administrative Accounts to be Raided and Attacked:</span></td>
<td>
<select name="admin_raidable">
<option value="true" selected="selected">true</option>
<option value="false">false</option>
</select>
</td>
</tr>
<tr><td colspan="2">Note: this will add a first user and will set them up as an Admin</td><td></td></tr>
<tr><td colspan="2">Note: you can leave this section empty, if you want</td><td></td></tr>
</table>
</p>
<center>
<input type="submit" name="Submit" id="Submit" value="Submit"></center>
</form>
</div>
-40
View File
@@ -240,46 +240,6 @@ echo "<div class=\"headline\"><span class=\"f10 c5\">Error creating constant.php
<tr>
</table>
</p>
<p>
<span class="f10 c">ADMIN ACCOUNT</span>
<table>
<tr>
<td><span class="f9 c6">Admin name:</span></td>
<td><input type="text" name="aname" id="aname" value=""></td>
</tr>
<tr>
<td><span class="f9 c6">Admin email:</span></td>
<td><input type="text" name="aemail" id="aemail" value=""></td>
</tr>
<tr>
<td><span class="f9 c6">Show admin in stats:</span></td>
<td>
<select name="admin_rank">
<option value="true">true</option>
<option value="false" selected="selected">false</option>
</select>
</td>
</tr>
<tr>
<td><span class="f9 c6">Include Support Messages in Admin Mailbox:</span></td>
<td>
<select name="admin_support_msgs">
<option value="true" selected="selected">true</option>
<option value="false">false</option>
</select>
</td>
</tr>
<tr>
<td><span class="f9 c6">Allow Administrative Accounts to be Raided and Attacked:</span></td>
<td>
<select name="admin_raidable">
<option value="true" selected="selected">true</option>
<option value="false">false</option>
</select>
</td>
</tr>
</table>
</p>
<p>
<span class="f10 c">SQL RELATED</span>
<table>
+6 -9
View File
@@ -19,25 +19,22 @@
switch($_GET['s']) {
case 0:
echo "<li class=\"c2 f9\">Intro</li><li class=\"c1 f9\">Configuration</li><li class=\"c1 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Multihunter</li><li class=\"c1 f9\">Support</li><li class=\"c1 f9\">End</li>";
echo "<li class=\"c2 f9\">Intro</li><li class=\"c1 f9\">Configuration</li><li class=\"c1 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Accounts</li><li class=\"c1 f9\">End</li>";
break;
case 1:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c2 f9\">Configuration</li><li class=\"c1 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Multihunter</li><li class=\"c1 f9\">Support</li><li class=\"c1 f9\">End</li>";
echo "<li class=\"c3 f9\">Intro</li><li class=\"c2 f9\">Configuration</li><li class=\"c1 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Accounts</li><li class=\"c1 f9\">End</li>";
break;
case 2:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c2 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Multihunter</li><li class=\"c1 f9\">Support</li><li class=\"c1 f9\">End</li>";
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c2 f9\">Database</li><li class= \"c1 f9\">World Data</li><li class=\"c1 f9\">Accounts</li><li class=\"c1 f9\">End</li>";
break;
case 3:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c2 f9\">World Data</li><li class=\"c1 f9\">Multihunter</li><li class=\"c1 f9\">Support</li><li class=\"c1 f9\">End</li>";
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c2 f9\">World Data</li><li class=\"c1 f9\">Accounts</li><li class=\"c1 f9\">End</li>";
break;
case 4:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c3 f9\">World Data</li><li class=\"c2 f9\">Multihunter</li><li class=\"c1 f9\">Support</li><li class=\"c1 f9\">End</li>";
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c3 f9\">World Data</li><li class=\"c2 f9\">Accounts</li><li class=\"c1 f9\">End</li>";
break;
case 5:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c3 f9\">World Data</li><li class=\"c3 f9\">Multihunter</li><li class=\"c2 f9\">Support</li><li class=\"c1 f9\">End</li>";
break;
case 6:
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c3 f9\">World Data</li><li class=\"c3 f9\">Multihunter</li><li class=\"c3 f9\">Support</li><li class=\"c2 f9\">End</li>";
echo "<li class=\"c3 f9\">Intro</li><li class=\"c3 f9\">Configuration</li><li class=\"c3 f9\">Database</li><li class= \"c3 f9\">World Data</li><li class=\"c3 f9\">Accounts</li><li class=\"c2 f9\">End</li>";
break;
}
-36
View File
@@ -1,36 +0,0 @@
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Project: TravianZ ##
## Version: 22.06.2015 ##
## Filename multihunter.tpl ##
## Developed by: Mr.php , Advocaite , brainiacX , yi12345 , Shadow , ronix ##
## Fixed by: Shadow - STARVATION , HERO FIXED COMPL. ##
## Fixed by: InCube - double troops ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2015. All rights reserved. ##
## URLs: http://travian.shadowss.ro ##
## Source code: https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
?>
<form action="include/multihunter.php" method="post" id="dataform">
<p>
<span class="f10 c">Create Multihunter account</span>
<table>
<tr><td>Name:</td><td><input type="text" name="mhpw" id="mhpw" value="Multihunter" disabled="disabled"></td></tr>
<tr><td>Password:</td><td><input type="password" name="mhpw" id="mhpw" value=""></td></tr>
<tr><td>Note: Rember this password! You need it for the ACP</td><td></td></tr>
</table>
</p>
<center>
<input type="submit" name="Submit" id="Submit" value="Submit"></center>
</form>
</div>
-36
View File
@@ -1,36 +0,0 @@
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Project: TravianZ ##
## Version: 22.06.2015 ##
## Filename support.tpl ##
## Developed by: Mr.php , Advocaite , brainiacX , yi12345 , Shadow , ronix ##
## Fixed by: Shadow - STARVATION , HERO FIXED COMPL. ##
## Fixed by: InCube - double troops ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2015. All rights reserved. ##
## URLs: http://travian.shadowss.ro ##
## Source code: https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
?>
<form action="include/support.php" method="post" id="dataform">
<p>
<span class="f10 c">Create Support account</span>
<table>
<tr><td>Name:</td><td><input type="text" name="sname" value="Support" disabled="disabled"></td></tr>
<tr><td>Password:</td><td><input type="password" name="spw" id="spw" value=""></td></tr>
<tr><td>Note: Rember this password! You need it for the ACP</td><td></td></tr>
</table>
</p>
<center>
<input type="submit" name="Submit" id="Submit" value="Submit"></center>
</form>
</div>