Ir para conteúdo

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
https://xtibia.com/forum/topic/210175-gesior-aac-iniciando-reiniciando-e-fechando-servidor-pelo-site/
Compartilhar em outros sites

Sinceramente velho, incrível! Vai ajudar muitas pessoas esse Tutorial, imagina só controlar tudo através do site..

Muito bom mesmo! Reputado!

 

Atenciosamente, Thiagobji.

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..

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!

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.

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>

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

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

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...

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??

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

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!

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 ?

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
×
×
  • Criar Novo...