00001 <?php
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 if(isset($_POST['step'])) $intStep = $_POST['step'];
00026 elseif(isset($_GET['step'])) $intStep = $_GET['step'];
00027 else $intStep = 0;
00028
00029
00030
00031
00032
00033
00034
00035
00036 if ( $intStep == 0 )
00037 {
00038
00039 if ( !file_exists('./lib/template.php') || !file_exists('./templates/default/install.html') )
00040 {
00041 echo 'Template Klasse wurde nicht gefunden<br />'.
00042 'Vergewissere dich, dass alle Dateien korrekt hochgeladen wurden und alle Ordner richtig erstellt wurden.<br />'.
00043 'Falls du Hilfe benötigst, kommen in #wdstools im Andaloria Irc';
00044 die();
00045 }
00046 require_once ( './lib/template.php' );
00047 $oStyle = new Template ( './templates/default/' );
00048 $oStyle->addReplacements ( array ( 'TEMPLATES' => $oStyle->getPath(),
00049 'STYLE' => 'style.css' ) );
00050 $oStyle->setTemplate ( 'install.html' );
00051 echo trim ( $oStyle->get_area( 'Step0' ) );
00052 die();
00053 }
00054
00055 elseif ( $intStep == 1 )
00056 {
00057
00058 $booError = false;
00059 $strRows = '';
00060
00061 require_once ( './lib/template.php' );
00062 $oStyle = new Template ( './templates/default/' );
00063 $oStyle->addReplacements ( array ( 'TEMPLATES' => $oStyle->getPath(),
00064 'STYLE' => 'style.css' ) );
00065 $oStyle->setTemplate ( 'install.html' );
00066
00067
00068
00069 if ( !file_exists ( './conf/config.php' ) )
00070 {
00071 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00072 'TITLE' => 'Fehler',
00073 'DATA1' => 'Fehlende Datei: <b>./conf/config.php</b>',
00074 'DATA2' => '<small>Die Datei fehlt. Bitte kontrolliere, ob du alle Dateien und<br /> Ordner aus dem Archiv richtig entpackt und hochgeladen hast.</small>' ) );
00075 $strRows .= $oStyle->get_area('StepRow');
00076 $booError = true;
00077 }
00078 if ( !is_writable ( './conf/config.php' ) )
00079 {
00080
00081 if ( !@chmod ( './conf/config.php', 0666 ) )
00082 {
00083 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00084 'TITLE' => 'Fehler',
00085 'DATA1' => 'Fehlende Schreibrechte auf <b>./conf/config.php</b>',
00086 'DATA2' => '<small>PhpMap hat keine Schreibrechte auf diese Datei.<br />Bitte kontrolliere, ob die Rechte auf 666 gestellt wurden.</small>' ) );
00087 $strRows .= $oStyle->get_area('StepRow');
00088 $booError = true;
00089 };
00090 }
00091
00092
00093 $strPhpVersion = phpversion();
00094 if ( version_compare ( $strPhpVersion, '4.1.2' ) < 0 )
00095 {
00096
00097 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00098 'TITLE' => 'Kritischer Fehler',
00099 'DATA1' => 'PHP Version zu alt',
00100 'DATA2' => '<small>Die PHP Version '.$strPhpVersion.' ist zu alt. Es wird mindestens 4.1.2 benötigt.</small>' ) );
00101 $strRows .= $oStyle->get_area('StepRow');
00102 $booError = true;
00103 }
00104
00105
00106 if ( !extension_loaded ( 'mysql' ) )
00107 {
00108
00109 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00110 'TITLE' => 'Kritischer Fehler',
00111 'DATA1' => 'MySQL fehlt',
00112 'DATA2' => '<small>Auf dem Server ist <a href="http://www.mysql.com" target="_blank">MySQL</a> nicht installiert.<br />Ohne MySQL funktioniert die PhpMap nicht.</small>' ) );
00113 $strRows .= $oStyle->get_area('StepRow');
00114 $booError = true;
00115 }
00116
00117
00118 if ( !extension_loaded ( 'gd' ) )
00119 {
00120
00121 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #CCCC00;"',
00122 'TITLE' => 'Warnung',
00123 'DATA1' => 'Gd fehlt',
00124 'DATA2' => '<small>Auf dem Server ist <a href="http://www.boutell.com/gd/" target="_blank">Gd</a> nicht installiert.<br />Ohne Gd2 funktioniert die Kartenanzeige nicht.</small>' ) );
00125 $strRows .= $oStyle->get_area('StepRow');
00126 }
00127
00128
00129 if ( ! (bool)ini_get('file_uploads') )
00130 {
00131
00132 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #aaaa00;"',
00133 'TITLE' => 'Hinweis',
00134 'DATA1' => 'Fileupload ist abgeschaltet',
00135 'DATA2' => '<small>Fileupload wird für den Kartenupload als Quelltextdatei benötigt. Man kann den Quelltext allerdings auch direkt einfügen, ohne das Dateiuploadinterface zu nutzen.</small>' ) );
00136 $strRows .= $oStyle->get_area('StepRow');
00137 }
00138
00139
00140
00141 if ( $booError )
00142 {
00143 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #AA0000;"',
00144 'TITLE' => '<b>Achtung</b>',
00145 'DATA1' => 'Es sind Fehler aufgetreten.',
00146 'DATA2' => 'Obwohl Fehler aufgetreten sind, kannst du versuchen, die Installation fortzusetzen.<br />Es wird jedoch dringend geraten, sich um die Beseitigung der Fehler zu kümmern.' ) );
00147 $strRows .= $oStyle->get_area('StepRow');
00148 }
00149
00150 $oStyle->addReplacements ( array ( 'ROWS' => $strRows ) );
00151
00152 echo trim ( $oStyle->get_area( 'Step1' ) );
00153 die();
00154 }
00155
00156 elseif ( $intStep == 2 )
00157 {
00158
00159
00160 $strRows = '';
00161 $booError = false;
00162 $booTableWarning = false;
00163
00164
00165 require_once ( './lib/template.php' );
00166 $oStyle = new Template ( './templates/default/' );
00167 $oStyle->addReplacements ( array ( 'TEMPLATES' => $oStyle->getPath(),
00168 'STYLE' => 'style.css' ) );
00169 $oStyle->setTemplate ( 'install.html' );
00170
00171
00172
00173 if ( !isset ( $_POST['sql_host'], $_POST['sql_db'], $_POST['sql_user'], $_POST['sql_pass'] ) )
00174 {
00175
00176 die('SQL Daten nicht übergeben.');
00177 }
00178
00179 $strHost = trim( $_POST['sql_host'] );
00180 $strDB = trim( $_POST['sql_db'] );
00181 $strUser = trim( $_POST['sql_user'] );
00182 $strPass = trim( $_POST['sql_pass'] );
00183 $strPrefix = trim( $_POST['sql_prefix'] );
00184
00185 $aTableNames = array ( $strPrefix.'user', $strPrefix.'actionlog', $strPrefix.'guild', $strPrefix.'map', $strPrefix.'town', $strPrefix.'player' );
00186
00187 $oStyle->addReplacements( array ( 'SQL_HOST' => $strHost,
00188 'SQL_DB' => $strDB,
00189 'SQL_USER' => $strUser,
00190 'SQL_PREFIX' => $strPrefix,
00191 'SQL_PASS' => $strPass ) );
00192
00193 $sqlLink = @mysql_connect ( $strHost, $strUser, $strPass );
00194 $booMySQL = true;
00195 if ( $sqlLink === false )
00196 {
00197 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00198 'TITLE' => 'Kritischer Fehler',
00199 'DATA1' => 'MySQL Connect nicht möglich.',
00200 'DATA2' => '<small>PhpMap konnte keine Verbindung zum MySQL Server aufbauen.<br />MySQL Fehlermeldung:<br /></small>'.mysql_error() ) );
00201 $strRows .= $oStyle->get_area('StepRow');
00202 $booError = true;
00203 $booMySQL = false;
00204 }
00205
00206 if ( $booMySQL )
00207 {
00208
00209
00210 if ( !@mysql_select_db ( $strDB, $sqlLink ) )
00211 {
00212 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00213 'TITLE' => 'Kritischer Fehler',
00214 'DATA1' => 'Datenbankfehler',
00215 'DATA2' => '<small>PhpMap konnte keine Verbindung zur Datenbank aufbauen.<br />MySQL Fehlermeldung:<br /></small>'.mysql_error() ) );
00216 $strRows .= $oStyle->get_area('StepRow');
00217 $booError = true;
00218 }
00219
00220
00221 $sqlResult = @mysql_query('SHOW TABLES;');
00222 while ( $aRow = @mysql_fetch_array($sqlResult) )
00223 {
00224 if ( in_array ( $aRow[0], $aTableNames ) )
00225 {
00226 $booTableWarning = true;
00227 }
00228 }
00229 }
00230 if ( $booTableWarning )
00231 {
00232 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00233 'TITLE' => 'Warnung',
00234 'DATA1' => 'Datenbank nicht leer',
00235 'DATA2' => '<small>Die gewählte Datenbank ist nicht leer.<br />Es sind Tabellen vorhanden, die denselben Namen verwenden, wie Tabellen der PhpMap.<br />Eine Installation ist daher nicht möglich</small>') );
00236 $strRows .= $oStyle->get_area('StepRow');
00237 $booError = true;
00238 }
00239
00240 if ( $booError )
00241 {
00242 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #AA0000;"',
00243 'TITLE' => '<b>Achtung</b>',
00244 'DATA1' => 'Es sind Fehler aufgetreten.',
00245 'DATA2' => 'Obwohl Fehler aufgetreten sind, kannst du versuchen, die Installation fortzusetzen.<br />Es wird jedoch dringend geraten, sich um die Beseitigung der Fehler zu kümmern.' ) );
00246 $strRows .= $oStyle->get_area('StepRow');
00247 }
00248
00249 $oStyle->addReplacements ( array ( 'ROWS' => $strRows ) );
00250
00251
00252 echo trim ( $oStyle->get_area( 'Step2' ) );
00253 die();
00254 }
00255
00256 elseif ( $intStep == 3 )
00257 {
00258
00259
00260 $booError = false;
00261 $booWarning = false;
00262 $strRows = '';
00263
00264
00265 require_once ( './lib/template.php' );
00266 $oStyle = new Template ( './templates/default/' );
00267 $oStyle->addReplacements ( array ( 'TEMPLATES' => $oStyle->getPath(),
00268 'STYLE' => 'style.css' ) );
00269 $oStyle->setTemplate ( 'install.html' );
00270
00271
00272
00273 if ( !isset ( $_POST['user_name'], $_POST['user_pass'], $_POST['user_x'], $_POST['user_y'], $_POST['server'] ) )
00274 {
00275
00276 die('User Daten nicht übergeben.');
00277 }
00278
00279 $strName = trim ( $_POST['user_name'] );
00280 $strPass = trim ( $_POST['user_pass'] );
00281 $intX = intval ( $_POST['user_x'] );
00282 $intY = intval ( $_POST['user_y'] );
00283 $intServer = intval ( $_POST['server'] );
00284
00285 if ( $strName == '' )
00286 {
00287
00288 die('Kein Username eingegeben.');
00289 }
00290
00291
00292 if ( !isset ( $_POST['sql_host'], $_POST['sql_db'], $_POST['sql_user'], $_POST['sql_pass'], $_POST['sql_prefix'] ) )
00293 {
00294
00295 die('SQL Daten nicht übergeben.');
00296 }
00297
00298 $strSqlHost = trim( $_POST['sql_host'] );
00299 $strSqlDB = trim( $_POST['sql_db'] );
00300 $strSqlUser = trim( $_POST['sql_user'] );
00301 $strSqlPass = trim( $_POST['sql_pass'] );
00302 $strPrefix = trim( $_POST['sql_prefix'] );
00303
00304
00305
00306 $oStyle->addReplacements( array ( 'SERVER_ID' => $intServer,
00307 'SQL_HOST' => $strSqlHost,
00308 'SQL_DB' => $strSqlDB,
00309 'SQL_USER' => $strSqlUser,
00310 'SQL_PREFIX' => $strPrefix,
00311 'SQL_PASS' => $strSqlPass ) );
00312 $strConfig = trim( $oStyle->get_area('Config') );
00313
00314 if ( ( $fp = @fopen('./conf/config.php', 'w' ) ) === false )
00315 {
00316
00317 die ( 'Konnte <i>./conf/config.php</i> nicht zum schreiben öffnen.' );
00318 }
00319 if ( @fwrite ( $fp, $strConfig ) === false )
00320 {
00321
00322 die ( 'Konnte in <i>./conf/config.php</i> nicht schreiben.' );
00323 }
00324 fclose ( $fp );
00325
00326 require_once( './conf/config.php' );
00327
00328
00329
00330
00331 $sqlLink = @mysql_connect ( $strSqlHost, $strSqlUser, $strSqlPass );
00332 if ( $sqlLink === false )
00333 {
00334
00335 echo 'MySQL connect nicht möglich<br />'.mysql_error();
00336 die();
00337 }
00338
00339 if ( !@mysql_select_db ( $strSqlDB, $sqlLink ) )
00340 {
00341
00342 echo 'Datenbank existiert nicht<br />'.mysql_error();
00343 die();
00344 }
00345
00346
00347
00348 $aSqlQueries = explode ( ";\n", str_replace( "\r\n", "\n", $oStyle->get_area( 'Sql' ) ) );
00349 foreach( $aSqlQueries AS $strQuery )
00350 {
00351 $strQuery = trim( $strQuery );
00352 if( $strQuery == '' ) continue;
00353 mysql_query($strQuery);
00354 }
00355
00356
00357
00358 $intServerId = 1;
00359 require_once ( './conf/adminconfig.php' );
00360
00361 $strAdmin = '';
00362 foreach ( $aAdminArrays AS $intKey => $strField )
00363 {
00364 $intTmp = 0;
00365 foreach ( $aAdmin[$intKey] AS $strRightName => $intBit )
00366 {
00367 if ( $strRightName == 'banned' || $strRightName == 'limit_view' ) continue;
00368 $intTmp |= $intBit;
00369 }
00370 $strAdmin .= ',' . $strField . "='$intTmp'";
00371 }
00372 mysql_query ( "INSERT INTO ".$strPrefix."usergroup SET usergroup_id='1', name='Admin', created_by='1', created=NOW(), last_update=NOW(), last_update_by='1'$strAdmin;");
00373 $aRightsList = array (
00374 'User' => array ( 'export_static', 'export_update', 'import_map', 'import_town', 'import_guild', 'guild_list', 'search', 'fight', 'town_add', 'town_del', 'town_edit' ),
00375 'Gast' => array ( 'search', 'fight', 'limit_view' ),
00376 'Neuling' => array ( 'import_map', 'import_town', 'import_guild', 'guild_list', 'search', 'fight', 'town_add', 'limit_view' ),
00377 'Banned' => array ( 'banned' )
00378 );
00379 foreach ( $aRightsList AS $strGroupName => $aRights )
00380 {
00381 $strAdmin = '';
00382 foreach ( $aAdminArrays AS $intKey => $strField )
00383 {
00384 $intTmp = 0;
00385 foreach ( $aAdmin[$intKey] AS $strRightName => $intBit )
00386 {
00387 if ( in_array ( $strRightName, $aRights ) )
00388 {
00389 $intTmp |= $intBit;
00390 }
00391 }
00392 $strAdmin .= ',' . $strField . "='$intTmp'";
00393 }
00394 mysql_query ( "INSERT INTO ".$strPrefix."usergroup SET name='$strGroupName', created_by='1', created=NOW(), last_update=NOW(), last_update_by='1'$strAdmin;");
00395 }
00396
00397
00398
00399
00400
00401 if ( !@mysql_query ( "INSERT INTO ".$strPrefix."user SET user_id='1', usergroup_id='1', name='$strName', pass=MD5('$strPass'), home_x='$intX', home_y='$intY', created_by='1', created=NOW();") )
00402 {
00403 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00404 'TITLE' => '<b>SQL Fehler</b>',
00405 'DATA1' => 'User konnte nicht erstellt werden.',
00406 'DATA2' => '<small>Der gewünschte User "'.$strName.'" konnte nicht erstellt werden.<br />'
00407 .'MySQL Meldung:<br /></small>'.mysql_error() ) );
00408 $strRows .= $oStyle->get_area('StepRow');
00409 }
00410 else
00411 {
00412
00413 $strPass = md5($strPass);
00414 setcookie ($strCookiePrefix.'[login]', $strName, time()+365*24*60*60);
00415 setcookie ($strCookiePrefix.'[pass]', $strPass, time()+365*24*60*60);
00416 }
00417
00418 $oStyle->addReplacements ( array ( 'ROWS' => $strRows ) );
00419
00420
00421 echo trim ( $oStyle->get_area( 'Step3' ) );
00422 die();
00423 }
00424
00425 elseif ( $intStep == 4 )
00426 {
00427
00428
00429 $strRows = '';
00430
00431
00432 require_once ( './lib/template.php' );
00433 $oStyle = new Template ( './templates/default/' );
00434 $oStyle->addReplacements ( array ( 'TEMPLATES' => $oStyle->getPath(),
00435 'STYLE' => 'style.css' ) );
00436 $oStyle->setTemplate ( 'install.html' );
00437
00438 $booError = false;
00439
00440 if( !is_writable( './templates/default/install.html' ) )
00441 {
00442
00443 @chmod ( './templates/default/install.html', 0666 );
00444 }
00445 if( !is_writable( './install.php' ) )
00446 {
00447
00448 @chmod ( './install.php', 0666 );
00449 }
00450
00451 if ( !@unlink('./templates/default/install.html') )
00452 {
00453 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00454 'TITLE' => 'Fehler',
00455 'DATA1' => 'Die Datei <i>/templates/default/install.html</i> konnte nicht gelöscht werden.',
00456 'DATA2' => '<small>Die Datei muss von Hand gelöscht werden, um PhpMap nutzen zu können</small>' ) );
00457 $strRows .= $oStyle->get_area('StepRow');
00458 $booError = true;
00459 }
00460 if ( !@unlink('./install.php') )
00461 {
00462 $oStyle->addReplacements ( array ( 'ROWSTYLE' => ' style="color: #000000; background-color: #FF0000;"',
00463 'TITLE' => 'Fehler',
00464 'DATA1' => 'Die Datei <i>install.php</i> konnte nicht gelöscht werden.',
00465 'DATA2' => '<small>Die Datei muss von Hand gelöscht werden, um PhpMap nutzen zu können</small>' ) );
00466 $strRows .= $oStyle->get_area('StepRow');
00467 $booError = true;
00468 }
00469
00470 $oStyle->addReplacements ( array ( 'ROWS' => $strRows,
00471 'INSTALL_MSG' => (!$booError ? $oStyle->get_area('Step4Success') : '') ) );
00472
00473
00474 echo trim ( $oStyle->get_area( 'Step4' ) );
00475 die();
00476 }