256
+ − 1
<?php
+ − 2
+ − 3
/*
+ − 4
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 5
* Version 1.1.1
256
+ − 6
* Copyright (C) 2006-2007 Dan Fuhry
+ − 7
* install.php - handles everything related to installation and initial configuration
+ − 8
*
+ − 9
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ − 10
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ − 11
*
+ − 12
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − 13
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ − 14
*/
+ − 15
+ − 16
@include('config.php');
+ − 17
if( ( defined('ENANO_INSTALLED') || defined('MIDGET_INSTALLED') ) && ((isset($_GET['mode']) && ($_GET['mode']!='finish' && $_GET['mode']!='css')) || !isset($_GET['mode'])))
+ − 18
{
+ − 19
$_GET['title'] = 'Enano:Installation_locked';
+ − 20
require('includes/common.php');
+ − 21
die_friendly('Installation locked', '<p>The Enano installer has found a Enano installation in this directory. You MUST delete config.php if you want to re-install Enano.</p><p>If you wish to upgrade an older Enano installation to this version, please use the <a href="upgrade.php">upgrade script</a>.</p>');
+ − 22
exit;
+ − 23
}
+ − 24
+ − 25
define('IN_ENANO_INSTALL', 'true');
+ − 26
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 27
define('ENANO_VERSION', '1.1.1');
243
+ − 28
define('ENANO_CODE_NAME', 'Germination');
256
+ − 29
// In beta versions, define ENANO_BETA_VERSION here
+ − 30
240
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 31
// This is required to make installation work right
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 32
define("ENANO_ALLOW_LOAD_NOLANG", 1);
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 33
256
+ − 34
if(!defined('scriptPath')) {
+ − 35
$sp = dirname($_SERVER['REQUEST_URI']);
+ − 36
if($sp == '/' || $sp == '\\') $sp = '';
+ − 37
define('scriptPath', $sp);
+ − 38
}
+ − 39
+ − 40
if(!defined('contentPath')) {
+ − 41
$sp = dirname($_SERVER['REQUEST_URI']);
+ − 42
if($sp == '/' || $sp == '\\') $sp = '';
+ − 43
define('contentPath', $sp);
+ − 44
}
+ − 45
global $_starttime, $this_page, $sideinfo;
+ − 46
$_starttime = microtime(true);
+ − 47
+ − 48
// Determine directory (special case for development servers)
+ − 49
if ( strpos(__FILE__, '/repo/') && file_exists('.enanodev') )
+ − 50
{
+ − 51
$filename = str_replace('/repo/', '/', __FILE__);
+ − 52
}
+ − 53
else
+ − 54
{
+ − 55
$filename = __FILE__;
+ − 56
}
+ − 57
+ − 58
define('ENANO_ROOT', dirname($filename));
+ − 59
+ − 60
function is_page($p)
+ − 61
{
+ − 62
return true;
+ − 63
}
+ − 64
+ − 65
require('includes/wikiformat.php');
+ − 66
require('includes/constants.php');
+ − 67
require('includes/rijndael.php');
+ − 68
require('includes/functions.php');
243
+ − 69
require('includes/dbal.php');
+ − 70
require('includes/lang.php');
+ − 71
require('includes/json.php');
256
+ − 72
+ − 73
strip_magic_quotes_gpc();
+ − 74
+ − 75
//
+ − 76
// INSTALLER LIBRARY
+ − 77
//
+ − 78
243
+ − 79
$neutral_color = 'C';
+ − 80
256
+ − 81
function run_installer_stage($stage_id, $stage_name, $function, $failure_explanation, $allow_skip = true)
+ − 82
{
+ − 83
static $resumed = false;
+ − 84
static $resume_stack = array();
+ − 85
+ − 86
if ( empty($resume_stack) && isset($_POST['resume_stack']) && preg_match('/[a-z_]+((\|[a-z_]+)+)/', $_POST['resume_stack']) )
+ − 87
{
+ − 88
$resume_stack = explode('|', $_POST['resume_stack']);
+ − 89
}
+ − 90
+ − 91
$already_run = false;
+ − 92
if ( in_array($stage_id, $resume_stack) )
+ − 93
{
+ − 94
$already_run = true;
+ − 95
}
+ − 96
+ − 97
if ( !$resumed )
+ − 98
{
+ − 99
if ( !isset($_GET['stage']) )
+ − 100
$resumed = true;
+ − 101
if ( isset($_GET['stage']) && $_GET['stage'] == $stage_id )
+ − 102
{
+ − 103
$resumed = true;
+ − 104
}
+ − 105
}
+ − 106
if ( !$resumed && $allow_skip )
+ − 107
{
267
+ − 108
echo_stage_success($stage_id, $stage_name);
256
+ − 109
return false;
+ − 110
}
+ − 111
if ( !function_exists($function) )
+ − 112
die('libenanoinstall: CRITICAL: function "' . $function . '" for ' . $stage_id . ' doesn\'t exist');
+ − 113
$result = @call_user_func($function, false, $already_run);
+ − 114
if ( $result )
+ − 115
{
+ − 116
echo_stage_success($stage_id, $stage_name);
+ − 117
$resume_stack[] = $stage_id;
+ − 118
return true;
+ − 119
}
+ − 120
else
+ − 121
{
+ − 122
echo_stage_failure($stage_id, $stage_name, $failure_explanation, $resume_stack);
+ − 123
return false;
+ − 124
}
+ − 125
}
+ − 126
+ − 127
function start_install_table()
+ − 128
{
254
+ − 129
echo '<table border="0" cellspacing="0" cellpadding="0" style="margin-top: 10px;">' . "\n";
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 130
ob_start();
256
+ − 131
}
+ − 132
+ − 133
function close_install_table()
+ − 134
{
+ − 135
echo '</table>' . "\n\n";
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 136
ob_end_flush();
256
+ − 137
}
+ − 138
+ − 139
function echo_stage_success($stage_id, $stage_name)
+ − 140
{
+ − 141
global $neutral_color;
+ − 142
$neutral_color = ( $neutral_color == 'A' ) ? 'C' : 'A';
+ − 143
echo '<tr><td style="width: 500px; background-color: #' . "{$neutral_color}{$neutral_color}FF{$neutral_color}{$neutral_color}" . '; padding: 0 5px;">' . htmlspecialchars($stage_name) . '</td><td style="padding: 0 5px;"><img alt="Done" src="images/good.gif" /></td></tr>' . "\n";
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 144
ob_flush();
256
+ − 145
}
+ − 146
+ − 147
function echo_stage_failure($stage_id, $stage_name, $failure_explanation, $resume_stack)
+ − 148
{
+ − 149
global $neutral_color;
254
+ − 150
global $lang;
256
+ − 151
+ − 152
$neutral_color = ( $neutral_color == 'A' ) ? 'C' : 'A';
+ − 153
echo '<tr><td style="width: 500px; background-color: #' . "FF{$neutral_color}{$neutral_color}{$neutral_color}{$neutral_color}" . '; padding: 0 5px;">' . htmlspecialchars($stage_name) . '</td><td style="padding: 0 5px;"><img alt="Failed" src="images/bad.gif" /></td></tr>' . "\n";
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 154
ob_flush();
256
+ − 155
close_install_table();
+ − 156
$post_data = '';
+ − 157
$mysql_error = mysql_error();
+ − 158
foreach ( $_POST as $key => $value )
+ − 159
{
269
+ − 160
// FIXME: These should really also be sanitized for double quotes
256
+ − 161
$value = htmlspecialchars($value);
+ − 162
$key = htmlspecialchars($key);
+ − 163
$post_data .= " <input type=\"hidden\" name=\"$key\" value=\"$value\" />\n";
+ − 164
}
+ − 165
echo '<form action="install.php?mode=install&stage=' . $stage_id . '" method="post">
+ − 166
' . $post_data . '
+ − 167
<input type="hidden" name="resume_stack" value="' . htmlspecialchars(implode('|', $resume_stack)) . '" />
254
+ − 168
<h3>' . $lang->get('meta_msg_err_stagefailed_title') . '</h3>
256
+ − 169
<p>' . $failure_explanation . '</p>
254
+ − 170
' . ( !empty($mysql_error) ? "<p>" . $lang->get('meta_msg_err_stagefailed_mysqlerror') . " $mysql_error</p>" : '' ) . '
+ − 171
<p>' . $lang->get('meta_msg_err_stagefailed_body') . '</p>
+ − 172
<p style="text-align: center;"><input type="submit" value="' . $lang->get('meta_btn_retry_installation') . '" /></p>
256
+ − 173
</form>';
+ − 174
global $template, $template_bak;
+ − 175
if ( is_object($template_bak) )
+ − 176
$template_bak->footer();
+ − 177
else
+ − 178
$template->footer();
+ − 179
exit;
+ − 180
}
+ − 181
+ − 182
//
+ − 183
// INSTALLER STAGES
+ − 184
//
+ − 185
+ − 186
function stg_mysql_connect($act_get = false)
+ − 187
{
+ − 188
static $conn = false;
+ − 189
if ( $act_get )
+ − 190
return $conn;
+ − 191
258
+ − 192
$db_user =& $_POST['db_user'];
+ − 193
$db_pass =& $_POST['db_pass'];
+ − 194
$db_name =& $_POST['db_name'];
256
+ − 195
258
+ − 196
if ( !preg_match('/^[a-z0-9_-]+$/', $db_name) )
+ − 197
{
+ − 198
$db_name = htmlspecialchars($db_name);
+ − 199
die("<p>SECURITY: malformed database name \"$db_name\"</p>");
+ − 200
}
256
+ − 201
+ − 202
// First, try to connect using the normal credentials
+ − 203
$conn = @mysql_connect($_POST['db_host'], $_POST['db_user'], $_POST['db_pass']);
+ − 204
if ( !$conn )
+ − 205
{
+ − 206
// Connection failed. Do we have the root username and password?
+ − 207
if ( !empty($_POST['db_root_user']) && !empty($_POST['db_root_pass']) )
+ − 208
{
+ − 209
$conn_root = @mysql_connect($_POST['db_host'], $_POST['db_root_user'], $_POST['db_root_pass']);
+ − 210
if ( !$conn_root )
+ − 211
{
+ − 212
// Couldn't connect using either set of credentials. Bail out.
+ − 213
return false;
+ − 214
}
258
+ − 215
unset($db_user, $db_pass);
+ − 216
$db_user = mysql_real_escape_string($_POST['db_user']);
+ − 217
$db_pass = mysql_real_escape_string($_POST['db_pass']);
256
+ − 218
// Create the user account
+ − 219
$q = @mysql_query("GRANT ALL PRIVILEGES ON test.* TO '{$db_user}'@'localhost' IDENTIFIED BY '$db_pass' WITH GRANT OPTION;", $conn_root);
+ − 220
if ( !$q )
+ − 221
{
+ − 222
return false;
+ − 223
}
+ − 224
// Revoke privileges from test, we don't need them
+ − 225
$q = @mysql_query("REVOKE ALL PRIVILEGES ON test.* FROM '{$db_user}'@'localhost';", $conn_root);
+ − 226
if ( !$q )
+ − 227
{
+ − 228
return false;
+ − 229
}
+ − 230
if ( $_POST['db_host'] != 'localhost' && $_POST['db_host'] != '127.0.0.1' && $_POST['db_host'] != '::1' )
+ − 231
{
+ − 232
// If not connecting to a server running on localhost, allow from any host
+ − 233
// this is safer than trying to detect the hostname of the webserver, but less secure
+ − 234
$q = @mysql_query("GRANT ALL PRIVILEGES ON test.* TO '{$db_user}'@'%' IDENTIFIED BY '$db_pass' WITH GRANT OPTION;", $conn_root);
+ − 235
if ( !$q )
+ − 236
{
+ − 237
return false;
+ − 238
}
+ − 239
// Revoke privileges from test, we don't need them
+ − 240
$q = @mysql_query("REVOKE ALL PRIVILEGES ON test.* FROM '{$db_user}'@'%';", $conn_root);
+ − 241
if ( !$q )
+ − 242
{
+ − 243
return false;
+ − 244
}
+ − 245
}
258
+ − 246
mysql_close($conn_root);
+ − 247
$conn = @mysql_connect($_POST['db_host'], $_POST['db_user'], $_POST['db_pass']);
+ − 248
if ( !$conn )
+ − 249
{
+ − 250
// This should honestly never happen.
+ − 251
return false;
+ − 252
}
256
+ − 253
}
+ − 254
}
258
+ − 255
$q = @mysql_query("USE `$db_name`;", $conn);
256
+ − 256
if ( !$q )
+ − 257
{
+ − 258
// access denied to the database; try the whole root schenanegan again
+ − 259
if ( !empty($_POST['db_root_user']) && !empty($_POST['db_root_pass']) )
+ − 260
{
+ − 261
$conn_root = @mysql_connect($_POST['db_host'], $_POST['db_root_user'], $_POST['db_root_pass']);
+ − 262
if ( !$conn_root )
+ − 263
{
+ − 264
// Couldn't connect as root; bail out
+ − 265
return false;
+ − 266
}
+ − 267
// create the database, if it doesn't exist
258
+ − 268
$q = @mysql_query("CREATE DATABASE IF NOT EXISTS `$db_name`;", $conn_root);
256
+ − 269
if ( !$q )
+ − 270
{
+ − 271
// this really should never fail, so don't give any tolerance to it
+ − 272
return false;
+ − 273
}
258
+ − 274
unset($db_user, $db_pass);
+ − 275
$db_user = mysql_real_escape_string($_POST['db_user']);
+ − 276
$db_pass = mysql_real_escape_string($_POST['db_pass']);
256
+ − 277
// we're in with root rights; grant access to the database
258
+ − 278
$q = @mysql_query("GRANT ALL PRIVILEGES ON `$db_name`.* TO '{$db_user}'@'localhost';", $conn_root);
256
+ − 279
if ( !$q )
+ − 280
{
+ − 281
return false;
+ − 282
}
+ − 283
if ( $_POST['db_host'] != 'localhost' && $_POST['db_host'] != '127.0.0.1' && $_POST['db_host'] != '::1' )
+ − 284
{
258
+ − 285
$q = @mysql_query("GRANT ALL PRIVILEGES ON `$db_name`.* TO '{$db_user}'@'%';", $conn_root);
256
+ − 286
if ( !$q )
+ − 287
{
+ − 288
return false;
+ − 289
}
+ − 290
}
258
+ − 291
mysql_close($conn_root);
+ − 292
// grant tables have hopefully been flushed, kill and reconnect our regular user connection
+ − 293
mysql_close($conn);
+ − 294
$conn = @mysql_connect($_POST['db_host'], $_POST['db_user'], $_POST['db_pass']);
+ − 295
if ( !$conn )
+ − 296
{
+ − 297
return false;
+ − 298
}
256
+ − 299
}
+ − 300
else
+ − 301
{
+ − 302
return false;
+ − 303
}
+ − 304
// try again
258
+ − 305
$q = @mysql_query("USE `$db_name`;", $conn);
256
+ − 306
if ( !$q )
+ − 307
{
+ − 308
// really failed this time; bail out
+ − 309
return false;
+ − 310
}
+ − 311
}
+ − 312
// connected and database exists
+ − 313
return true;
+ − 314
}
+ − 315
+ − 316
function stg_drop_tables()
+ − 317
{
+ − 318
$conn = stg_mysql_connect(true);
+ − 319
if ( !$conn )
+ − 320
return false;
+ − 321
// Our list of tables included in Enano
+ − 322
$tables = Array( 'categories', 'comments', 'config', 'logs', 'page_text', 'session_keys', 'pages', 'users', 'users_extra', 'themes', 'buddies', 'banlist', 'files', 'privmsgs', 'sidebar', 'hits', 'search_index', 'groups', 'group_members', 'acl', 'search_cache', 'tags', 'page_groups', 'page_group_members' );
+ − 323
+ − 324
// Drop each table individually; if it fails, it probably means we're trying to drop a
+ − 325
// table that didn't exist in the Enano version we're deleting the database for.
+ − 326
foreach ( $tables as $table )
+ − 327
{
+ − 328
// Remember that table_prefix is sanitized.
+ − 329
$table = "{$_POST['table_prefix']}$table";
+ − 330
@mysql_query("DROP TABLE $table;", $conn);
+ − 331
}
+ − 332
return true;
+ − 333
}
+ − 334
+ − 335
function stg_decrypt_admin_pass($act_get = false)
+ − 336
{
+ − 337
static $decrypted_pass = false;
+ − 338
if ( $act_get )
+ − 339
return $decrypted_pass;
+ − 340
+ − 341
$aes = new AESCrypt(AES_BITS, AES_BLOCKSIZE);
+ − 342
+ − 343
if ( !empty($_POST['crypt_data']) )
+ − 344
{
+ − 345
require('config.new.php');
+ − 346
if ( !isset($cryptkey) )
+ − 347
{
+ − 348
return false;
+ − 349
}
+ − 350
define('_INSTRESUME_AES_KEYBACKUP', $key);
+ − 351
$key = hexdecode($cryptkey);
+ − 352
+ − 353
$decrypted_pass = $aes->decrypt($_POST['crypt_data'], $key, ENC_HEX);
+ − 354
+ − 355
}
+ − 356
else
+ − 357
{
+ − 358
$decrypted_pass = $_POST['admin_pass'];
+ − 359
}
+ − 360
if ( empty($decrypted_pass) )
+ − 361
return false;
+ − 362
return true;
+ − 363
}
+ − 364
+ − 365
function stg_generate_aes_key($act_get = false)
+ − 366
{
+ − 367
static $key = false;
+ − 368
if ( $act_get )
+ − 369
return $key;
+ − 370
+ − 371
$aes = new AESCrypt(AES_BITS, AES_BLOCKSIZE);
+ − 372
$key = $aes->gen_readymade_key();
+ − 373
return true;
+ − 374
}
+ − 375
+ − 376
function stg_parse_schema($act_get = false)
+ − 377
{
+ − 378
static $schema;
+ − 379
if ( $act_get )
+ − 380
return $schema;
+ − 381
+ − 382
$admin_pass = stg_decrypt_admin_pass(true);
+ − 383
$key = stg_generate_aes_key(true);
+ − 384
$aes = new AESCrypt(AES_BITS, AES_BLOCKSIZE);
+ − 385
$key = $aes->hextostring($key);
+ − 386
$admin_pass = $aes->encrypt($admin_pass, $key, ENC_HEX);
+ − 387
+ − 388
$cacheonoff = is_writable(ENANO_ROOT.'/cache/') ? '1' : '0';
+ − 389
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 390
$admin_user = $_POST['admin_user'];
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 391
$admin_user = str_replace('_', ' ', $admin_user);
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 392
$admin_user = mysql_real_escape_string($admin_user);
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 393
256
+ − 394
$schema = file_get_contents('schema.sql');
+ − 395
$schema = str_replace('{{SITE_NAME}}', mysql_real_escape_string($_POST['sitename'] ), $schema);
+ − 396
$schema = str_replace('{{SITE_DESC}}', mysql_real_escape_string($_POST['sitedesc'] ), $schema);
+ − 397
$schema = str_replace('{{COPYRIGHT}}', mysql_real_escape_string($_POST['copyright'] ), $schema);
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 398
$schema = str_replace('{{ADMIN_USER}}', $admin_user , $schema);
256
+ − 399
$schema = str_replace('{{ADMIN_PASS}}', mysql_real_escape_string($admin_pass ), $schema);
+ − 400
$schema = str_replace('{{ADMIN_EMAIL}}', mysql_real_escape_string($_POST['admin_email']), $schema);
+ − 401
$schema = str_replace('{{ENABLE_CACHE}}', mysql_real_escape_string($cacheonoff ), $schema);
+ − 402
$schema = str_replace('{{REAL_NAME}}', '', $schema);
+ − 403
$schema = str_replace('{{TABLE_PREFIX}}', $_POST['table_prefix'], $schema);
+ − 404
$schema = str_replace('{{VERSION}}', ENANO_VERSION, $schema);
+ − 405
$schema = str_replace('{{ADMIN_EMBED_PHP}}', $_POST['admin_embed_php'], $schema);
+ − 406
// Not anymore!! :-D
+ − 407
// $schema = str_replace('{{BETA_VERSION}}', ENANO_BETA_VERSION, $schema);
+ − 408
+ − 409
if(isset($_POST['wiki_mode']))
+ − 410
{
+ − 411
$schema = str_replace('{{WIKI_MODE}}', '1', $schema);
+ − 412
}
+ − 413
else
+ − 414
{
+ − 415
$schema = str_replace('{{WIKI_MODE}}', '0', $schema);
+ − 416
}
+ − 417
+ − 418
// Build an array of queries
+ − 419
$schema = explode("\n", $schema);
+ − 420
+ − 421
foreach ( $schema as $i => $sql )
+ − 422
{
+ − 423
$query =& $schema[$i];
+ − 424
$t = trim($query);
+ − 425
if ( empty($t) || preg_match('/^(\#|--)/i', $t) )
+ − 426
{
+ − 427
unset($schema[$i]);
+ − 428
unset($query);
+ − 429
}
+ − 430
}
+ − 431
+ − 432
$schema = array_values($schema);
+ − 433
$schema = implode("\n", $schema);
+ − 434
$schema = explode(";\n", $schema);
+ − 435
+ − 436
foreach ( $schema as $i => $sql )
+ − 437
{
+ − 438
$query =& $schema[$i];
+ − 439
if ( substr($query, ( strlen($query) - 1 ), 1 ) != ';' )
+ − 440
{
+ − 441
$query .= ';';
+ − 442
}
+ − 443
}
+ − 444
+ − 445
return true;
+ − 446
}
+ − 447
+ − 448
function stg_install($_unused, $already_run)
+ − 449
{
+ − 450
// This one's pretty easy.
+ − 451
$conn = stg_mysql_connect(true);
+ − 452
if ( !is_resource($conn) )
+ − 453
return false;
+ − 454
$schema = stg_parse_schema(true);
+ − 455
if ( !is_array($schema) )
+ − 456
return false;
+ − 457
+ − 458
// If we're resuming installation, the encryption key was regenerated.
+ − 459
// This means we'll have to update the encrypted password in the database.
+ − 460
if ( $already_run )
+ − 461
{
+ − 462
$admin_pass = stg_decrypt_admin_pass(true);
+ − 463
$key = stg_generate_aes_key(true);
+ − 464
$aes = new AESCrypt(AES_BITS, AES_BLOCKSIZE);
+ − 465
$key = $aes->hextostring($key);
+ − 466
$admin_pass = $aes->encrypt($admin_pass, $key, ENC_HEX);
+ − 467
$admin_user = mysql_real_escape_string($_POST['admin_user']);
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 468
$admin_user = str_replace('_', ' ', $admin_user);
256
+ − 469
+ − 470
$q = @mysql_query("UPDATE {$_POST['table_prefix']}users SET password='$admin_pass' WHERE username='$admin_user';");
+ − 471
if ( !$q )
+ − 472
{
+ − 473
echo '<p><tt>MySQL return: ' . mysql_error() . '</tt></p>';
+ − 474
return false;
+ − 475
}
+ − 476
+ − 477
return true;
+ − 478
}
+ − 479
+ − 480
// OK, do the loop, baby!!!
+ − 481
foreach($schema as $q)
+ − 482
{
+ − 483
$r = mysql_query($q, $conn);
+ − 484
if ( !$r )
+ − 485
{
+ − 486
echo '<p><tt>MySQL return: ' . mysql_error() . '</tt></p>';
+ − 487
return false;
+ − 488
}
+ − 489
}
+ − 490
+ − 491
return true;
+ − 492
}
+ − 493
+ − 494
function stg_write_config()
+ − 495
{
+ − 496
$privkey = stg_generate_aes_key(true);
+ − 497
+ − 498
switch($_POST['urlscheme'])
+ − 499
{
+ − 500
case "ugly":
+ − 501
default:
+ − 502
$cp = scriptPath.'/index.php?title=';
+ − 503
break;
+ − 504
case "short":
+ − 505
$cp = scriptPath.'/index.php/';
+ − 506
break;
+ − 507
case "tiny":
+ − 508
$cp = scriptPath.'/';
+ − 509
break;
+ − 510
}
+ − 511
+ − 512
if ( $_POST['urlscheme'] == 'tiny' )
+ − 513
{
+ − 514
$contents = '# Begin Enano rules
+ − 515
RewriteEngine on
+ − 516
RewriteCond %{REQUEST_FILENAME} !-d
+ − 517
RewriteCond %{REQUEST_FILENAME} !-f
+ − 518
RewriteRule ^(.+) '.scriptPath.'/index.php?title=$1 [L,QSA]
+ − 519
RewriteRule \.(php|html|gif|jpg|png|css|js)$ - [L]
+ − 520
# End Enano rules
+ − 521
';
+ − 522
if ( file_exists('./.htaccess') )
+ − 523
$ht = fopen(ENANO_ROOT.'/.htaccess', 'a+');
+ − 524
else
+ − 525
$ht = fopen(ENANO_ROOT.'/.htaccess.new', 'w');
+ − 526
if ( !$ht )
+ − 527
return false;
+ − 528
fwrite($ht, $contents);
+ − 529
fclose($ht);
+ − 530
}
+ − 531
+ − 532
$config_file = '<?php
+ − 533
/* Enano auto-generated configuration file - editing not recommended! */
+ − 534
$dbhost = \''.addslashes($_POST['db_host']).'\';
+ − 535
$dbname = \''.addslashes($_POST['db_name']).'\';
+ − 536
$dbuser = \''.addslashes($_POST['db_user']).'\';
+ − 537
$dbpasswd = \''.addslashes($_POST['db_pass']).'\';
+ − 538
if ( !defined(\'ENANO_CONSTANTS\') )
+ − 539
{
+ − 540
define(\'ENANO_CONSTANTS\', \'\');
+ − 541
define(\'table_prefix\', \''.addslashes($_POST['table_prefix']).'\');
+ − 542
define(\'scriptPath\', \''.scriptPath.'\');
+ − 543
define(\'contentPath\', \''.$cp.'\');
+ − 544
define(\'ENANO_INSTALLED\', \'true\');
+ − 545
}
+ − 546
$crypto_key = \''.$privkey.'\';
+ − 547
?>';
+ − 548
+ − 549
$cf_handle = fopen(ENANO_ROOT.'/config.new.php', 'w');
+ − 550
if ( !$cf_handle )
+ − 551
return false;
+ − 552
fwrite($cf_handle, $config_file);
+ − 553
+ − 554
fclose($cf_handle);
+ − 555
+ − 556
return true;
+ − 557
}
+ − 558
+ − 559
function _stg_rename_config_revert()
+ − 560
{
+ − 561
if ( file_exists('./config.php') )
+ − 562
{
+ − 563
@rename('./config.php', './config.new.php');
+ − 564
}
+ − 565
+ − 566
$handle = @fopen('./config.php.new', 'w');
+ − 567
if ( !$handle )
+ − 568
return false;
+ − 569
$contents = '<?php $cryptkey = \'' . _INSTRESUME_AES_KEYBACKUP . '\'; ?>';
+ − 570
fwrite($handle, $contents);
+ − 571
fclose($handle);
+ − 572
return true;
+ − 573
}
+ − 574
+ − 575
function stg_rename_config()
+ − 576
{
+ − 577
if ( !@rename('./config.new.php', './config.php') )
+ − 578
{
+ − 579
echo '<p>Can\'t rename config.php</p>';
+ − 580
_stg_rename_config_revert();
+ − 581
return false;
+ − 582
}
+ − 583
+ − 584
if ( $_POST['urlscheme'] == 'tiny' && !file_exists('./.htaccess') )
+ − 585
{
+ − 586
if ( !@rename('./.htaccess.new', './.htaccess') )
+ − 587
{
+ − 588
echo '<p>Can\'t rename .htaccess</p>';
+ − 589
_stg_rename_config_revert();
+ − 590
return false;
+ − 591
}
+ − 592
}
+ − 593
return true;
+ − 594
}
+ − 595
+ − 596
function stg_start_api_success()
+ − 597
{
+ − 598
return true;
+ − 599
}
+ − 600
+ − 601
function stg_start_api_failure()
+ − 602
{
+ − 603
return false;
+ − 604
}
+ − 605
240
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 606
function stg_import_language()
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 607
{
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 608
global $db, $session, $paths, $template, $plugins; // Common objects
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 609
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 610
$lang_file = ENANO_ROOT . "/language/english/enano.json";
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 611
install_language("eng", "English", "English", $lang_file);
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 612
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 613
return true;
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 614
}
f0149a27df5f
Localized default sidebar; installer should work now including the lang import; l10n in installer to follow
Dan
diff
changeset
+ − 615
256
+ − 616
function stg_init_logs()
+ − 617
{
+ − 618
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 619
+ − 620
$q = $db->sql_query('INSERT INTO ' . table_prefix . 'logs(log_type,action,time_id,date_string,author,page_text,edit_summary) VALUES(\'security\', \'install_enano\', ' . time() . ', \'' . date('d M Y h:i a') . '\', \'' . mysql_real_escape_string($_POST['admin_user']) . '\', \'' . mysql_real_escape_string(ENANO_VERSION) . '\', \'' . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . '\');');
+ − 621
if ( !$q )
+ − 622
{
+ − 623
echo '<p><tt>MySQL return: ' . mysql_error() . '</tt></p>';
+ − 624
return false;
+ − 625
}
+ − 626
+ − 627
if ( !$session->get_permissions('clear_logs') )
+ − 628
{
+ − 629
echo '<p><tt>$session: denied clear_logs</tt></p>';
+ − 630
return false;
+ − 631
}
+ − 632
+ − 633
PageUtils::flushlogs('Main_Page', 'Article');
+ − 634
+ − 635
return true;
+ − 636
}
+ − 637
+ − 638
//die('Key size: ' . AES_BITS . '<br />Block size: ' . AES_BLOCKSIZE);
+ − 639
+ − 640
if(!function_exists('wikiFormat'))
+ − 641
{
+ − 642
function wikiFormat($message, $filter_links = true)
+ − 643
{
+ − 644
$wiki = & Text_Wiki::singleton('Mediawiki');
+ − 645
$wiki->setRenderConf('Xhtml', 'code', 'css_filename', 'codefilename');
+ − 646
$wiki->setRenderConf('Xhtml', 'wikilink', 'view_url', contentPath);
+ − 647
$result = $wiki->transform($message, 'Xhtml');
+ − 648
+ − 649
// HTML fixes
+ − 650
$result = preg_replace('#<tr>([\s]*?)<\/tr>#is', '', $result);
+ − 651
$result = preg_replace('#<p>([\s]*?)<\/p>#is', '', $result);
+ − 652
$result = preg_replace('#<br />([\s]*?)<table#is', '<table', $result);
+ − 653
+ − 654
return $result;
+ − 655
}
+ − 656
}
+ − 657
+ − 658
global $failed, $warned;
+ − 659
+ − 660
$failed = false;
+ − 661
$warned = false;
+ − 662
+ − 663
function not($var)
+ − 664
{
+ − 665
if($var)
+ − 666
{
+ − 667
return false;
+ − 668
}
+ − 669
else
+ − 670
{
+ − 671
return true;
+ − 672
}
+ − 673
}
+ − 674
+ − 675
function run_test($code, $desc, $extended_desc, $warn = false)
+ − 676
{
+ − 677
global $failed, $warned;
+ − 678
static $cv = true;
+ − 679
$cv = not($cv);
+ − 680
$val = eval($code);
+ − 681
if($val)
+ − 682
{
+ − 683
if($cv) $color='CCFFCC'; else $color='AAFFAA';
243
+ − 684
echo "<tr><td style='background-color: #$color; width: 500px; padding: 5px;'>$desc</td><td style='padding-left: 10px;'><img alt='Test passed' src='images/good.gif' /></td></tr>";
256
+ − 685
} elseif(!$val && $warn) {
+ − 686
if($cv) $color='FFFFCC'; else $color='FFFFAA';
243
+ − 687
echo "<tr><td style='background-color: #$color; width: 500px; padding: 5px;'>$desc<br /><b>$extended_desc</b></td><td style='padding-left: 10px;'><img alt='Test passed with warning' src='images/unknown.gif' /></td></tr>";
256
+ − 688
$warned = true;
+ − 689
} else {
+ − 690
if($cv) $color='FFCCCC'; else $color='FFAAAA';
243
+ − 691
echo "<tr><td style='background-color: #$color; width: 500px; padding: 5px;'>$desc<br /><b>$extended_desc</b></td><td style='padding-left: 10px;'><img alt='Test failed' src='images/bad.gif' /></td></tr>";
256
+ − 692
$failed = true;
+ − 693
}
+ − 694
}
243
+ − 695
function is_apache()
+ − 696
{
+ − 697
return strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') ? true : false;
+ − 698
}
256
+ − 699
+ − 700
require_once('includes/template.php');
+ − 701
243
+ − 702
//
+ − 703
// Startup localization
+ − 704
//
+ − 705
+ − 706
// We need $db just for the _die function
+ − 707
$db = new mysql();
+ − 708
+ − 709
$lang = new Language('eng');
+ − 710
$lang->load_file('./language/english/install.json');
+ − 711
+ − 712
if ( !isset($_GET['mode']) )
+ − 713
$_GET['mode'] = 'welcome';
+ − 714
256
+ − 715
switch($_GET['mode'])
+ − 716
{
+ − 717
case 'mysql_test':
+ − 718
error_reporting(0);
+ − 719
$dbhost = rawurldecode($_POST['host']);
+ − 720
$dbname = rawurldecode($_POST['name']);
+ − 721
$dbuser = rawurldecode($_POST['user']);
+ − 722
$dbpass = rawurldecode($_POST['pass']);
+ − 723
$dbrootuser = rawurldecode($_POST['root_user']);
+ − 724
$dbrootpass = rawurldecode($_POST['root_pass']);
+ − 725
if($dbrootuser != '')
+ − 726
{
+ − 727
$conn = mysql_connect($dbhost, $dbrootuser, $dbrootpass);
+ − 728
if(!$conn)
+ − 729
{
+ − 730
$e = mysql_error();
+ − 731
if(strstr($e, "Lost connection"))
+ − 732
die('host'.$e);
+ − 733
else
+ − 734
die('root'.$e);
+ − 735
}
+ − 736
$rsp = 'good';
257
+ − 737
$q = mysql_query('USE `' . mysql_real_escape_string($dbname) . '`;', $conn);
256
+ − 738
if(!$q)
+ − 739
{
+ − 740
$e = mysql_error();
+ − 741
if(strstr($e, 'Unknown database'))
+ − 742
{
+ − 743
$rsp .= '_creating_db';
+ − 744
}
+ − 745
}
+ − 746
mysql_close($conn);
+ − 747
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
+ − 748
if(!$conn)
+ − 749
{
+ − 750
$e = mysql_error();
+ − 751
if(strstr($e, "Lost connection"))
+ − 752
die('host'.$e);
+ − 753
else
+ − 754
$rsp .= '_creating_user';
+ − 755
}
+ − 756
mysql_close($conn);
+ − 757
die($rsp);
+ − 758
}
+ − 759
else
+ − 760
{
+ − 761
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
+ − 762
if(!$conn)
+ − 763
{
+ − 764
$e = mysql_error();
+ − 765
if(strstr($e, "Lost connection"))
+ − 766
die('host'.$e);
+ − 767
else
+ − 768
die('auth'.$e);
+ − 769
}
257
+ − 770
$q = mysql_query('USE `' . mysql_real_escape_string($dbname) . '`;', $conn);
256
+ − 771
if(!$q)
+ − 772
{
+ − 773
$e = mysql_error();
+ − 774
if(strstr($e, 'Unknown database'))
+ − 775
{
+ − 776
die('name'.$e);
+ − 777
}
+ − 778
else
+ − 779
{
+ − 780
die('perm'.$e);
+ − 781
}
+ − 782
}
+ − 783
}
+ − 784
$v = mysql_get_server_info();
+ − 785
if(version_compare($v, '4.1.17', '<')) die('vers'.$v);
+ − 786
mysql_close($conn);
+ − 787
die('good');
+ − 788
break;
+ − 789
case 'pophelp':
+ − 790
$topic = ( isset($_GET['topic']) ) ? $_GET['topic'] : 'invalid';
+ − 791
switch($topic)
+ − 792
{
+ − 793
case 'admin_embed_php':
249
+ − 794
$title = $lang->get('pophelp_admin_embed_php_title');
+ − 795
$content = $lang->get('pophelp_admin_embed_php_body');
256
+ − 796
break;
+ − 797
default:
+ − 798
$title = 'Invalid topic';
+ − 799
$content = 'Invalid help topic.';
+ − 800
break;
+ − 801
}
249
+ − 802
$close_window = $lang->get('pophelp_btn_close_window');
256
+ − 803
echo <<<EOF
+ − 804
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ − 805
<html>
+ − 806
<head>
+ − 807
<title>Enano installation quick help • {$title}</title>
+ − 808
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ − 809
<style type="text/css">
+ − 810
body {
+ − 811
font-family: trebuchet ms, verdana, arial, helvetica, sans-serif;
+ − 812
font-size: 9pt;
+ − 813
}
+ − 814
h2 { border-bottom: 1px solid #90B0D0; margin-bottom: 0; }
+ − 815
h3 { font-size: 11pt; font-weight: bold; }
+ − 816
li { list-style: url(../images/bullet.gif); }
+ − 817
p { margin: 1.0em; }
+ − 818
blockquote { background-color: #F4F4F4; border: 1px dotted #406080; margin: 1em; padding: 10px; max-height: 250px; overflow: auto; }
+ − 819
a { color: #7090B0; }
+ − 820
a:hover { color: #90B0D0; }
+ − 821
</style>
+ − 822
</head>
+ − 823
<body>
+ − 824
<h2>{$title}</h2>
+ − 825
{$content}
+ − 826
<p style="text-align: right;">
249
+ − 827
<a href="#" onclick="window.close(); return false;">{$close_window}</a>
256
+ − 828
</p>
+ − 829
</body>
+ − 830
</html>
+ − 831
EOF;
+ − 832
exit;
+ − 833
break;
243
+ − 834
case 'langjs':
+ − 835
header('Content-type: text/javascript');
+ − 836
$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
+ − 837
$lang_js = $json->encode($lang->strings);
+ − 838
// use EEOF here because jEdit misinterprets "typ'eof'"
+ − 839
echo <<<EEOF
+ − 840
if ( typeof(enano_lang) != 'object' )
+ − 841
var enano_lang = new Object();
+ − 842
+ − 843
enano_lang[1] = $lang_js;
+ − 844
+ − 845
EEOF;
+ − 846
exit;
+ − 847
break;
256
+ − 848
default:
+ − 849
break;
+ − 850
}
+ − 851
+ − 852
$template = new template_nodb();
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 853
$template->load_theme('stpatty', 'shamrock', false);
256
+ − 854
+ − 855
$modestrings = Array(
243
+ − 856
'welcome' => $lang->get('welcome_modetitle'),
+ − 857
'license' => $lang->get('license_modetitle'),
+ − 858
'sysreqs' => $lang->get('sysreqs_modetitle'),
+ − 859
'database'=> $lang->get('database_modetitle'),
+ − 860
'website' => $lang->get('website_modetitle'),
+ − 861
'login' => $lang->get('login_modetitle'),
+ − 862
'confirm' => $lang->get('confirm_modetitle'),
+ − 863
'install' => $lang->get('install_modetitle'),
+ − 864
'finish' => $lang->get('finish_modetitle')
256
+ − 865
);
+ − 866
+ − 867
$sideinfo = '';
+ − 868
$vars = $template->extract_vars('elements.tpl');
+ − 869
$p = $template->makeParserText($vars['sidebar_button']);
+ − 870
foreach ( $modestrings as $id => $str )
+ − 871
{
+ − 872
if ( $_GET['mode'] == $id )
+ − 873
{
+ − 874
$flags = 'style="font-weight: bold; text-decoration: underline;"';
+ − 875
$this_page = $str;
+ − 876
}
+ − 877
else
+ − 878
{
+ − 879
$flags = '';
+ − 880
}
+ − 881
$p->assign_vars(Array(
+ − 882
'HREF' => '#',
+ − 883
'FLAGS' => $flags . ' onclick="return false;"',
+ − 884
'TEXT' => $str
+ − 885
));
+ − 886
$sideinfo .= $p->run();
+ − 887
}
+ − 888
+ − 889
$template->init_vars();
+ − 890
+ − 891
if(isset($_GET['mode']) && $_GET['mode'] == 'css')
+ − 892
{
+ − 893
header('Content-type: text/css');
+ − 894
echo $template->get_css();
+ − 895
exit;
+ − 896
}
+ − 897
243
+ − 898
if ( defined('ENANO_IS_STABLE') )
+ − 899
$branch = 'stable';
+ − 900
else if ( defined('ENANO_IS_UNSTABLE') )
+ − 901
$branch = 'unstable';
+ − 902
else
+ − 903
{
+ − 904
$version = explode('.', ENANO_VERSION);
+ − 905
if ( !isset($version[1]) )
+ − 906
// unknown branch, really
+ − 907
$branch = 'unstable';
+ − 908
else
+ − 909
{
+ − 910
$version[1] = intval($version[1]);
+ − 911
if ( $version[1] % 2 == 1 )
+ − 912
$branch = 'unstable';
+ − 913
else
+ − 914
$branch = 'stable';
+ − 915
}
+ − 916
}
+ − 917
256
+ − 918
$template->header();
+ − 919
if(!isset($_GET['mode'])) $_GET['mode'] = 'license';
+ − 920
switch($_GET['mode'])
+ − 921
{
+ − 922
default:
+ − 923
case 'welcome':
+ − 924
?>
+ − 925
<div style="text-align: center; margin-top: 10px;">
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 926
<img alt="[ Enano CMS Project logo ]" src="images/enano-artwork/installer-greeting-green.png" style="display: block; margin: 0 auto; padding-left: 100px;" />
243
+ − 927
<h2><?php echo $lang->get('welcome_heading'); ?></h2>
+ − 928
<h3>
+ − 929
<?php
+ − 930
$branch_l = $lang->get("welcome_branch_$branch");
+ − 931
+ − 932
$v_string = sprintf('%s %s – %s', $lang->get('welcome_version'), ENANO_VERSION, $branch_l);
+ − 933
echo $v_string;
+ − 934
?>
+ − 935
</h3>
256
+ − 936
<?php
243
+ − 937
if ( defined('ENANO_CODE_NAME') )
+ − 938
{
+ − 939
echo '<p>';
+ − 940
echo $lang->get('welcome_aka', array(
+ − 941
'codename' => strtolower(ENANO_CODE_NAME)
+ − 942
));
+ − 943
echo '</p>';
+ − 944
}
256
+ − 945
?>
+ − 946
<form action="install.php?mode=license" method="post">
243
+ − 947
<input type="submit" value="<?php echo $lang->get('welcome_btn_start'); ?>" />
256
+ − 948
</form>
+ − 949
</div>
+ − 950
<?php
+ − 951
break;
+ − 952
case "license":
+ − 953
?>
243
+ − 954
<h3><?php echo $lang->get('license_heading'); ?></h3>
+ − 955
<p><?php echo $lang->get('license_blurb_thankyou'); ?></p>
+ − 956
<p><?php echo $lang->get('license_blurb_pleaseread'); ?></p>
256
+ − 957
<div style="height: 500px; clip: rect(0px,auto,500px,auto); overflow: auto; padding: 10px; border: 1px dashed #456798; margin: 1em;">
+ − 958
<?php
243
+ − 959
if ( !file_exists('./GPL') || !file_exists('./language/english/install/license-deed.html') )
+ − 960
{
+ − 961
echo 'Cannot find the license files.';
+ − 962
}
+ − 963
echo file_get_contents('./language/english/install/license-deed.html');
+ − 964
if ( defined('ENANO_BETA_VERSION') || $branch == 'unstable' )
256
+ − 965
{
+ − 966
?>
243
+ − 967
<h3><?php echo $lang->get('license_info_unstable_title'); ?></h3>
+ − 968
<p><?php echo $lang->get('license_info_unstable_body'); ?></p>
256
+ − 969
<?php
+ − 970
}
+ − 971
?>
243
+ − 972
<h3><?php echo $lang->get('license_section_gpl_heading'); ?></h3>
+ − 973
<?php if ( $lang->lang_code != 'eng' ): ?>
+ − 974
<p><i><?php echo $lang->get('license_gpl_blurb_inenglish'); ?></i></p>
+ − 975
<?php endif; ?>
256
+ − 976
<?php echo wikiFormat(file_get_contents(ENANO_ROOT . '/GPL')); ?>
+ − 977
</div>
+ − 978
<div class="pagenav">
+ − 979
<form action="install.php?mode=sysreqs" method="post">
+ − 980
<table border="0">
+ − 981
<tr>
243
+ − 982
<td>
+ − 983
<input type="submit" value="<?php echo $lang->get('license_btn_i_agree'); ?>" />
+ − 984
</td>
+ − 985
<td>
+ − 986
<p>
+ − 987
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 988
• <?php echo $lang->get('license_objective_ensure_agree'); ?><br />
+ − 989
• <?php echo $lang->get('license_objective_have_db_info'); ?>
+ − 990
</p>
+ − 991
</td>
256
+ − 992
</tr>
+ − 993
</table>
+ − 994
</form>
+ − 995
</div>
+ − 996
<?php
+ − 997
break;
+ − 998
case "sysreqs":
+ − 999
error_reporting(E_ALL);
+ − 1000
?>
243
+ − 1001
<h3><?php echo $lang->get('sysreqs_heading'); ?></h3>
+ − 1002
<p><?php echo $lang->get('sysreqs_blurb'); ?></p>
256
+ − 1003
<table border="0" cellspacing="0" cellpadding="0">
+ − 1004
<?php
243
+ − 1005
run_test('return version_compare(\'4.3.0\', PHP_VERSION, \'<\');', $lang->get('sysreqs_req_php'), $lang->get('sysreqs_req_desc_php') );
+ − 1006
run_test('return function_exists(\'mysql_connect\');', $lang->get('sysreqs_req_mysql'), $lang->get('sysreqs_req_desc_mysql') );
+ − 1007
run_test('return @ini_get(\'file_uploads\');', $lang->get('sysreqs_req_uploads'), $lang->get('sysreqs_req_desc_uploads') );
+ − 1008
run_test('return is_apache();', $lang->get('sysreqs_req_apache'), $lang->get('sysreqs_req_desc_apache'), true);
+ − 1009
run_test('return is_writable(ENANO_ROOT.\'/config.new.php\');', $lang->get('sysreqs_req_config'), $lang->get('sysreqs_req_desc_config') );
+ − 1010
run_test('return file_exists(\'/usr/bin/convert\');', $lang->get('sysreqs_req_magick'), $lang->get('sysreqs_req_desc_magick'), true);
+ − 1011
run_test('return is_writable(ENANO_ROOT.\'/cache/\');', $lang->get('sysreqs_req_cachewriteable'), $lang->get('sysreqs_req_desc_cachewriteable'), true);
+ − 1012
run_test('return is_writable(ENANO_ROOT.\'/files/\');', $lang->get('sysreqs_req_fileswriteable'), $lang->get('sysreqs_req_desc_fileswriteable'), true);
256
+ − 1013
echo '</table>';
+ − 1014
if(!$failed)
+ − 1015
{
+ − 1016
?>
+ − 1017
+ − 1018
<div class="pagenav">
+ − 1019
<?php
+ − 1020
if($warned) {
+ − 1021
echo '<table border="0" cellspacing="0" cellpadding="0">';
243
+ − 1022
run_test('return false;', $lang->get('sysreqs_summary_warn_title'), $lang->get('sysreqs_summary_warn_body'), true);
256
+ − 1023
echo '</table>';
+ − 1024
} else {
+ − 1025
echo '<table border="0" cellspacing="0" cellpadding="0">';
243
+ − 1026
run_test('return true;', '<b>' . $lang->get('sysreqs_summary_success_title') . '</b><br />' . $lang->get('sysreqs_summary_success_body'), 'You should never see this text. Congratulations for being an Enano hacker!');
256
+ − 1027
echo '</table>';
+ − 1028
}
+ − 1029
?>
244
+ − 1030
<form action="install.php?mode=database" method="post">
+ − 1031
<table border="0">
+ − 1032
<tr>
+ − 1033
<td>
+ − 1034
<input type="submit" value="<?php echo $lang->get('meta_btn_continue'); ?>" />
+ − 1035
</td>
+ − 1036
<td>
+ − 1037
<p>
+ − 1038
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 1039
• <?php echo $lang->get('sysreqs_objective_scalebacks'); ?><br />
+ − 1040
• <?php echo $lang->get('license_objective_have_db_info'); ?>
+ − 1041
</p>
+ − 1042
</td>
+ − 1043
</tr>
+ − 1044
</table>
+ − 1045
</form>
+ − 1046
</div>
+ − 1047
<?php
+ − 1048
}
+ − 1049
else
+ − 1050
{
+ − 1051
if ( $failed )
+ − 1052
{
256
+ − 1053
echo '<div class="pagenav"><table border="0" cellspacing="0" cellpadding="0">';
243
+ − 1054
run_test('return false;', $lang->get('sysreqs_summary_fail_title'), $lang->get('sysreqs_summary_fail_body'));
256
+ − 1055
echo '</table></div>';
+ − 1056
}
+ − 1057
}
+ − 1058
?>
+ − 1059
<?php
+ − 1060
break;
+ − 1061
case "database":
+ − 1062
?>
+ − 1063
<script type="text/javascript">
+ − 1064
function ajaxGet(uri, f) {
+ − 1065
if (window.XMLHttpRequest) {
+ − 1066
ajax = new XMLHttpRequest();
+ − 1067
} else {
+ − 1068
if (window.ActiveXObject) {
+ − 1069
ajax = new ActiveXObject("Microsoft.XMLHTTP");
+ − 1070
} else {
+ − 1071
alert('Enano client-side runtime error: No AJAX support, unable to continue');
+ − 1072
return;
+ − 1073
}
+ − 1074
}
+ − 1075
ajax.onreadystatechange = f;
+ − 1076
ajax.open('GET', uri, true);
+ − 1077
ajax.send(null);
+ − 1078
}
+ − 1079
+ − 1080
function ajaxPost(uri, parms, f) {
+ − 1081
if (window.XMLHttpRequest) {
+ − 1082
ajax = new XMLHttpRequest();
+ − 1083
} else {
+ − 1084
if (window.ActiveXObject) {
+ − 1085
ajax = new ActiveXObject("Microsoft.XMLHTTP");
+ − 1086
} else {
+ − 1087
alert('Enano client-side runtime error: No AJAX support, unable to continue');
+ − 1088
return;
+ − 1089
}
+ − 1090
}
+ − 1091
ajax.onreadystatechange = f;
+ − 1092
ajax.open('POST', uri, true);
+ − 1093
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ − 1094
ajax.setRequestHeader("Content-length", parms.length);
+ − 1095
ajax.setRequestHeader("Connection", "close");
+ − 1096
ajax.send(parms);
+ − 1097
}
+ − 1098
function ajaxTestConnection()
+ − 1099
{
+ − 1100
v = verify();
+ − 1101
if(!v)
+ − 1102
{
244
+ − 1103
alert($lang.get('meta_msg_err_verification'));
256
+ − 1104
return false;
+ − 1105
}
+ − 1106
var frm = document.forms.dbinfo;
+ − 1107
db_host = escape(frm.db_host.value.replace('+', '%2B'));
+ − 1108
db_name = escape(frm.db_name.value.replace('+', '%2B'));
+ − 1109
db_user = escape(frm.db_user.value.replace('+', '%2B'));
+ − 1110
db_pass = escape(frm.db_pass.value.replace('+', '%2B'));
+ − 1111
db_root_user = escape(frm.db_root_user.value.replace('+', '%2B'));
+ − 1112
db_root_pass = escape(frm.db_root_pass.value.replace('+', '%2B'));
+ − 1113
+ − 1114
parms = 'host='+db_host+'&name='+db_name+'&user='+db_user+'&pass='+db_pass+'&root_user='+db_root_user+'&root_pass='+db_root_pass;
+ − 1115
ajaxPost('<?php echo scriptPath; ?>/install.php?mode=mysql_test', parms, function() {
+ − 1116
if(ajax.readyState==4)
+ − 1117
{
+ − 1118
s = ajax.responseText.substr(0, 4);
+ − 1119
t = ajax.responseText.substr(4, ajax.responseText.length);
+ − 1120
if(s.substr(0, 4)=='good')
+ − 1121
{
+ − 1122
document.getElementById('s_db_host').src='images/good.gif';
+ − 1123
document.getElementById('s_db_name').src='images/good.gif';
+ − 1124
document.getElementById('s_db_auth').src='images/good.gif';
+ − 1125
document.getElementById('s_db_root').src='images/good.gif';
244
+ − 1126
if(t.match(/_creating_db/)) document.getElementById('e_db_name').innerHTML = $lang.get('database_msg_warn_creating_db');
+ − 1127
if(t.match(/_creating_user/)) document.getElementById('e_db_auth').innerHTML = $lang.get('database_msg_warn_creating_user');
256
+ − 1128
document.getElementById('s_mysql_version').src='images/good.gif';
244
+ − 1129
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_info_mysql_good');
256
+ − 1130
}
+ − 1131
else
+ − 1132
{
+ − 1133
switch(s)
+ − 1134
{
+ − 1135
case 'host':
+ − 1136
document.getElementById('s_db_host').src='images/bad.gif';
+ − 1137
document.getElementById('s_db_name').src='images/unknown.gif';
+ − 1138
document.getElementById('s_db_auth').src='images/unknown.gif';
+ − 1139
document.getElementById('s_db_root').src='images/unknown.gif';
244
+ − 1140
document.getElementById('e_db_host').innerHTML = $lang.get('database_msg_err_mysql_connect', { db_host: document.forms.dbinfo.db_host.value, mysql_error: t });
+ − 1141
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_warn_mysql_version');
256
+ − 1142
break;
+ − 1143
case 'auth':
+ − 1144
document.getElementById('s_db_host').src='images/good.gif';
+ − 1145
document.getElementById('s_db_name').src='images/unknown.gif';
+ − 1146
document.getElementById('s_db_auth').src='images/bad.gif';
+ − 1147
document.getElementById('s_db_root').src='images/unknown.gif';
244
+ − 1148
document.getElementById('e_db_auth').innerHTML = $lang.get('database_msg_err_mysql_auth', { mysql_error: t });
+ − 1149
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_warn_mysql_version');
256
+ − 1150
break;
+ − 1151
case 'perm':
+ − 1152
document.getElementById('s_db_host').src='images/good.gif';
+ − 1153
document.getElementById('s_db_name').src='images/bad.gif';
+ − 1154
document.getElementById('s_db_auth').src='images/good.gif';
+ − 1155
document.getElementById('s_db_root').src='images/unknown.gif';
244
+ − 1156
document.getElementById('e_db_name').innerHTML = $lang.get('database_msg_err_mysql_dbperm', { mysql_error: t });
+ − 1157
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_warn_mysql_version');
256
+ − 1158
break;
+ − 1159
case 'name':
+ − 1160
document.getElementById('s_db_host').src='images/good.gif';
+ − 1161
document.getElementById('s_db_name').src='images/bad.gif';
+ − 1162
document.getElementById('s_db_auth').src='images/good.gif';
+ − 1163
document.getElementById('s_db_root').src='images/unknown.gif';
244
+ − 1164
document.getElementById('e_db_name').innerHTML = $lang.get('database_msg_err_mysql_dbexist', { mysql_error: t });
+ − 1165
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_warn_mysql_version');
256
+ − 1166
break;
+ − 1167
case 'root':
+ − 1168
document.getElementById('s_db_host').src='images/good.gif';
+ − 1169
document.getElementById('s_db_name').src='images/unknown.gif';
+ − 1170
document.getElementById('s_db_auth').src='images/unknown.gif';
+ − 1171
document.getElementById('s_db_root').src='images/bad.gif';
244
+ − 1172
document.getElementById('e_db_root').innerHTML = $lang.get('database_msg_err_mysql_auth', { mysql_error: t });
+ − 1173
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_warn_mysql_version');
256
+ − 1174
break;
+ − 1175
case 'vers':
+ − 1176
document.getElementById('s_db_host').src='images/good.gif';
+ − 1177
document.getElementById('s_db_name').src='images/good.gif';
+ − 1178
document.getElementById('s_db_auth').src='images/good.gif';
+ − 1179
document.getElementById('s_db_root').src='images/good.gif';
244
+ − 1180
if(t.match(/_creating_db/)) document.getElementById('e_db_name').innerHTML = $lang.get('database_msg_warn_creating_db');
+ − 1181
if(t.match(/_creating_user/)) document.getElementById('e_db_auth').innerHTML = $lang.get('database_msg_warn_creating_user');
256
+ − 1182
244
+ − 1183
document.getElementById('e_mysql_version').innerHTML = $lang.get('database_msg_err_mysql_version', { mysql_version: t });
256
+ − 1184
document.getElementById('s_mysql_version').src='images/bad.gif';
+ − 1185
default:
+ − 1186
alert(t);
+ − 1187
break;
+ − 1188
}
+ − 1189
}
+ − 1190
}
+ − 1191
});
+ − 1192
}
+ − 1193
function verify()
+ − 1194
{
+ − 1195
document.getElementById('e_db_host').innerHTML = '';
+ − 1196
document.getElementById('e_db_auth').innerHTML = '';
+ − 1197
document.getElementById('e_db_name').innerHTML = '';
+ − 1198
document.getElementById('e_db_root').innerHTML = '';
+ − 1199
var frm = document.forms.dbinfo;
+ − 1200
ret = true;
+ − 1201
if(frm.db_host.value != '')
+ − 1202
{
+ − 1203
document.getElementById('s_db_host').src='images/unknown.gif';
+ − 1204
}
+ − 1205
else
+ − 1206
{
+ − 1207
document.getElementById('s_db_host').src='images/bad.gif';
+ − 1208
ret = false;
+ − 1209
}
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 1210
if(frm.db_name.value.match(/^([a-z0-9_]+)$/g))
256
+ − 1211
{
+ − 1212
document.getElementById('s_db_name').src='images/unknown.gif';
+ − 1213
}
+ − 1214
else
+ − 1215
{
+ − 1216
document.getElementById('s_db_name').src='images/bad.gif';
+ − 1217
ret = false;
+ − 1218
}
+ − 1219
if(frm.db_user.value != '')
+ − 1220
{
+ − 1221
document.getElementById('s_db_auth').src='images/unknown.gif';
+ − 1222
}
+ − 1223
else
+ − 1224
{
+ − 1225
document.getElementById('s_db_auth').src='images/bad.gif';
+ − 1226
ret = false;
+ − 1227
}
+ − 1228
if(frm.table_prefix.value.match(/^([a-z0-9_]*)$/g))
+ − 1229
{
+ − 1230
document.getElementById('s_table_prefix').src='images/good.gif';
+ − 1231
}
+ − 1232
else
+ − 1233
{
+ − 1234
document.getElementById('s_table_prefix').src='images/bad.gif';
+ − 1235
ret = false;
+ − 1236
}
+ − 1237
if(frm.db_root_user.value == '')
+ − 1238
{
+ − 1239
document.getElementById('s_db_root').src='images/good.gif';
+ − 1240
}
+ − 1241
else if(frm.db_root_user.value != '' && frm.db_root_pass.value == '')
+ − 1242
{
+ − 1243
document.getElementById('s_db_root').src='images/bad.gif';
+ − 1244
ret = false;
+ − 1245
}
+ − 1246
else
+ − 1247
{
+ − 1248
document.getElementById('s_db_root').src='images/unknown.gif';
+ − 1249
}
+ − 1250
if(ret) frm._cont.disabled = false;
+ − 1251
else frm._cont.disabled = true;
+ − 1252
return ret;
+ − 1253
}
+ − 1254
window.onload = verify;
+ − 1255
</script>
244
+ − 1256
<p><?php echo $lang->get('database_blurb_needdb'); ?></p>
+ − 1257
<p><?php echo $lang->get('database_blurb_howtomysql'); ?></p>
256
+ − 1258
<?php
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 1259
if ( file_exists('/etc/enano-is-virt-appliance') )
256
+ − 1260
{
244
+ − 1261
echo '<p>
+ − 1262
' . $lang->get('database_vm_login_info', array( 'host' => 'localhost', 'user' => 'enano', 'pass' => 'clurichaun', 'name' => 'enano_www1' )) . '
+ − 1263
</p>';
256
+ − 1264
}
+ − 1265
?>
+ − 1266
<form name="dbinfo" action="install.php?mode=website" method="post">
+ − 1267
<table border="0">
244
+ − 1268
<tr>
+ − 1269
<td colspan="3" style="text-align: center">
+ − 1270
<h3><?php echo $lang->get('database_table_title'); ?></h3>
+ − 1271
</td>
+ − 1272
</tr>
+ − 1273
<tr>
+ − 1274
<td>
+ − 1275
<b><?php echo $lang->get('database_field_hostname_title'); ?></b>
+ − 1276
<br /><?php echo $lang->get('database_field_hostname_body'); ?>
+ − 1277
<br /><span style="color: #993300" id="e_db_host"></span>
+ − 1278
</td>
+ − 1279
<td>
+ − 1280
<input onkeyup="verify();" name="db_host" size="30" type="text" />
+ − 1281
</td>
+ − 1282
<td>
+ − 1283
<img id="s_db_host" alt="Good/bad icon" src="images/bad.gif" />
+ − 1284
</td>
+ − 1285
</tr>
+ − 1286
<tr>
+ − 1287
<td>
+ − 1288
<b><?php echo $lang->get('database_field_dbname_title'); ?></b><br />
+ − 1289
<?php echo $lang->get('database_field_dbname_body'); ?><br />
+ − 1290
<span style="color: #993300" id="e_db_name"></span>
+ − 1291
</td>
+ − 1292
<td>
+ − 1293
<input onkeyup="verify();" name="db_name" size="30" type="text" />
+ − 1294
</td>
+ − 1295
<td>
+ − 1296
<img id="s_db_name" alt="Good/bad icon" src="images/bad.gif" />
+ − 1297
</td>
+ − 1298
</tr>
+ − 1299
<tr>
+ − 1300
<td rowspan="2">
+ − 1301
<b><?php echo $lang->get('database_field_dbauth_title'); ?></b><br />
+ − 1302
<?php echo $lang->get('database_field_dbauth_body'); ?><br />
+ − 1303
<span style="color: #993300" id="e_db_auth"></span>
+ − 1304
</td>
+ − 1305
<td>
+ − 1306
<input onkeyup="verify();" name="db_user" size="30" type="text" />
+ − 1307
</td>
+ − 1308
<td rowspan="2">
+ − 1309
<img id="s_db_auth" alt="Good/bad icon" src="images/bad.gif" />
+ − 1310
</td>
+ − 1311
</tr>
+ − 1312
<tr>
+ − 1313
<td>
+ − 1314
<input name="db_pass" size="30" type="password" />
+ − 1315
</td>
+ − 1316
</tr>
+ − 1317
<tr>
+ − 1318
<td colspan="3" style="text-align: center">
+ − 1319
<h3><?php echo $lang->get('database_heading_optionalinfo'); ?></h3>
+ − 1320
</td>
+ − 1321
</tr>
+ − 1322
<tr>
+ − 1323
<td>
+ − 1324
<b><?php echo $lang->get('database_field_tableprefix_title'); ?></b><br />
+ − 1325
<?php echo $lang->get('database_field_tableprefix_body'); ?>
+ − 1326
</td>
+ − 1327
<td>
+ − 1328
<input onkeyup="verify();" name="table_prefix" size="30" type="text" />
+ − 1329
</td>
+ − 1330
<td>
+ − 1331
<img id="s_table_prefix" alt="Good/bad icon" src="images/good.gif" />
+ − 1332
</td>
+ − 1333
</tr>
+ − 1334
<tr>
+ − 1335
<td rowspan="2">
+ − 1336
<b><?php echo $lang->get('database_field_rootauth_title'); ?></b><br />
+ − 1337
<?php echo $lang->get('database_field_rootauth_body'); ?><br />
+ − 1338
<span style="color: #993300" id="e_db_root"></span>
+ − 1339
</td>
+ − 1340
<td>
+ − 1341
<input onkeyup="verify();" name="db_root_user" size="30" type="text" />
+ − 1342
</td>
+ − 1343
<td rowspan="2">
+ − 1344
<img id="s_db_root" alt="Good/bad icon" src="images/good.gif" />
+ − 1345
</td>
+ − 1346
</tr>
+ − 1347
<tr>
+ − 1348
<td>
+ − 1349
<input onkeyup="verify();" name="db_root_pass" size="30" type="password" />
+ − 1350
</td>
+ − 1351
</tr>
+ − 1352
<tr>
+ − 1353
<td>
+ − 1354
<b><?php echo $lang->get('database_field_mysqlversion_title'); ?></b>
+ − 1355
</td>
+ − 1356
<td id="e_mysql_version">
+ − 1357
<?php echo $lang->get('database_field_mysqlversion_blurb_willbechecked'); ?>
+ − 1358
</td>
+ − 1359
<td>
+ − 1360
<img id="s_mysql_version" alt="Good/bad icon" src="images/unknown.gif" />
+ − 1361
</td>
+ − 1362
</tr>
+ − 1363
<tr>
+ − 1364
<td>
+ − 1365
<b><?php echo $lang->get('database_field_droptables_title'); ?></b><br />
+ − 1366
<?php echo $lang->get('database_field_droptables_body'); ?>
+ − 1367
</td>
+ − 1368
<td>
+ − 1369
<input type="checkbox" name="drop_tables" id="dtcheck" /> <label for="dtcheck"><?php echo $lang->get('database_field_droptables_lbl'); ?></label>
+ − 1370
</td>
+ − 1371
</tr>
+ − 1372
<tr>
+ − 1373
<td colspan="3" style="text-align: center">
+ − 1374
<input type="button" value="<?php echo $lang->get('database_btn_testconnection'); ?>" onclick="ajaxTestConnection();" />
+ − 1375
</td>
+ − 1376
</tr>
256
+ − 1377
</table>
+ − 1378
<div class="pagenav">
244
+ − 1379
<table border="0">
+ − 1380
<tr>
+ − 1381
<td>
+ − 1382
<input type="submit" value="<?php echo $lang->get('meta_btn_continue'); ?>" onclick="return verify();" name="_cont" />
+ − 1383
</td>
+ − 1384
<td>
+ − 1385
<p>
+ − 1386
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 1387
• <?php echo $lang->get('database_objective_test'); ?><br />
+ − 1388
• <?php echo $lang->get('database_objective_uncrypt'); ?>
+ − 1389
</p>
+ − 1390
</td>
+ − 1391
</tr>
+ − 1392
</table>
+ − 1393
</div>
256
+ − 1394
</form>
+ − 1395
<?php
+ − 1396
break;
+ − 1397
case "website":
244
+ − 1398
if ( !isset($_POST['_cont']) )
+ − 1399
{
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 1400
echo 'No POST data signature found. Please <a href="install.php?mode=license">restart the installation</a>.';
256
+ − 1401
$template->footer();
+ − 1402
exit;
+ − 1403
}
+ − 1404
unset($_POST['_cont']);
+ − 1405
?>
+ − 1406
<script type="text/javascript">
+ − 1407
function verify()
+ − 1408
{
+ − 1409
var frm = document.forms.siteinfo;
+ − 1410
ret = true;
+ − 1411
if(frm.sitename.value.match(/^(.+)$/g) && frm.sitename.value != 'Enano')
+ − 1412
{
+ − 1413
document.getElementById('s_name').src='images/good.gif';
+ − 1414
}
+ − 1415
else
+ − 1416
{
+ − 1417
document.getElementById('s_name').src='images/bad.gif';
+ − 1418
ret = false;
+ − 1419
}
+ − 1420
if(frm.sitedesc.value.match(/^(.+)$/g))
+ − 1421
{
+ − 1422
document.getElementById('s_desc').src='images/good.gif';
+ − 1423
}
+ − 1424
else
+ − 1425
{
+ − 1426
document.getElementById('s_desc').src='images/bad.gif';
+ − 1427
ret = false;
+ − 1428
}
+ − 1429
if(frm.copyright.value.match(/^(.+)$/g))
+ − 1430
{
+ − 1431
document.getElementById('s_copyright').src='images/good.gif';
+ − 1432
}
+ − 1433
else
+ − 1434
{
+ − 1435
document.getElementById('s_copyright').src='images/bad.gif';
+ − 1436
ret = false;
+ − 1437
}
+ − 1438
if(ret) frm._cont.disabled = false;
+ − 1439
else frm._cont.disabled = true;
+ − 1440
return ret;
+ − 1441
}
+ − 1442
window.onload = verify;
+ − 1443
</script>
+ − 1444
<form name="siteinfo" action="install.php?mode=login" method="post">
+ − 1445
<?php
+ − 1446
$k = array_keys($_POST);
+ − 1447
for($i=0;$i<sizeof($_POST);$i++) {
+ − 1448
echo '<input type="hidden" name="'.htmlspecialchars($k[$i]).'" value="'.htmlspecialchars($_POST[$k[$i]]).'" />'."\n";
+ − 1449
}
+ − 1450
?>
249
+ − 1451
<p><?php echo $lang->get('website_header_blurb'); ?></p>
256
+ − 1452
<table border="0">
249
+ − 1453
<tr>
+ − 1454
<td>
+ − 1455
<b><?php echo $lang->get('website_field_name_title'); ?></b><br />
+ − 1456
<?php echo $lang->get('website_field_name_body'); ?>
+ − 1457
</td>
+ − 1458
<td>
+ − 1459
<input onkeyup="verify();" name="sitename" type="text" size="30" />
+ − 1460
</td>
+ − 1461
<td>
+ − 1462
<img id="s_name" alt="Good/bad icon" src="images/bad.gif" />
+ − 1463
</td>
+ − 1464
</tr>
+ − 1465
<tr>
+ − 1466
<td>
+ − 1467
<b><?php echo $lang->get('website_field_desc_title'); ?></b><br />
+ − 1468
<?php echo $lang->get('website_field_desc_body'); ?>
+ − 1469
</td>
+ − 1470
<td>
+ − 1471
<input onkeyup="verify();" name="sitedesc" type="text" size="30" />
+ − 1472
</td>
+ − 1473
<td>
+ − 1474
<img id="s_desc" alt="Good/bad icon" src="images/bad.gif" />
+ − 1475
</td>
+ − 1476
</tr>
+ − 1477
<tr>
+ − 1478
<td>
+ − 1479
<b><?php echo $lang->get('website_field_copyright_title'); ?></b><br />
+ − 1480
<?php echo $lang->get('website_field_copyright_body'); ?>
+ − 1481
</td>
+ − 1482
<td>
+ − 1483
<input onkeyup="verify();" name="copyright" type="text" size="30" />
+ − 1484
</td>
+ − 1485
<td>
+ − 1486
<img id="s_copyright" alt="Good/bad icon" src="images/bad.gif" />
+ − 1487
</td>
+ − 1488
</tr>
+ − 1489
<tr>
+ − 1490
<td>
+ − 1491
<b><?php echo $lang->get('website_field_wikimode_title'); ?></b><br />
+ − 1492
<?php echo $lang->get('website_field_wikimode_body'); ?>
+ − 1493
</td>
+ − 1494
<td>
+ − 1495
<input name="wiki_mode" type="checkbox" id="wmcheck" /> <label for="wmcheck"><?php echo $lang->get('website_field_wikimode_checkbox'); ?></label>
+ − 1496
</td>
+ − 1497
<td>
+ − 1498
+ − 1499
</td>
+ − 1500
</tr>
+ − 1501
<tr>
+ − 1502
<td>
+ − 1503
<b><?php echo $lang->get('website_field_urlscheme_title'); ?></b><br />
+ − 1504
<?php echo $lang->get('website_field_urlscheme_body'); ?>
+ − 1505
</td>
+ − 1506
<td colspan="2">
+ − 1507
<input type="radio" <?php if(!is_apache()) echo 'checked="checked" '; ?>name="urlscheme" value="ugly" id="ugly" /> <label for="ugly"><?php echo $lang->get('website_field_urlscheme_ugly'); ?></label><br />
+ − 1508
<input type="radio" <?php if(is_apache()) echo 'checked="checked" '; ?>name="urlscheme" value="short" id="short" /> <label for="short"><?php echo $lang->get('website_field_urlscheme_short'); ?></label><br />
+ − 1509
<input type="radio" name="urlscheme" value="tiny" id="petite"> <label for="petite"><?php echo $lang->get('website_field_urlscheme_tiny'); ?></label>
+ − 1510
</td>
+ − 1511
</tr>
256
+ − 1512
</table>
+ − 1513
<div class="pagenav">
+ − 1514
<table border="0">
249
+ − 1515
<tr>
+ − 1516
<td>
+ − 1517
<input type="submit" value="<?php echo $lang->get('meta_btn_continue'); ?>" onclick="return verify();" name="_cont" />
+ − 1518
</td>
+ − 1519
<td>
+ − 1520
<p>
+ − 1521
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 1522
• <?php echo $lang->get('website_objective_verify'); ?>
+ − 1523
</p>
+ − 1524
</td>
+ − 1525
</tr>
256
+ − 1526
</table>
+ − 1527
</div>
+ − 1528
</form>
+ − 1529
<?php
+ − 1530
break;
+ − 1531
case "login":
+ − 1532
if(!isset($_POST['_cont'])) {
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 1533
echo 'No POST data signature found. Please <a href="install.php?mode=license">restart the installation</a>.';
256
+ − 1534
$template->footer();
+ − 1535
exit;
+ − 1536
}
+ − 1537
unset($_POST['_cont']);
+ − 1538
require('config.new.php');
+ − 1539
$aes = new AESCrypt(AES_BITS, AES_BLOCKSIZE);
+ − 1540
if ( isset($crypto_key) )
+ − 1541
{
+ − 1542
$cryptkey = $crypto_key;
+ − 1543
}
+ − 1544
if(!isset($cryptkey) || ( isset($cryptkey) && strlen($cryptkey) != AES_BITS / 4) )
+ − 1545
{
+ − 1546
$cryptkey = $aes->gen_readymade_key();
+ − 1547
$handle = @fopen(ENANO_ROOT.'/config.new.php', 'w');
+ − 1548
if(!$handle)
+ − 1549
{
249
+ − 1550
echo '<p>ERROR: Despite my repeated attempts to verify that the configuration file can be written, I was indeed prevented from opening it for writing. Maybe you\'re still on <del>crack</del> Windows?</p>';
256
+ − 1551
$template->footer();
+ − 1552
exit;
+ − 1553
}
+ − 1554
fwrite($handle, '<?php $cryptkey = \''.$cryptkey.'\'; ?>');
+ − 1555
fclose($handle);
+ − 1556
}
+ − 1557
// Sorry for the ugly hack, but this f***s up jEdit badly.
+ − 1558
echo '
+ − 1559
<script type="text/javascript">
+ − 1560
function verify()
+ − 1561
{
+ − 1562
var frm = document.forms.login;
+ − 1563
ret = true;
+ − 1564
if ( frm.admin_user.value.match(/^([A-z0-9 \\-\\.]+)$/) && !frm.admin_user.value.match(/^(?:(?:\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$/) && frm.admin_user.value.toLowerCase() != \'anonymous\' )
+ − 1565
{
+ − 1566
document.getElementById(\'s_user\').src = \'images/good.gif\';
+ − 1567
}
+ − 1568
else
+ − 1569
{
+ − 1570
document.getElementById(\'s_user\').src = \'images/bad.gif\';
+ − 1571
ret = false;
+ − 1572
}
+ − 1573
if(frm.admin_pass.value.length >= 6 && frm.admin_pass.value == frm.admin_pass_confirm.value)
+ − 1574
{
+ − 1575
document.getElementById(\'s_password\').src = \'images/good.gif\';
+ − 1576
}
+ − 1577
else
+ − 1578
{
+ − 1579
document.getElementById(\'s_password\').src = \'images/bad.gif\';
+ − 1580
ret = false;
+ − 1581
}
+ − 1582
if(frm.admin_email.value.match(/^(?:[\\w\\d]+\\.?)+@(?:(?:[\\w\\d]\\-?)+\\.)+\\w{2,4}$/))
+ − 1583
{
+ − 1584
document.getElementById(\'s_email\').src = \'images/good.gif\';
+ − 1585
}
+ − 1586
else
+ − 1587
{
+ − 1588
document.getElementById(\'s_email\').src = \'images/bad.gif\';
+ − 1589
ret = false;
+ − 1590
}
+ − 1591
if(ret) frm._cont.disabled = false;
+ − 1592
else frm._cont.disabled = true;
+ − 1593
return ret;
+ − 1594
}
+ − 1595
window.onload = verify;
+ − 1596
+ − 1597
function cryptdata()
+ − 1598
{
+ − 1599
if(!verify()) return false;
+ − 1600
}
+ − 1601
</script>
+ − 1602
';
+ − 1603
?>
+ − 1604
<form name="login" action="install.php?mode=confirm" method="post" onsubmit="runEncryption();">
+ − 1605
<?php
+ − 1606
$k = array_keys($_POST);
+ − 1607
for($i=0;$i<sizeof($_POST);$i++) {
+ − 1608
echo '<input type="hidden" name="'.htmlspecialchars($k[$i]).'" value="'.htmlspecialchars($_POST[$k[$i]]).'" />'."\n";
+ − 1609
}
+ − 1610
?>
249
+ − 1611
<p><?php echo $lang->get('login_header_blurb'); ?></p>
256
+ − 1612
<table border="0">
249
+ − 1613
<tr>
+ − 1614
<td><b><?php echo $lang->get('login_field_username_title'); ?></b><br /><small><?php echo $lang->get('login_field_username_body'); ?></small></td>
+ − 1615
<td><input onkeyup="verify();" name="admin_user" type="text" size="30" /></td>
+ − 1616
<td><img id="s_user" alt="Good/bad icon" src="images/bad.gif" /></td>
+ − 1617
</tr>
+ − 1618
<tr>
+ − 1619
<td><?php echo $lang->get('login_field_password_title'); ?></td>
+ − 1620
<td><input onkeyup="verify();" name="admin_pass" type="password" size="30" /></td>
+ − 1621
<td rowspan="2"><img id="s_password" alt="Good/bad icon" src="images/bad.gif" /></td>
+ − 1622
</tr>
+ − 1623
<tr>
+ − 1624
<td><?php echo $lang->get('login_field_password_confirm'); ?></td>
+ − 1625
<td><input onkeyup="verify();" name="admin_pass_confirm" type="password" size="30" /></td>
+ − 1626
</tr>
+ − 1627
<tr>
+ − 1628
<td><?php echo $lang->get('login_field_email_title'); ?></td>
+ − 1629
<td><input onkeyup="verify();" name="admin_email" type="text" size="30" /></td>
+ − 1630
<td><img id="s_email" alt="Good/bad icon" src="images/bad.gif" /></td>
+ − 1631
</tr>
256
+ − 1632
<tr>
+ − 1633
<td>
249
+ − 1634
<?php echo $lang->get('login_field_allowphp_title'); ?><br />
+ − 1635
<small>
+ − 1636
<span style="color: #D84308">
+ − 1637
<?php
+ − 1638
echo $lang->get('login_field_allowphp_body',
+ − 1639
array(
+ − 1640
'important_notes' => '<a href="install.php?mode=pophelp&topic=admin_embed_php" onclick="window.open(this.href, \'pophelpwin\', \'width=550,height=400,status=no,toolbars=no,toolbar=no,address=no,scroll=yes\'); return false;" style="color: #D84308; text-decoration: underline;">' . $lang->get('login_field_allowphp_isi') . '</a>'
+ − 1641
)
+ − 1642
);
+ − 1643
?>
+ − 1644
</span>
+ − 1645
</small>
256
+ − 1646
</td>
+ − 1647
<td>
249
+ − 1648
<label><input type="radio" name="admin_embed_php" value="2" checked="checked" /> <?php echo $lang->get('login_field_allowphp_disabled'); ?></label>
+ − 1649
<label><input type="radio" name="admin_embed_php" value="4" /> <?php echo $lang->get('login_field_allowphp_enabled'); ?></label>
256
+ − 1650
</td>
+ − 1651
<td></td>
+ − 1652
</tr>
249
+ − 1653
<tr><td colspan="3"><?php echo $lang->get('login_aes_blurb'); ?></td></tr>
256
+ − 1654
</table>
+ − 1655
<div class="pagenav">
+ − 1656
<table border="0">
249
+ − 1657
<tr>
+ − 1658
<td>
+ − 1659
<input type="submit" value="<?php echo $lang->get('meta_btn_continue'); ?>" onclick="return cryptdata();" name="_cont" />
+ − 1660
</td>
+ − 1661
<td>
+ − 1662
<p>
+ − 1663
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 1664
• <?php echo $lang->get('login_objective_remember'); ?>
+ − 1665
</p>
+ − 1666
</td>
+ − 1667
</tr>
256
+ − 1668
</table>
+ − 1669
</div>
+ − 1670
<div id="cryptdebug"></div>
249
+ − 1671
<input type="hidden" name="use_crypt" value="no" />
+ − 1672
<input type="hidden" name="crypt_key" value="<?php echo $cryptkey; ?>" />
+ − 1673
<input type="hidden" name="crypt_data" value="" />
256
+ − 1674
</form>
+ − 1675
<script type="text/javascript">
+ − 1676
// <![CDATA[
+ − 1677
var frm = document.forms.login;
+ − 1678
frm.admin_user.focus();
+ − 1679
function runEncryption()
+ − 1680
{
+ − 1681
str = '';
+ − 1682
for(i=0;i<keySizeInBits/4;i++) str+='0';
+ − 1683
var key = hexToByteArray(str);
+ − 1684
var pt = hexToByteArray(str);
+ − 1685
var ct = rijndaelEncrypt(pt, key, "ECB");
+ − 1686
var ect = byteArrayToHex(ct);
+ − 1687
switch(keySizeInBits)
+ − 1688
{
+ − 1689
case 128:
+ − 1690
v = '66e94bd4ef8a2c3b884cfa59ca342b2e';
+ − 1691
break;
+ − 1692
case 192:
+ − 1693
v = 'aae06992acbf52a3e8f4a96ec9300bd7aae06992acbf52a3e8f4a96ec9300bd7';
+ − 1694
break;
+ − 1695
case 256:
+ − 1696
v = 'dc95c078a2408989ad48a21492842087dc95c078a2408989ad48a21492842087';
+ − 1697
break;
+ − 1698
}
+ − 1699
var testpassed = ( ect == v && md5_vm_test() );
+ − 1700
var frm = document.forms.login;
+ − 1701
if(testpassed)
+ − 1702
{
+ − 1703
// alert('encryption self-test passed');
+ − 1704
frm.use_crypt.value = 'yes';
+ − 1705
var cryptkey = frm.crypt_key.value;
+ − 1706
frm.crypt_key.value = '';
+ − 1707
if(cryptkey != byteArrayToHex(hexToByteArray(cryptkey)))
+ − 1708
{
+ − 1709
alert('Byte array conversion SUCKS');
+ − 1710
testpassed = false;
+ − 1711
}
+ − 1712
cryptkey = hexToByteArray(cryptkey);
+ − 1713
if(!cryptkey || ( ( typeof cryptkey == 'string' || typeof cryptkey == 'object' ) ) && cryptkey.length != keySizeInBits / 8 )
+ − 1714
{
+ − 1715
frm._cont.disabled = true;
+ − 1716
len = ( typeof cryptkey == 'string' || typeof cryptkey == 'object' ) ? '\nLen: '+cryptkey.length : '';
+ − 1717
alert('The key is messed up\nType: '+typeof(cryptkey)+len);
+ − 1718
}
+ − 1719
}
+ − 1720
else
+ − 1721
{
+ − 1722
// alert('encryption self-test FAILED');
+ − 1723
}
+ − 1724
if(testpassed)
+ − 1725
{
+ − 1726
pass = frm.admin_pass.value;
+ − 1727
pass = stringToByteArray(pass);
+ − 1728
cryptstring = rijndaelEncrypt(pass, cryptkey, 'ECB');
+ − 1729
//decrypted = rijndaelDecrypt(cryptstring, cryptkey, 'ECB');
+ − 1730
//decrypted = byteArrayToString(decrypted);
+ − 1731
//return false;
+ − 1732
if(!cryptstring)
+ − 1733
{
+ − 1734
return false;
+ − 1735
}
+ − 1736
cryptstring = byteArrayToHex(cryptstring);
+ − 1737
// document.getElementById('cryptdebug').innerHTML = '<pre>Data: '+cryptstring+'<br />Key: '+byteArrayToHex(cryptkey)+'</pre>';
+ − 1738
frm.crypt_data.value = cryptstring;
+ − 1739
frm.admin_pass.value = '';
+ − 1740
frm.admin_pass_confirm.value = '';
+ − 1741
}
+ − 1742
return false;
+ − 1743
}
+ − 1744
// ]]>
+ − 1745
</script>
+ − 1746
<?php
+ − 1747
break;
+ − 1748
case "confirm":
+ − 1749
if(!isset($_POST['_cont'])) {
+ − 1750
echo 'No POST data signature found. Please <a href="install.php?mode=sysreqs">restart the installation</a>.';
+ − 1751
$template->footer();
+ − 1752
exit;
+ − 1753
}
+ − 1754
unset($_POST['_cont']);
+ − 1755
?>
+ − 1756
<form name="confirm" action="install.php?mode=install" method="post">
+ − 1757
<?php
+ − 1758
$k = array_keys($_POST);
+ − 1759
for($i=0;$i<sizeof($_POST);$i++) {
+ − 1760
echo '<input type="hidden" name="'.htmlspecialchars($k[$i]).'" value="'.htmlspecialchars($_POST[$k[$i]]).'" />'."\n";
+ − 1761
}
+ − 1762
?>
249
+ − 1763
<h3><?php echo $lang->get('confirm_header_blurb_title'); ?></h3>
+ − 1764
<p><?php echo $lang->get('confirm_header_blurb_body'); ?></p>
256
+ − 1765
<ul>
249
+ − 1766
<li><?php echo $lang->get('confirm_lbl_db_host'); ?> <?php echo $_POST['db_host']; ?></li>
+ − 1767
<li><?php echo $lang->get('confirm_lbl_db_name'); ?> <?php echo $_POST['db_name']; ?></li>
+ − 1768
<li><?php echo $lang->get('confirm_lbl_db_user'); ?> <?php echo $_POST['db_user']; ?></li>
+ − 1769
<li><?php echo $lang->get('confirm_lbl_db_pass'); ?></li>
+ − 1770
<li><?php echo $lang->get('confirm_lbl_sitename'); ?> <?php echo $_POST['sitename']; ?></li>
+ − 1771
<li><?php echo $lang->get('confirm_lbl_sitedesc'); ?> <?php echo $_POST['sitedesc']; ?></li>
+ − 1772
<li><?php echo $lang->get('confirm_lbl_adminuser'); ?> <?php echo $_POST['admin_user']; ?></li>
+ − 1773
<li><?php echo $lang->get('confirm_lbl_aesbits'); ?> <?php echo $lang->get('confirm_lbl_aes_strength', array( 'aes_bits' => AES_BITS )); ?><br /><small><?php echo $lang->get('confirm_lbl_aes_change'); ?></small></li>
256
+ − 1774
</ul>
+ − 1775
<div class="pagenav">
+ − 1776
<table border="0">
+ − 1777
<tr>
249
+ − 1778
<td>
+ − 1779
<input type="submit" value="<?php echo $lang->get('confirm_btn_install_enano'); ?>" name="_cont" />
+ − 1780
</td>
+ − 1781
<td>
+ − 1782
<p>
+ − 1783
<span style="font-weight: bold;"><?php echo $lang->get('meta_lbl_before_continue'); ?></span><br />
+ − 1784
<!-- Like this even needs to be localized. :-P -->
+ − 1785
• <?php echo $lang->get('confirm_objective_pray'); ?>
+ − 1786
</p>
+ − 1787
</td>
256
+ − 1788
</tr>
+ − 1789
</table>
+ − 1790
</div>
+ − 1791
</form>
+ − 1792
<?php
+ − 1793
break;
+ − 1794
case "install":
+ − 1795
if(!isset($_POST['db_host']) ||
+ − 1796
!isset($_POST['db_name']) ||
+ − 1797
!isset($_POST['db_user']) ||
+ − 1798
!isset($_POST['db_pass']) ||
+ − 1799
!isset($_POST['sitename']) ||
+ − 1800
!isset($_POST['sitedesc']) ||
+ − 1801
!isset($_POST['copyright']) ||
+ − 1802
!isset($_POST['admin_user']) ||
+ − 1803
!isset($_POST['admin_pass']) ||
+ − 1804
!isset($_POST['admin_embed_php']) || ( isset($_POST['admin_embed_php']) && !in_array($_POST['admin_embed_php'], array('2', '4')) ) ||
+ − 1805
!isset($_POST['urlscheme'])
+ − 1806
)
+ − 1807
{
204
473cc747022a
You know what folks, a lot of Mercurial merges failed, and I just now figured out why. So now all changes from stable are permanently synced in.
Dan
diff
changeset
+ − 1808
echo 'The installer has detected that one or more required form values is not set. Please <a href="install.php?mode=license">restart the installation</a>.';
256
+ − 1809
$template->footer();
+ − 1810
exit;
+ − 1811
}
+ − 1812
switch($_POST['urlscheme'])
+ − 1813
{
+ − 1814
case "ugly":
+ − 1815
default:
+ − 1816
$cp = scriptPath.'/index.php?title=';
+ − 1817
break;
+ − 1818
case "short":
+ − 1819
$cp = scriptPath.'/index.php/';
+ − 1820
break;
+ − 1821
case "tiny":
+ − 1822
$cp = scriptPath.'/';
+ − 1823
break;
+ − 1824
}
+ − 1825
function err($t) { global $template; echo $t; $template->footer(); exit; }
+ − 1826
+ − 1827
// $stages = array('connect', 'decrypt', 'genkey', 'parse', 'sql', 'writeconfig', 'renameconfig', 'startapi', 'initlogs');
+ − 1828
252
+ − 1829
if ( !preg_match('/^[a-z0-9_-]*$/', $_POST['table_prefix']) )
256
+ − 1830
err('Hacking attempt was detected in table_prefix.');
+ − 1831
+ − 1832
start_install_table();
269
+ − 1833
+ − 1834
// Are we just trying to auto-rename the config files? If so, skip everything else
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1835
if ( !isset($_GET['stage']) || ( isset($_GET['stage']) && $_GET['stage'] != 'renameconfig' ) )
256
+ − 1836
{
+ − 1837
269
+ − 1838
// The stages connect, decrypt, genkey, and parse are preprocessing and don't do any actual data modification.
+ − 1839
// Thus, they need to be run on each retry, e.g. never skipped.
271
+ − 1840
run_installer_stage('connect', $lang->get('install_stg_connect_title'), 'stg_mysql_connect', $lang->get('install_stg_connect_body'), false);
269
+ − 1841
if ( isset($_POST['drop_tables']) )
+ − 1842
{
+ − 1843
// Are we supposed to drop any existing tables? If so, do it now
271
+ − 1844
run_installer_stage('drop', $lang->get('install_stg_drop_title'), 'stg_drop_tables', 'This step never returns failure');
269
+ − 1845
}
271
+ − 1846
run_installer_stage('decrypt', $lang->get('install_stg_decrypt_title'), 'stg_decrypt_admin_pass', $lang->get('install_stg_decrypt_body'), false);
+ − 1847
run_installer_stage('genkey', $lang->get('install_stg_genkey_title', array( 'aes_bits' => AES_BITS )), 'stg_generate_aes_key', $lang->get('install_stg_genkey_body'), false);
+ − 1848
run_installer_stage('parse', $lang->get('install_stg_parse_title'), 'stg_parse_schema', $lang->get('install_stg_parse_body'), false);
+ − 1849
run_installer_stage('sql', $lang->get('install_stg_sql_title'), 'stg_install', $lang->get('install_stg_sql_body'), false);
+ − 1850
run_installer_stage('writeconfig', $lang->get('install_stg_writeconfig_title'), 'stg_write_config', $lang->get('install_stg_writeconfig_body'));
269
+ − 1851
+ − 1852
// Mainstream installation complete - Enano should be usable now
+ − 1853
// The stage of starting the API is special because it has to be called out of function context.
+ − 1854
// To alleviate this, we have two functions, one that returns success and one that returns failure
+ − 1855
// If the Enano API load is successful, the success function is called to report the action to the user
+ − 1856
// If unsuccessful, the failure report is sent
+ − 1857
+ − 1858
$template_bak = $template;
+ − 1859
+ − 1860
$_GET['title'] = 'Main_Page';
+ − 1861
require('includes/common.php');
+ − 1862
+ − 1863
if ( is_object($db) && is_object($session) )
+ − 1864
{
271
+ − 1865
run_installer_stage('startapi', $lang->get('install_stg_startapi_title'), 'stg_start_api_success', '...', false);
269
+ − 1866
}
+ − 1867
else
+ − 1868
{
271
+ − 1869
run_installer_stage('startapi', $lang->get('install_stg_startapi_title'), 'stg_start_api_failure', $lang->get('install_stg_startapi_body'), false);
269
+ − 1870
}
+ − 1871
+ − 1872
// We need to be logged in (with admin rights) before logs can be flushed
+ − 1873
$admin_password = stg_decrypt_admin_pass(true);
+ − 1874
$session->login_without_crypto($_POST['admin_user'], $admin_password, false);
+ − 1875
+ − 1876
// Now that login cookies are set, initialize the session manager and ACLs
+ − 1877
$session->start();
+ − 1878
$paths->init();
+ − 1879
271
+ − 1880
run_installer_stage('importlang', $lang->get('install_stg_importlang_title'), 'stg_import_language', $lang->get('install_stg_importlang_body'));
+ − 1881
run_installer_stage('initlogs', $lang->get('install_stg_initlogs_title'), 'stg_init_logs', $lang->get('install_stg_initlogs_body'));
269
+ − 1882
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1883
/*
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1884
* HACKERS:
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1885
* If you're making a custom distribution of Enano, put all your custom plugin-related code here.
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1886
* You have access to the full Enano API as well as being logged in with complete admin rights.
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1887
* Don't do anything horrendously fancy here, unless you add a new stage (or more than one) and
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1888
* have the progress printed out properly.
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1889
*/
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1890
269
+ − 1891
} // check for stage == renameconfig
256
+ − 1892
else
+ − 1893
{
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1894
// If we did skip the main installer routine, set $template_bak to make the reversal later work properly
269
+ − 1895
$template_bak = $template;
256
+ − 1896
}
268
58477ab3937f
Hopefully managed to put enough hacks in there to make renaming the config file the last step, so if it fails, it can be done manually
Dan
diff
changeset
+ − 1897
270
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1898
// Final step is to rename the config file
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1899
// In early revisions of 1.0.2, this step was performed prior to the initialization of the Enano API. It was decided to move
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1900
// this stage to the end because it will fail more often than any other stage, thus making alternate routes imperative. If this
5bcdee999015
Major fixes to the ban system - large IP match lists don't slow down the server miserably anymore.
Dan
diff
changeset
+ − 1901
// stage fails, then no big deal, we'll just have the user rename the files manually and then let them see the pretty success message.
252
+ − 1902
run_installer_stage('renameconfig', $lang->get('install_stg_rename_title'), 'stg_rename_config', $lang->get('install_stg_rename_body'));
268
58477ab3937f
Hopefully managed to put enough hacks in there to make renaming the config file the last step, so if it fails, it can be done manually
Dan
diff
changeset
+ − 1903
256
+ − 1904
close_install_table();
+ − 1905
+ − 1906
unset($template);
+ − 1907
$template =& $template_bak;
+ − 1908
252
+ − 1909
echo '<h3>' . $lang->get('install_msg_complete_title') . '</h3>';
+ − 1910
echo '<p>' . $lang->get('install_msg_complete_body', array('finish_link' => 'install.php?mode=finish')) . '</p>';
256
+ − 1911
+ − 1912
// echo '<script type="text/javascript">window.location="'.scriptPath.'/install.php?mode=finish";</script>';
+ − 1913
+ − 1914
break;
+ − 1915
case "finish":
252
+ − 1916
echo '<h3>' . $lang->get('finish_msg_congratulations') . '</h3>
+ − 1917
' . $lang->get('finish_body') . '
+ − 1918
<p>' . $lang->get('finish_link_mainpage', array('mainpage_link' => 'index.php')) . '</p>';
256
+ − 1919
break;
+ − 1920
}
+ − 1921
$template->footer();
+ − 1922
+ − 1923
?>