[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_INETSOCK_STREAMSOL_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$output50560);
    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.