Kann sein dass das Script einige Errors wirft. Hab es nicht einmal durchn Apache Service geschmissen :'D
PHP Code:
<?php
/**************************************************/
/**************************************************/
/************ Nur hier werte anpassen *************/
/**************************************************/
/**************************************************/
define('SQL_SERVERNAME','xxx-PC\SQLEXPRESS');
define('SQL_USER', 'sa');
define('SQL_PASSWORD', 'password');
define('PATH_RESOURCE', 'C:\neurospace\resource');
define('PATH_PROGRAM', 'C:\neurospace\program');
define('PATH_WORLD', 'C:\neurospace\resource\worldserver.exe');
define('PATH_ACCOUNT', 'C:\neurospace\program\accountserver.exe');
define('PATH_DATABASE', 'C:\neurospace\resource\database.exe');
define('PATH_CORE', 'C:\neurospace\program\coreserver.exe');
define('PATH_CERTIFIER','C:\neurospace\program\certifier.exe');
define('PATH_LOGIN', 'C:\neurospace\program\loginserver.exe');
define('PATH_CACHE', 'C:\neurospace\program\cacheserver.exe');
define('PORT_WORLD', 2101);
define('PORT_ACCOUNT', 12000);
define('PORT_DATABASE', 7200);
define('PORT_CORE', 1234);
define('PORT_CERTIFIER',23000);
define('PORT_LOGIN', 28000);
define('PORT_CACHE', 15400);
define('PASSWORD_SALT', 'kikugalanet');
/**************************************************/
/**************************************************/
/* Ab jetzt keine Veränderungen mehr vornehmen!!! */
/**************************************************/
/**************************************************/
if( !mssql_connect(SQL_SERVERNAME, SQL_USER, SQL_PASSWORD) )
die('Can\'t connect to Database.');
session_start();
function StartServer($strType)
{
switch($strType)
{
case 'world': exec('cd '. PATH_RESOURCE.' && start '.PATH_WORLD); break;
case 'account': exec('cd '. PATH_PROGRAM.' && start '.PATH_ACCOUNT); break;
case 'database': exec('cd '. PATH_RESOURCE.' && start '.PATH_DATABASE); break;
case 'core': exec('cd '. PATH_PROGRAM.' && start '.PATH_CORE); break;
case 'certifier': exec('cd '. PATH_PROGRAM.' && start '.PATH_CERTIFIER); break;
case 'login': exec('cd '. PATH_PROGRAM.' && start '.PATH_LOGIN); break;
case 'cache': exec('cd '. PATH_PROGRAM.' && start '.PATH_CACHE); break;
default: return FALSE;
}
}
function CryptPassword($strPassword)
{
return md5(PASSWORD_SALT . $strPassword );
}
function ChangePassword($strUser, $strPass)
{
if ( CheckString( $strUser ) )
return '<font color="red">Der Benutzername enthält unerlaubte Zeichen</font>';
if ( CheckString( $strPass ) )
return '<font color="red">Das gewählte Passwort enthält unerlaubte Zeichen</font>';
mssql_query('UPDATE ACCOUNT_TBL SET password = '.CryptPassword($strPass).' WHERE account = '.$strUser);
return '<font color="green">Password wurde geändert</font><br/>';
}
function CheckString($str)
{
if( preg_match('/[^a-zA-Z0-9]/',$str) )
return TRUE;
else
return FALSE;
}
function DoLogin($strUser,$strPass)
{
if ( CheckString( $strUser ) )
return '<font color="red">Der Benutzername enthält unerlaubte Zeichen</font>';
if ( CheckString( $strPass ) )
return '<font color="red">Das gewählte Passwort enthält unerlaubte Zeichen</font>';
$sqlResult = mssql_fetch_array( mssql_query('SELECT count(detail.account) as count
FROM
[ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] detail,
[ACCOUNT_DBF].[dbo].[ACCOUNT_TBL] main
WHERE
main.account = "'.$strUser.'" AND
main.password = "'.CryptPassword($strPass).'" AND
detail.m_chLoginAuthority > "F" AND
detail.account = "'.$strUser.'"'));
if( $sqlResult['count'] >= 1 )
{
$_SESSION["username"] = $strUser;
$_SESSION['ip'] = $_REMOTE['SERVER_ADDR'];
return '<font color="red">Login erfolgreich!</font>';
}
else
return '<font color="red">Benutzername oder Passwort falsch</font>';
}
function IsLoggedIn()
{
if( $_SESSION['ip'] == $_REMOTE['SERVER_ADDR'])
return TRUE;
else
return FALSE;
}
function GetServerState($strServer)
{
switch($strServer)
{
case 'world': $port = PORT_WORLD; break;
case 'cache': $port = PORT_CACHE; break;
case 'login': $port = PORT_LOGIN; break;
case 'account': $port = PORT_ACCOUNT; break;
case 'database': $port = PORT_DATABASE; break;
case 'core': $port = PORT_CORE; break;
case 'certifier': $port = PORT_CERTIFIER; break;
default: return FALSE;
}
if( @fsockopen("127.0.0.1", $port, $errno, $errstr, 1) )
return '<font color="green">Online</font>';
else
return '<font color="red">Offline</font>';
}
function GetInfos()
{
//0 - accounts // 1 - character // 2 - admin/gm // 3 - online // 4 - peak
$info = array();
$info[0] = mssql_fetch_array( mssql_query( 'SELECT count(account) as info FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL]' ) );
$info[1] = mssql_fetch_array( mssql_query( 'SELECT count(m_szName) as info FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL]' ) );
$info[2] = mssql_fetch_array( mssql_query( 'SELECT count(account) as info FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE '.ord(m_chLoginAuthority).' > '.ord("F")) );
$info[3] = mssql_fetch_array( mssql_query( 'SELECT count(account) as info FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL] WHERE isuse = "J"' ) );
$info[4] = mssql_fetch_array( mssql_query( 'SELECT TOP 1 number as info FROM [LOGGING_01_DBF].[dbo].[LOG_USER_CNT_TBL] ORDER BY [number] DESC ' ) );
return $info;
}
if( isset( $_POST['form_login'] ) )
$html_output .= DoLogin($_POST['username'],$_POST['password']).'<br />';
if( !IsLoggedIn() )
{
$html_output .= '
<div style="text-align: center;">
Login <br /><br />
<form method="post">
<input type="text" maxlength="13" name="username" value=""><br /><br />
<input type="password" maxlength="16" name="password" value=""><br /><br />
<input type="submit" name="form_login" value="Login"><br /><br />
</form>
</div>';
}
else
{
if( isset( $_POST['form_startserver'] ) )
StartServer( $_POST['form_startserver'] );
if( isset( $_POST['form_changepw'] ) )
ChangePassword($_POST['username'], $_POST['password']);
$html_output .= '
Du bist mit dem Account '. $_SESSION["username"] .' eingeloggt <br />
Account Server '. GetServerState("account") .' <form method="post"><input type="submit" name="form_startserver" value="world"></form><br/>
Core Server '. GetServerState("core") .' <form method="post"><input type="submit" name="form_startserver" value="core"></form><br/>
Certifier '. GetServerState("certifier") .' <form method="post"><input type="submit" name="form_startserver" value="certifier"></form><br/>
Login Server '. GetServerState("login") .' <form method="post"><input type="submit" name="form_startserver" value="login"></form><br/>
Cache Server '. GetServerState("cache") .' <form method="post"><input type="submit" name="form_startserver" value="cache"></form><br/>
World Server '. GetServerState("world") .' <form method="post"><input type="submit" name="form_startserver" value="world"></form><br/>
Database Server '. GetServerState("database") .' <form method="post"><input type="submit" name="form_startserver" value="database"></form><br/>
<br />
<br />
';
$info = GetInfos();
$html_output .= '
Accounts: '. $info[0][info] .' <br />
Characters: '. $info[1][info] .' <br />
Admins/Gms: '. $info[2][info] .' <br />
User Online: '. $info[3][info] .' <br />
Peak: '. $info[4][info] .' <br />
<br />
<br />
Change Password Form <br />
<form method="post">
<input type="text" maxlength="13" name="username" value=""><br /><br />
<input type="password" maxlength="16" name="password" value=""><br /><br />
<input type="submit" name="form_changepw" value="Change"><br /><br />
</form>
';
}
die($html_output);
?>






