[RELEASE] Admin reload (web)

Indította ATAG, 2011-10-20, 05:58:56

2011-10-20, 05:58:56 Utolsó szerkesztés: 2012-06-10, 16:50:24 Szerző: ATAG
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);?>

Inkább vagyok álmodozó optimista, mint magabiztos pesszimista.