Ir para conteúdo

[Gesior AAC] Iniciando, reiniciando, e fechando servidor pelo site...


tyuahoi

Posts Recomendados

Olá xtibianos, vim trazer um script que acredito eu seja um pouco útil e facilite a vida de algumas pessoas...

 

Bom o script é simples você tem total controle sobre seu servidor pelo site, exemplo: você pode fechar ele, abrir, reiniciar tudo através do site do servidor.

 

bom vamos ao que interessa :)

 

na pasta htdocs do seu site faça um arquivo .php chamado restarter e cole isso:

 

<?PHP
$path = $config['site']['server_path'];
$exename = "NOME DO EXECUTAVEL.exe";
if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
{
if($action == "")
{
$main_content .= '<table style=\'clear:both\' border=0 cellpadding=0 cellspacing=0 width=\'100%\'>
<tr bgcolor='.$config['site']['darkborder'].'><td width="150"><font color="red"><b>Option</b></font></td><td><font color="red"><b>Description</b></font></td></tr>
<tr bgcolor='.$config['site']['lightborder'].'><td width="150"><b><a href="?subtopic=restarter&action=restart">Reiniciar</a></b></td><td><b>Fechar o servidor e abri-lo novamente</b></td></tr>
<tr bgcolor='.$config['site']['darkborder'].'><td width="150"><b><a href="?subtopic=restarter&action=kill">Fechar Servidor</a></b></td><td><b>Fechar todos os processos do servidor imediatamente</b></td></tr>
<tr bgcolor='.$config['site']['lightborder'].'><td width="150"><b><a href="?subtopic=restarter&action=start">Iniciar Servidor</a></b></td><td><b>iniciar servidor</b></td></tr>
<tr bgcolor='.$config['site']['darkborder'].'><td width="150"><b><a href="?subtopic=restarter&action=shutdown">Fechar o servidor</a></b></td><td><b>Fecha o servidor após 5 minutos</b></td></tr>
<tr bgcolor='.$config['site']['lightborder'].'><td width="150"><b><a href="?subtopic=restarter&action=shutdownlong">avisar os players do fechamento do servidor</a></b></td><td><b>Performs safe shutdown after broadcast warning and 5 minutes delay.</b></td></tr>
<tr bgcolor='.$config['site']['darkborder'].'><td width="150"><b><a href="?subtopic=adminpanel">Back to admin panel</a></b></td><td><b>Go back to admin panel.</b></td></tr>
</table>';
}
getcwd();  
chdir($path);
if($action == "restart")

{
exec('TASKKILL /F /IM "'.$exename.'"');
$command = 'START/HIGH '.$exename;
$tmpnam = "temp.bat";
$fp = fopen ($tmpnam, "w");
fwrite($fp, $command);
fclose ($fp);
$foo = @popen($tmpnam, 'r');
$main_content .='<center>Server restarted.<br><b><a href="?subtopic=restarter">Back</a></center>';
}
if($action == "kill"){exec('TASKKILL /F /IM "'.$exename.'"'); $main_content .='<center>Server closed.<br><b><a href="?subtopic=restarter">Back</a></center>';}
if($action == "start")
{
$command = 'START/HIGH '.$exename;
$tmpnam = "temp.bat";
$fp = fopen ($tmpnam, "w");
fwrite($fp, $command);
fclose ($fp);
$foo = @popen($tmpnam, 'r');
$main_content .='<center>Server started. <br><b><a href="?subtopic=restarter">Back</a></center>';
}
if($action == "shutdown")
{  
$SQL->query('UPDATE '.$SQL->tableName('z_shut').' SET `shutdown`="1", `long`="0" WHERE id = "1";');
$main_content .='<center>Server will shut down soon. <br><b><a href="?subtopic=restarter">Back</a></center>';
}
if($action == "shutdownlong")
{  
$SQL->query('UPDATE '.$SQL->tableName('z_shut').' SET `shutdown`="1", `long`="1" WHERE `id` = "1";');
$main_content .='<center>Server will shut down soon. <br><b><a href="?subtopic=restarter">Back</a></center>';
}
}
else
{
$title = $GLOBALS['config']['server']["serverName"]." - OTS";
$main_content .= 'Invalid subtopic. Can\'t load page.';
}
?>

 

Não esqueçam de colocar o nome do executável do servidor na 3º linha!

 

agora vá em index.php e adicione:

 

 

case "restarter":
$topic = "Restarter";
$subtopic = "restarter";
include("restarter.php");
break;

 

 

Antes de:

 

 

case "latestnews":
			$topic = "Latest News";
			$subtopic = "latestnews";
			include("latestnews.php");
break;

 

Agora em adminpanel.php adicione:

 

<tr bgcolor='.$config['site']['lightborder'].'><td width="150"><b><a href="?subtopic=restarter">Restarter</a></b></td><td><b>Here you start, stop and restart server!</b></td></tr>

 

 

Antes de

 </table> 

 

Agora na sua database execute isso:

 

CREATE TABLE IF NOT EXISTS `z_shut` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `shutdown` int(11) NOT NULL DEFAULT '1',
 `long` int(11) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


INSERT INTO `z_shut` (`id`, `shutdown`, `long`) VALUES
(1, 0, 1); 

 

agora na pasta do seu servidor vá em data\globalevents\scripts faça um novo arquivo .lua com o nome de restarter e cole isso:

 

local message =
{
"Server will shut down in 5 minutes. Dont ask me why, I'm only script",
"Server will shutdown in 2 minutes, please log off",
"Server is going down..."
}
local class = 21
function shutDown()
doBroadcastMessage(message[3], class)
doSetGameState(GAMESTATE_SHUTDOWN)
return TRUE
end
function broadcast()
doBroadcastMessage(message[2], class)
return TRUE
end

function onThink(interval, lastExecution)
local result_plr = db.getResult("SELECT * FROM z_shut WHERE `id` = 1;")
if(result_plr:getID() ~= -1) then
while(true) do
if(tonumber(result_plr:getDataInt("shutdown"))==1) then
db.executeQuery("UPDATE z_shut SET shutdown = '0' WHERE id = '1';")
if(tonumber(result_plr:getDataInt("long"))==0) then
doBroadcastMessage(message[3], class)
doSetGameState(GAMESTATE_SHUTDOWN)
else
doBroadcastMessage(message[1], class)
addEvent(broadcast, 3*60*1000, {})
addEvent(shutDown, 5*60*1000, {})
end
end
if not(result_plr:next()) then break end
end
end
result_plr:free()
return TRUE
end

 

e por fim em globalevents.xml adicione:

 

<globalevent name="safe_shutdown" interval="5" event="script" value="restarter.lua"/>

 

 

Sinceramente espero que seja útil para vocês isso, duvidas podem postar que estarei ajudando...

Editado por 1tyi
Link para o comentário
Compartilhar em outros sites

Adicionei td e nao aparece nada no meu site..

 

em lugar nenhum que eu add :

 

case "restarter":
   $topic = "Restarter";
   $subtopic = "restarter";
   include("restarter.php");
 break;

 

em meu index.php..

 

Nao aparece..

Link para o comentário
Compartilhar em outros sites

Adicionei td e nao aparece nada no meu site..

 

em lugar nenhum que eu add :

 

case "restarter":
$topic = "Restarter";
$subtopic = "restarter";
include("restarter.php");
 break;

 

em meu index.php..

 

Nao aparece..

 

tem que add no layout.php o botão, aconselho por na aba de painel admin

 

@topico

já me pediram esse trem ai varias veses,será muito util a muitos!

Link para o comentário
Compartilhar em outros sites

Adicionei td e nao aparece nada no meu site..

 

em lugar nenhum que eu add :

 

case "restarter":
$topic = "Restarter";
$subtopic = "restarter";
include("restarter.php");
 break;

 

em meu index.php..

 

Nao aparece..

 

peço desculpas por não ter explicado essa parte no tópico, a pagina estará na pagina do admin panel, como restarter.

Link para o comentário
Compartilhar em outros sites

Adicionei td e nao aparece nada no meu site..

 

em lugar nenhum que eu add :

 

case "restarter":
$topic = "Restarter";
$subtopic = "restarter";
include("restarter.php");
 break;

 

em meu index.php..

 

Nao aparece..

 

tem que add no layout.php o botão, aconselho por na aba de painel admin

 

@topico

já me pediram esse trem ai varias veses,será muito util a muitos!

 

como que adiciono isso:

 

case "restarter":
    $topic = "Restarter";
    $subtopic = "restarter";
    include("restarter.php");
 break;

 

em layout.php? nao tinha que ser algo do tipo:

 

<a href='?subtopic=hacker'>
 <div id='submenu_hacker' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
   <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
   <div id='ActiveSubmenuItemIcon_createaccount' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
   <div class='SubmenuitemLabel'>Ant Hackers</div>
   <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
 </div>
</a>

Link para o comentário
Compartilhar em outros sites

Adicionei td e nao aparece nada no meu site..

 

em lugar nenhum que eu add :

 

case "restarter":
$topic = "Restarter";
$subtopic = "restarter";
include("restarter.php");
 break;

 

em meu index.php..

 

Nao aparece..

 

tem que add no layout.php o botão, aconselho por na aba de painel admin

 

@topico

já me pediram esse trem ai varias veses,será muito util a muitos!

 

como que adiciono isso:

 

case "restarter":
	$topic = "Restarter";
	$subtopic = "restarter";
	include("restarter.php");
 break;

 

em layout.php? nao tinha que ser algo do tipo:

 

<a href='?subtopic=hacker'>
 <div id='submenu_hacker' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_createaccount' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'>Ant Hackers</div>
<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
 </div>
</a>

 

 

Não vejo necessidade de adicionar isso como um submenu mais já que você deseja, depois de fazer TODOS os passos do tópico vá em seu layout.php

 

depois de:

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo "<a href='index.php?subtopic=polls'>
 <div id='submenu_polls' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_polls' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'><font color=\"red\">! Manage Polls !</font></div>
<div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
 </div>
</a>";

 

adicione isso:

 

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo "<a href='index.php?subtopic=restarter'>
 <div id='submenu_Restarter' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_Restarter' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'><font color=\"red\">! Restarter Server !</font></div>
<div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
 </div>
</a>";

 

Cuide para adicionar no local certo exatamente como ta acima, contrario disso pode ocorrer erros no layout do seu site.

Editado por 1tyi
Link para o comentário
Compartilhar em outros sites

Primeiro quero falar que pra funcionar aki tive que remover isso do comeco :

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo

 

E isso do final:

 

";

 

Do seu Script:

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo "<a href='index.php?subtopic=restarter'>
 <div id='submenu_Restarter' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
	<div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
	<div id='ActiveSubmenuItemIcon_Restarter' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
	<div class='SubmenuitemLabel'><font color=\"red\">! Restarter Server !</font></div>
	<div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
 </div>
</a>";

 

Ai deu certim..so que quando clico no !Restarter Server! da: Invalid subtopic. Can't load page.

Editado por Alexclusive
Link para o comentário
Compartilhar em outros sites

Primeiro quero falar que pra funcionar aki tive que remover isso do comeco :

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo

 

E isso do final:

 

";

 

Do seu Script:

 

if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
echo "<a href='index.php?subtopic=restarter'>
 <div id='submenu_Restarter' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
	<div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
	<div id='ActiveSubmenuItemIcon_Restarter' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
	<div class='SubmenuitemLabel'><font color=\"red\">! Restarter Server !</font></div>
	<div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
 </div>
</a>";

 

Ai deu certim..so que quando clico no !Restarter Server! da: Invalid subtopic. Can't load page.

 

cara essa função só pode ser acessada por um administrador do site, se você tiro mesmo a parte que falo, qualquer player poderia reiniciar o servidor, o nome do arquivo php está exatamente assim: restarter ? certifique-se que está tudo corretamente conforme descrito no tópico...

Link para o comentário
Compartilhar em outros sites

Esquece o que falei..dei bobeira aqui!! Desculpa!

 

Mas ainda continua Invalid quando clico.

 

Coloquei o script dentro de restarter.lua..e a tag em global.xml..no index nao coloquei o que ta ae pq coloquei o do layout.php..entao o problema ta no script sera que nao? Voce testou??

Link para o comentário
Compartilhar em outros sites

Esquece o que falei..dei bobeira aqui!! Desculpa!

 

Mas ainda continua Invalid quando clico.

 

Coloquei o script dentro de restarter.lua..e a tag em global.xml..no index nao coloquei o que ta ae pq coloquei o do layout.php..entao o problema ta no script sera que nao? Voce testou??

 

 

cara você tem que coloca no index igual se não ele não reconhece o subtopic, eu falei quando postei o layout, faça TODOS os passos do tutorial, eu baixei 3 gesior diferente desde quando ta dando esse problema com você e refiz em todos, e não tive problemas, e adicione as linhas na sua database...

Editado por 1tyi
Link para o comentário
Compartilhar em outros sites

Deu certo..estou testando..

 

Cara, deu tudo certo aqui..So que quando fui testar...

 

Reiniciar - Fechar o servidor e abri-lo novamente

 

Faz a mesma coisa que:

 

avisar os players do fechamento do servidor - Performs safe shutdown after broadcast warning and 5 minutes delay.

 

E nenhum fecha o Exe!

 

Fechar Servidor - Fechar todos os processos do servidor imediatamente

 

Nao funciona!

 

Iniciar Servidor - iniciar servidor

 

Nao acontece nada!

 

Avisar os players do fechamento do servidor - Performs safe shutdown after broadcast warning and 5 minutes delay.

 

Fecha normal em 5 min..mas nao fecha o Exe.

 

 

Ta ai meu Report!

Link para o comentário
Compartilhar em outros sites

Tipo a unica coisa que ta fazendo e da um Shut e avisar..So isso! Mais ele nao Fecha o Exe..pra voce poder Reninciar ele denovo..

 

exemplo: você pode fechar ele, abrir, reiniciar tudo através do site do servidor.

 

De todo jeito voce tem que entra no servidor pra fechar o exe e abri denovo..

Entedeu ?

Link para o comentário
Compartilhar em outros sites

cara, to no 4 servidor fazendo os testes e todos fecham o servidor, você adicionou o comando na database?

 

dei uma melhorada na opção de reiniciar, ele tava demorando um pouco para fechar o distro, e acabava abrindo outro servidor sem ter fechado o outro ainda, já att no tutorial..

Editado por 1tyi
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...