Ismert probléma a régi (rev.404) root szervereken, hogy dinamikus IP-vel elég macerás GM joghoz jutni.
Nincs más dolgunk mint felrakni egy weboldalra és belépés előtt rányomni az "Add my IP!" gombra...
Mivel csak 2 gombot tartalmaz, elég egyszerűen integrálható bármilyen weboldalba :)
Idéz<?php
/*
Metin2 admin-reload by ATAG
*/
//-------CONFIGURATION--------
$IP="123.456.123.456"; //server IP, it _MUST_ be adminpage_ip1 in CONFIG!
$Port=13000; //server port
$api_pass="SHOWMETHEMONEY";
$db_addr="localhost";
$db_user="mt2";
$db_pass="mt2!@#";
//-----END CONFIGURATION------
function getRealIP()
{
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function doRefresh()
{
global $IP, $Port, $api_pass;
//Metin2 Bash-Panel by .Infinity
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect ($socket, $IP, $Port);
$query = "\x40".$api_pass."\x0A\x40RELOAD A\x0A";
$query_size = strlen($query);
$write_res = socket_write($socket, $query, $query_size);
$recv_res = socket_recv($socket, $output, 5056, 0);
if ($recv_res==31) { //i'm not sure about this :-/
return "
Frissítés sikeres, most már beléphetsz a játékba."; //success, you can log into the game now
} else {
return "
Hiba a frissítés során! Manuálisan kell elvégezni, sorry :("; //Error during the update! Do it manually, sorry
}
socket_close($socket);
}
?>
<html>
<head>
<title>Admin reload</title>
</head>
<body>
<?php
if ($_POST['refresh']) {
$con= mysql_connect($db_addr,$db_user,$db_pass) || die(mysql_error());
$query="SELECT COUNT(*) FROM common.gmhost WHERE mIP='".getRealIP()."'";
$result=mysql_query($query);
$count=mysql_result($result,0);
mysql_free_result($result);
if ($count==0) {
$query="INSERT INTO common.gmhost SET mIP='".getRealIP()."'";
$res=mysql_query($query) || die(mysql_error());
if ($res) {
echo "IP-d (".getRealIP().") felvéve a listába, frissítés...
"; //your ip was successfully added to the list
echo doRefresh();
} else {
echo "Nem tudtam hozzáadni a listához, sorry :("; //i culdn't add your IP to the list, sorry
}
} else {
echo "Már benne van az ip-d a listában (".getRealIP().")
"; //you IP already in the list
}
mysql_close();
} elseif ($_POST['reload']) {
echo doRefresh();
} else {
?>
<center>
<form method="POST">
<div id="input">
<input type="submit" name="refresh" value="Add my IP!"/>
</div>
<input type="submit" name="reload" value="Reload only!"/>
</form>
</center>
</div><?php } ?>
</body>
</html>
Az adatokat értelemszerűen meg kell adni. Ha jól állítjuk be a CONFIG-ban is, akkor API tool ellen is védve marad a szerver + működni is fog :)
Egy egyszerűbb változat, én ezt használom már egy jó ideje.
<?php $LogData_IP = $_SERVER['REMOTE_ADDR']; $link = $_SERVER['HTTP_REFERER']; $LogData = fopen("log/reload_log.txt", "a"); fwrite($LogData, "Adatbázis újratöltve a(z) $LogData_IP IP címről."); fwrite($LogData, "\n"); fclose($LogData); $socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP); $result = socket_connect ($socket, '192.168.1.1', '13001'); $query = "\x40SHOWMETHEMONEY\x0A"; $query .= "\x40RELOAD A\x0A"; $query_size = strlen($query); $write_res = socket_write($socket, $query, $query_size); $recv_res = socket_recv($socket, $output, 5056, 0); echo "<br />"; echo "<br />"; echo "<b><center>A 'reload a' parancs sikeresen végrehajtva!<br><br> Visszairányítalak a főmenübe 5 másodbercen belül.<br>Ha nem, kérlek kattints <a href=" . $link . ">ide!</a> <meta http-equiv=\"refresh\" content=\"5;url=" . $link . "\"> </center></b>"; socket_close($socket);?>